Por que 80 caracteres é o limite 'padrão' para a largura do código?


572

Por que 80 caracteres é o limite "padrão" para a largura do código? Por que 80 e não 79, 81 ou 100? Qual é a origem desse valor específico?



14
Argh! Você não poderia ter esperado uma semana antes de perguntar? Esta poderia ter sido uma pergunta vencedora do concurso .
Yannis 15/05

12
Antes que alguém pense em adicionar outra resposta a esta pergunta , leia a resposta aceita e a resposta de Mark Booth . Estes respondem à pergunta de forma abrangente. O cartão perfurado veio primeiro.
ChrisF

4
Por que esse trivia marginal tem 139 votos positivos está além de mim. Enquanto isso, quase todas as outras questões (boas ou ruins) na primeira página têm muito menos votos. Nossos critérios de votação coletiva são tão quebrados? :( (@fredley Isso não é crítica, mas da nossa comunidade)
Andres F.

6
@AndresF. A razão pela qual este post foi bem é que é algo em que muitas pessoas estarão interessadas, por trás de um bom título. Ele passou um dia no topo do supercollider e chegou ao Hacker News etc. Pode ser trivial, mas é um bom conteúdo!
Fredley 24/05

Respostas:


734

Você pode agradecer ao perfurador da IBM por esse limite - ele tinha 80 colunas:

Cartão perfurado IBM


64
Depois disso, os teletipos iniciais e os terminais de vídeo posteriores usaram 80 colunas (e 132 colunas) como largura padrão.
LapTop006 15/05

262
Agora a pergunta é: Por que o cartão perfurado da IBM tinha 80 colunas?
Factor Mystic

139
@FactorMystic - o tamanho do cartão perfurado foi baseado no tamanho da moeda no final da década de 1880, quando Hollerith os projetou para ajudar no censo de 1890 .

56
Os cartões são desse tamanho porque, em 1890, a CTR queria reutilizar operadoras de moeda (o dólar era maior naquela época) para transportar os cartões de dados do censo.
Al Biglan

89
@AlBiglan Por que a moeda era desse tamanho?
Fredley 15/05

249

Como oded mencionado, este padrão de codificação comum é o resultado de da IBM 1928 80 coluna de formato de cartão perfurado , uma vez que muitos padrões de codificação remontam a uma época em que os programas foram escritos em cartões perfurados, um cartão / linha de cada vez, e até mesmo a transição para telas mais largas não alterou o fato de que o código fica mais difícil de ler quanto mais amplo ele se torna.

Na página da wikipedia no cartão perfurado s:

Impacto cultural

  • Um legado do formato de cartão perfurado de 80 colunas é que uma exibição de 80 caracteres por linha era uma escolha comum no design de terminais baseados em caracteres. Desde novembro de 2011, alguns padrões da interface de caracteres, como a largura da janela do prompt de comando no Microsoft Windows, permanecem definidos em 80 colunas e alguns formatos de arquivo, como o FITS, ainda usam imagens de cartões de 80 caracteres.

Agora, a pergunta é: por que a IBM escolheu 80 cartões de coluna em 1928, quando Herman Hollerith já havia usado cartões de 24 e 45 de coluna ?

Embora não consiga encontrar uma resposta definitiva, suspeito que a escolha tenha sido baseada no número típico de caracteres por linha de máquinas de escrever da época.

A maioria das máquinas de escrever históricas que eu vi tinha uma largura de cilindro de cerca de 9 polegadas, o que corresponde à padronização dos tamanhos de papel com cerca de 8 "-8,5" de largura (consulte Por que o tamanho de papel padrão nos EUA é de 8 ½ "x 11 "? e a história do padrão de papel da série ISO216 A ).

Adicione um tom típico da máquina de escrever de 10 a 12 caracteres por polegada e isso levaria a documentos com larguras entre 72 e 90 caracteres, dependendo do tamanho das margens.

Dessa forma, 80 caracteres por linha representariam um bom comprometimento entre a altura do furo (pequenos furos redondos retangulares e maiores) e o comprimento da linha, mantendo o mesmo tamanho de cartão.


Aliás, nem todo lugar especifica uma largura de linha de 80 caracteres em seus padrões de codificação. Onde eu trabalho tem um limite de 132 caracteres, que corresponde à largura das impressoras de linhas largas típicas de outrora, uma impressão A4 de 12 pontos em paisagem e a largura da linha típica restante em uma janela do editor do Eclipse (maximizada em uma tela de 1920x1200) após o Package Explorer e As visualizações de estrutura de tópicos são levadas em consideração.

Mesmo assim, ainda prefiro o código de 80 caracteres, pois facilita a comparação de três revisões de um arquivo lado a lado, sem rolar para o lado (sempre ruim) ou quebrar linhas (que destrói a formatação do código). Com o código de 80 caracteres, você só precisa de uma tela de 240 caracteres (1920 pixels a 8 pixels por caractere) para ver uma fusão completa de três vias (ancestral comum, filial local e filial remota) confortavelmente em uma tela.


2
Não para iniciar outra festa da especulação, mas as cartas de Hollerith tinham orifícios circulares, não os retângulos do IBM 5081 et al. E a posterior incursão da IBM em cartões, o formato System / 3, teve 96 furos circulares em 3 faixas horizontais de colunas.
Ross Patterson

9
Um bom motivo para tentar continuar usando 80 caracteres, mesmo em telas maiores, é que muitos programadores preferem usar janelas menores de terminal (ou mesmo IDE), em vez de mantê-las em tela cheia o tempo todo.
rkulla

4
@rkulla Então, por quantas décadas devemos continuar a impor um limite de 80 caracteres? Certamente, para alguns idiomas como C com identificadores curtos, tudo bem, mas para outros como C # com identificadores longos, pode ser uma dor. Felizmente, impomos um limite de 132 caracteres onde estou agora, mas eu costumava ficar muito irritado com os 80, especialmente em Python
Basic

5
@ Basic: há um argumento de que, se você não pode trabalhar dentro de um limite de 80 caracteres, seus identificadores são excessivamente detalhados ou você está tentando fazer muito em uma linha. A maioria das pessoas se sente mais à vontade com colunas mais estreitas de mais linhas do que linhas muito longas, já que nossos olhos e cérebros são treinados há anos através de livros, jornais e páginas restritas da largura da coluna (como esta), o que significa que achamos difícil escanear e compreender linhas muito longas.
Mark Booth

5
@ MarkBooth Eu não vou arrastá-lo muito, pois é um problema religioso, mas um que é sinalizado pelo PEP8 por ser muito longo é ... `(8 espaços) retorna HttpResponse (JsonLib (). Encode (Ret) , content_type = "application / json") `e sim, pode ser dividido em várias linhas, mas está espalhado por vários controladores e não parece valer a pena dividir, exceto por atender ao" padrão "de 80 caracteres.
Basic

59

Eu diria que também é porque os terminais antigos tinham (principalmente) caracteres de 80x24 em tamanho: nos dias de terminais de 80x24 ...

EDITAR:

Para responder com mais precisão e profundidade à pergunta, 80 caracteres é o atual limite "universalmente aceito" para a largura do código dentro dos editores, porque os formatos 80x24 e 80x25 eram os modos de tela mais comuns nos primeiros terminais de E / S e nos computadores pessoais ( VT52 - obrigado para Sandman4).

Esse limite ainda é válido e, de alguma forma, importante no IMHO por duas razões principais: a geometria padrão que muitas distribuições Linux atribuem às janelas de terminal recém-geradas ainda é 80x24 e muitas pessoas as usam como estão , sem redimensionar. Além disso, programadores do kernel, em tempo real e incorporados geralmente trabalham em um ambiente "sem cabeça" sem nenhum gerenciador de janelas. Novamente, a resolução de tela padrão geralmente é 80x24 (ou 80x25) e, nessas situações, pode até ser difícil alterar essa configuração padrão.

Portanto, se você é um programador de kernel, em tempo real ou incorporado, deve se esforçar para respeitar esse limite, apenas para ser um pouco mais "amigável" com qualquer programador que leia seu código.


8
Mas os terminais antigos tinham 80 caracteres de largura por causa de programmers.stackexchange.com/a/148678/4767
Oded

9
-1 por não ter lido a resposta anterior e por um link inútil que diz apenas "Nos dias dos terminais 80x24, um dos autores originais de um jogo popular do Unix era frequentemente elogiado pela forma como seu código era comentado. Ele disse que precisava faça isso porque ele sempre fumava maconha quando codificava e perdia sua linha de raciocínio quando a tela rolava. "
gnat

7
Desculpe o bem-vindo Avio, você acabou de entrar em um post que é extremamente popular! Fazemos as coisas um pouco diferente do resto da internet por aqui. Nós odiamos duplicação, entre outras coisas. Leia as perguntas frequentes para começar. Espero vê-lo novamente!
Fredley 15/05

6
+1 para justificar o voto negativo. Outro +1 (se possível) porque o limite de 80 caracteres para o código é devido ao terminal de 80 colunas e que, por sua vez, pode ou não estar relacionado a cartões perfurados.
Sandman4

4
+1 para neutralizar o voto negativo de @ RossPatterson. Não há citações em nenhuma referência da Wikipedia para atribuir o 80CPR aos cartões perfurados; isso pode ser completamente coincidência e uma "verdade" comumente aceita que não é realmente verdadeira. Mostre-me uma entrevista com um dos engenheiros originais que especificou o VT52, onde ele diz estar seguindo um padrão de cartões perfurados da IBM.
Jeremy Holovacs

52

Embora provavelmente não seja o motivo original do limite de 80 caracteres, um motivo pelo qual foi aceito amplamente é simplesmente a leitura de ergonomia :

  • Se as linhas são muito curtas, o texto fica difícil de ler, porque você deve pular constantemente de uma linha para a outra durante a leitura.
  • Se as linhas forem muito longas, o salto da linha se tornará muito difícil porque você "perde a linha" ao voltar para o início da próxima linha (isso pode ser atenuado com um espaçamento entre linhas maior, mas isso também desperdiça espaço).

Isso é amplamente conhecido e aceito na tipografia. A recomendação padrão (para texto em livros etc.) é usar algo entre 40 a 90 caracteres por linha e, idealmente, cerca de 60 (veja, por exemplo , Wikipedia , Markus Itkonen: tipografia e legibilidade ).

Se você pretende 60 caracteres por linha, seu limite superior deve obviamente ser um pouco maior para acomodar a expressão longa ocasional (e coisas como marcadores de margens e números de linhas), portanto, ter um limite superior de 70 a 80 faz sentido.

Isso provavelmente explica por que o limite de 80 caracteres foi assumido por muitos outros sistemas.


1
Adoro esta resposta porque vai além da tecnologia específica e evita a busca pela "verdadeira" tecnologia original.
kakyo 10/01

26

Uma pergunta relacionada é "por que 80 colunas persistiram". Até as respostas nesta página são aproximadamente dessa largura. Eu concordo com os motivos históricos de 80 colunas, mas a questão é por que o padrão persistiu. Eu reivindicaria legibilidade - em prosa e código. Nossas mentes só podem absorver tanta informação em uma única peça. Ainda uso o marcador de 80 colunas no meu editor de código para me lembrar quando uma instrução está ficando muito longa e obscura. Isso também me deixa bastante espaço na tela para o navegador e as janelas IDE de suporte. Viva 80 coluna - como um guia, não uma regra.


4
Eu já vi a largura máxima de 80 caracteres (aproximadamente) mencionada nas discussões sobre tipografia - aparentemente ela realmente ajuda na legibilidade, monoespaçada ou não.
Nkorth 13/08/12

12

Outro limite de comprimento de linha comum nos dias de fontes de pitch fixo era de 72 caracteres. Exemplos: código Fortran, correio, notícias.

Uma razão era que as colunas 73-80 de um cartão perfurado eram frequentemente reservadas para um número de série. Por que um número de série? Se você derrubou um baralho de cartas, você pode pegar as cartas em qualquer ordem, alinhar os cantos superiores esquerdo (que sempre tiveram um corte diagonal) e usar uma máquina de classificação de cartas para colocá-las em ordem novamente.

Outro motivo para o limite de 72 caracteres foi o fato de as fontes comuns terem 10 pontos de altura e 6 pontos (1/12 ") de largura. Uma página de A4 ou 8,5" de largura poderia conter 72 caracteres em uma coluna de 6 "de largura e ainda ter espaço para margens de mais de uma polegada.


7

Pessoalmente, aderir a "sobre a coluna 80" para o meu fim de linha, porque além disso causa quebra de código ou perda de código quando você o imprime.

Também existe um legado para cartões perfurados, mas não acho que as impressoras a laser ou papel de 8,5x11 polegadas foram configuradas para estar em conformidade com as limitações dos cartões perfurados.


Como sugiro na minha resposta @CMike, acho que é possível que a largura do cartão perfurado esteja relacionada ao tamanho das placas da máquina de escrever e, portanto, ao tamanho do papel (ou vice-versa).
Mark Booth

4

Os papéis de rolagem nas impressoras eram do tamanho de cartas ou 15 "de largura.

Foram as impressoras de linha de 80 cps para cópia impressa de códigos ou relatórios e, posteriormente, a Epson suporta impressão condensada de 132 cps (código de escape \ 015 para impressão condensada).


Especialmente quando está escrito (várias vezes!) Nesta página!
Fredley 15/05

12
@ Ross: você não deve rebaixar ninguém por não saber algo no site de perguntas e respostas !
Abatishchev 15/05/12

6
@abatishchev - mas a resposta a que se refere está nesta página .
ChrisF

10
@abatishchev Na verdade, essa é exatamente a idéia dos sites StackExchange. Respostas "boas" devem ser aprovadas, e respostas "ruins" devem ser aprovadas, para garantir que os futuros leitores que não consigam julgar por si mesmos possam conhecer a opinião da comunidade sobre as respostas.
Ross Patterson

2
@abatishchev Não se trata de votar respostas que você não gosta, mas de respostas que não são úteis . Veja o texto do mouse sobre os botões de votação.
Mark Booth

0

Um dos motivos dos cartões de 80 colunas pode estar associado ao 'soco manual' que provavelmente estava em uso antes das máquinas de perfurar cartões eletrônicos. É um que eu usei no início dos anos 70 em um site de computador com estrutura principal do ICL System 4-50. Um teve que perfurar uma seção de três? facas de perfuração no carro ao mesmo tempo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.