¿Por qué 80 caracteres es el límite 'estándar' para el ancho del código?


572

¿Por qué 80 caracteres es el límite "estándar" para el ancho del código? ¿Por qué 80 y no 79, 81 o 100? ¿Cuál es el origen de este valor particular?



14
Argh! ¿No podrías haber esperado una semana antes de preguntar? Esta podría haber sido una pregunta ganadora del concurso .
Yannis

12
Antes de que alguien piense en agregar otra respuesta a esta pregunta , lea la respuesta aceptada y la respuesta de Mark Booth . Estos responden la pregunta de manera integral. La tarjeta perforada vino primero.
ChrisF

44
¿Por qué esta pieza de trivia marginal tiene 139 votos a favor? Mientras tanto, casi todos los demás interrogación (bueno o malo) en la primera página tiene forma menos votos. ¿Están tan rotos nuestros criterios de votación colectiva? :( (@fredley Esto no es una crítica de usted, sino de nuestra comunidad)
Andres F.

66
@AndresF. La razón por la que esta publicación ha funcionado bien es que es algo en lo que mucha gente estará interesada, detrás de un buen título. Pasó un día en la cima del supercollider y llegó a Hacker News, etc. Puede ser una trivialidad marginal, ¡pero es un buen contenido!
fredley

Respuestas:


734

Puede agradecer a la tarjeta perforada IBM por este límite: tenía 80 columnas:

Tarjeta perforada IBM


64
Después de los primeros teletipos y terminales de video posteriores, se utilizaron 80 columnas (y luego 132 columnas) como ancho estándar.
LapTop006

262
Ahora la pregunta es: ¿Por qué la tarjeta perforada IBM tenía 80 columnas?
Factor Mystic

139
@FactorMystic: el tamaño de la tarjeta perforada se basó en el tamaño de la moneda a fines de la década de 1880 cuando Hollerith los diseñó para ayudar con el censo de 1890 .

56
Las tarjetas son de ese tamaño porque en 1890, CTR quería reutilizar los transportistas de divisas (el dólar era más grande en ese entonces) para llevar las tarjetas de datos del censo.
Al Biglan

89
@AlBiglan ¿Por qué la moneda tenía ese tamaño?
fredley

249

Como oded mencionado, esta norma de codificación común es el resultado de la IBM 1928 formato de tarjeta perforada de 80 columnas , ya que muchos estándares de codificación se remontan a una época en que los programas fueron escritos en tarjetas perforadas, una tarjeta / línea a la vez, e incluso la transición a pantallas más anchas no alteró el hecho de que el código se hace más difícil de leer cuanto más ancho se vuelve.

Desde la página de Wikipedia en tarjetas perforadas :

Impacto cultural

  • Un legado del formato de tarjeta perforada de 80 columnas es que una pantalla de 80 caracteres por fila era una opción común en el diseño de terminales basados ​​en caracteres. A partir de noviembre de 2011, algunos valores predeterminados de la interfaz de caracteres, como el ancho de la ventana del símbolo del sistema en Microsoft Windows, permanecen configurados en 80 columnas y algunos formatos de archivo, como FITS, todavía usan imágenes de tarjetas de 80 caracteres.

Ahora la pregunta es, ¿por qué IBM eligió 80 cartas de columna en 1928, cuando Herman Hollerith había usado previamente 24 y 45 cartas de columna ?

Aunque no puedo encontrar una respuesta definitiva, sospecho que la elección se basó en el número típico de caracteres por línea de máquinas de escribir de la época.

La mayoría de las máquinas de escribir históricas que he visto tenían un ancho de platina de alrededor de 9 pulgadas, que corresponde con la estandarización de los tamaños de papel a alrededor de 8 "-8.5" de ancho (vea ¿Por qué el tamaño de papel estándar en los EE. UU. Es de 8 ½ "x 11 "? y la Historia del estándar de papel de la serie ISO216 A ).

Agregue un típico tono de máquina de escribir de 10-12 caracteres por pulgada y eso conduciría a documentos con anchos de entre 72 y 90 caracteres, dependiendo del tamaño de los márgenes.

Como tal, 80 caracteres por línea habrían representado un buen compromiso entre el paso del hoyo (pequeños agujeros redondos y rectangulares más grandes) y la longitud de la línea, manteniendo el mismo tamaño de tarjeta.


Por cierto, no en todas partes se especifica un ancho de línea de 80 caracteres en sus estándares de codificación. Donde trabajo tiene un límite de 132 caracteres, que corresponde al ancho de las impresoras de líneas anchas típicas de antaño, una impresión A4 horizontal de 12 puntos y el ancho de línea típico restante en una ventana del editor de Eclipse (maximizado en una pantalla de 1920x1200) después de Package Explorer y Se tienen en cuenta las vistas de esquema.

Aun así, sigo prefiriendo el código de 80 caracteres, ya que hace que sea más fácil comparar tres revisiones de un archivo una al lado de la otra sin tener que desplazarse hacia los lados (siempre es malo) o líneas de ajuste (lo que destruye el formato del código). Con un código de 80 caracteres de ancho, solo necesita una pantalla de 240 caracteres de ancho (1920 píxeles a 8 píxeles por carácter) para ver una combinación completa de tres vías (ancestro común, rama local y rama remota) cómodamente en una pantalla.


2
No para comenzar otro festival de especulación, pero las tarjetas de Hollerith tenían agujeros circulares, no los rectángulos de la IBM 5081 et al. Y la posterior incursión de IBM en tarjetas, el formato System / 3, tenía 96 agujeros circulares en 3 bandas horizontales de columnas.
Ross Patterson

99
Una buena razón para tratar de seguir usando 80 caracteres incluso en pantallas más grandes es que muchos programadores prefieren usar ventanas de terminal más pequeñas (o incluso IDE), en lugar de tener que mantenerlas en pantalla completa en todo momento.
rkulla

44
@rkulla Entonces, ¿durante cuántas décadas deberíamos seguir imponiendo un límite de 80 caracteres? Claro que para algunos lenguajes como C con identificadores cortos está bien, pero para otros como C # con identificadores largos, puede ser una molestia. Afortunadamente, imponemos un límite de 132 caracteres donde estoy ahora, pero solía molestarme mucho con 80, especialmente en Python
Básico

55
@Basic existe el argumento de que si no puede trabajar dentro de un límite de línea de 80 caracteres, entonces sus identificadores son excesivamente detallados o está tratando de hacer demasiado en una línea. La mayoría de las personas se sienten más cómodas con columnas más estrechas de más líneas que líneas muy largas, ya que nuestros ojos y cerebros han sido entrenados durante años a través de libros, periódicos y páginas web con limitaciones de ancho de columna (como esta), lo que significa que nos resulta difícil escanear y comprender líneas muy largas.
Mark Booth

55
@ MarkBooth No lo alargaré demasiado, ya que es un problema religioso, pero uno que PEP8 señala por ser demasiado largo es ... `(8 espacios) devuelve HttpResponse (JsonLib (). Encode (Ret) , content_type = "application / json") `y sí, podría dividirse en varias líneas, pero está disperso en varios controladores y no parece que valga la pena dividirlo, excepto por cumplir con el" estándar "de 80 caracteres.
Básico

59

Yo diría que eso también se debe a que los terminales antiguos tenían (en su mayoría) 80x24 caracteres de tamaño: en los días de los terminales 80x24 ...

EDITAR:

Para responder de manera más precisa y exhaustiva a la pregunta, 80 caracteres es el límite actual "universalmente aceptado" para el ancho del código dentro de los editores porque los formatos 80x24 y 80x25 eran los modos de pantalla más comunes en los primeros terminales de E / S y computadoras personales ( VT52 - gracias a Sandman4).

Este límite sigue siendo válido y de alguna manera importante en mi humilde opinión por dos razones principales: la geometría predeterminada que muchas distribuciones de Linux asignan a las ventanas de terminal recién generadas sigue siendo 80x24 y muchas personas las usan tal cual , sin cambiar el tamaño. Además, los programadores de kernel, en tiempo real e integrados a menudo trabajan en un entorno "sin cabeza" sin ningún administrador de ventanas. Nuevamente, la resolución de pantalla predeterminada suele ser 80x24 (o 80x25) y, en estas situaciones, incluso puede ser difícil cambiar esta configuración predeterminada.

Entonces, si usted es un programador de kernel, en tiempo real o incrustado, debe obligarse a respetar este límite, solo para ser un poco más "amigable" con cualquier programador que debería leer su código.


8
Pero las terminales antiguas tenían 80 caracteres de ancho debido a programmers.stackexchange.com/a/148678/4767
Finalizado

99
-1 por no leer la respuesta anterior y por un enlace inútil que dice "En los días de los terminales 80x24, uno de los autores originales de un popular juego de Unix a menudo se felicitaba por lo bien que se comentaba su código. Dijo que tenía que hacerlo porque siempre fumaba marihuana cuando codificaba y perdería su hilo de pensamiento cuando la pantalla se desplazaba " .
mosquito

77
Perdón por la bienvenida Avio, ¡acabas de saltar a una publicación que se ha vuelto extremadamente popular! Hacemos las cosas de manera un poco diferente al resto de Internet por aquí. Odiamos la duplicación, entre otras cosas. Lee las preguntas frecuentes para comenzar, ¡espero verte de nuevo!
fredley

66
+1 para justificar el voto negativo. Otro +1 (si pudiera) porque el límite de 80 caracteres para el código se debe al terminal de 80 columnas y eso a su vez puede o no estar relacionado con tarjetas perforadas.
Sandman4

44
+1 para contrarrestar el voto negativo de @ RossPatterson. No hay citas en ninguna referencia de Wikipedia para atribuir el 80CPR a las tarjetas perforadas; eso puede ser completamente una coincidencia, y una "verdad" comúnmente aceptada que en realidad no es verdad. Muéstrame una entrevista con uno de los ingenieros originales que especificó el VT52 donde dice que estaban siguiendo un estándar de IBM punchcard.
Jeremy Holovacs

52

Aunque probablemente no sea la razón original del límite de 80 caracteres, una razón por la que se aceptó ampliamente es simplemente leer la ergonomía :

  • Si las líneas son demasiado cortas, el texto se vuelve difícil de leer porque debe saltar constantemente de una línea a la siguiente mientras lee.
  • Si las líneas son demasiado largas, el salto de línea se vuelve demasiado difícil porque "pierde la línea" mientras regresa al inicio de la siguiente línea (esto puede mitigarse al tener un mayor espacio entre líneas, pero esto también desperdicia espacio).

Esto es ampliamente conocido y aceptado en la tipografía. La recomendación estándar (para texto en libros, etc.) es usar algo en la región de 40-90 caracteres por línea , e idealmente alrededor de 60 (ver, por ejemplo , Wikipedia , Markus Itkonen: Tipografía y legibilidad ).

Si apunta a 60 caracteres por línea, su límite superior obviamente debe ser un poco más alto para acomodar la expresión larga ocasional (y cosas como marcadores de márgenes y números de línea), por lo que tener un límite superior de 70-80 tiene sentido.

Esto probablemente explica por qué el límite de 80 caracteres fue asumido por muchos otros sistemas.


1
Me encanta esta respuesta porque va más allá de la tecnología específica y evita la búsqueda de la tecnología original "verdadera".
kakyo

26

Una pregunta relacionada es "por qué ha persistido 80 columnas". Incluso las respuestas en esta página son aproximadamente de ese ancho. Estoy de acuerdo con las razones históricas de 80 columnas, pero la pregunta es por qué el estándar ha persistido. Yo reclamaría legibilidad, para prosa y código. Nuestras mentes solo pueden absorber tanta información en una sola pieza. Todavía uso el marcador de 80 columnas en mi editor de código para recordarme cuando una declaración es demasiado larga y oscura. También me deja un montón de espacio en pantalla para el navegador y las ventanas IDE compatibles. Larga vida a la columna 80: como guía, no como regla.


44
He visto el ancho máximo de 80 caracteres (aproximadamente) mencionado en las discusiones de tipografía, al parecer, realmente ayuda a la legibilidad, monoespacio o no.
nkorth

12

Otro límite de longitud de línea común en los días de las fuentes de paso fijo era de 72 caracteres. Ejemplos: código Fortran, correo, noticias.

Una razón fue que las columnas 73-80 de una tarjeta perforada a menudo estaban reservadas para un número de serie. ¿Por qué un número de serie? Si dejaste caer una baraja de cartas, podrías recoger las cartas en cualquier orden, alinear las esquinas superiores izquierdas (que siempre tenían un corte diagonal) y usar una máquina de clasificación de cartas para volver a ponerlas en orden.

Otra razón para el límite de 72 caracteres fue que las fuentes comunes tenían 10 puntos de alto y 6 puntos (1/12 ") de ancho. Una página de A4 o 8.5" de ancho podía contener 72 caracteres en una columna de 6 "de ancho y aún tenía espacio para márgenes de más de una pulgada.


7

Personalmente me adhiero a "sobre la columna 80" para mi final de línea porque más allá de eso causa un ajuste o pérdida de código cuando lo imprime.

También existe el legado de las tarjetas perforadas, pero no creo que las impresoras láser o el papel de 8.5x11 pulgadas estuvieran configurados para cumplir con las limitaciones de las tarjetas perforadas.


Como sugiero en mi respuesta @CMike, creo que es posible que el ancho de la tarjeta perforada esté relacionado con el tamaño de las planchas de la máquina de escribir y, por lo tanto, el tamaño del papel (o viceversa).
Mark Booth

4

Desplácese en los papeles de las impresoras eran letras tamaño o 15 "de ancho.

Eran las impresoras de línea de 80 cps para la copia impresa de códigos o informes, y más tarde Epson admite impresión condensada de 132 cps (código de escape \ 015 para impresión condensada).


¡Especialmente cuando está escrito (varias veces) en esta página!
fredley

12
@Ross: ¡no deberías rechazar a nadie por no saber algo en el sitio de preguntas y respuestas !
abatishchev

66
@abatishchev, pero la respuesta a la que se hace referencia está en esta página .
ChrisF

10
@abatishchev En realidad, esa es exactamente la idea de los sitios de StackExchange. Las respuestas "buenas" se deben votar a favor y las respuestas "malas" se deben votar a favor, para garantizar que los futuros lectores que no puedan juzgar por sí mismos puedan conocer la opinión de la comunidad sobre las respuestas.
Ross Patterson

2
@abatishchev No se trata de votar las respuestas que no le gustan, se trata de votar las respuestas que no son útiles . Vea el texto al pasar el mouse sobre los botones de votación.
Mark Booth

0

Una de las razones de las 80 tarjetas de columna puede estar asociada con el 'golpe de mano' que probablemente estaba en uso antes de las máquinas de perforación de tarjetas electrónicas. Es uno que utilicé a principios de los años 70 en un sitio de computadora de marco principal del Sistema ICL 4-50. ¿Uno tenía que perforar una sección de tres? perforar cuchillos en el carro al mismo tiempo.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.