Perché 80 caratteri sono il limite 'standard' per la larghezza del codice?


572

Perché 80 caratteri sono il limite "standard" per la larghezza del codice? Perché 80 e non 79, 81 o 100? Qual è l'origine di questo particolare valore?



14
Argh! Non avresti potuto aspettare una settimana prima di chiedere? Questa potrebbe essere stata una domanda vincente del concorso .
yannis,

12
Prima che qualcuno pensi di aggiungere un'altra risposta a questa domanda , leggi la risposta accettata e la risposta di Mark Booth . Questi rispondono alla domanda in modo completo. La punchcard è arrivata per prima.
ChrisF

4
Perché questo pezzo di banalità marginale abbia 139 voti è oltre me. Nel frattempo, quasi ogni altra domanda (buona o cattiva) nella prima pagina ha molti meno voti. I nostri criteri di voto collettivo sono così rotti? :( (@fredley Questa non è una critica di te, ma della nostra comunità)
Andres F.

6
@AndresF. La ragione per cui questo post ha fatto bene è che è qualcosa a cui molte persone saranno interessate, dietro un buon titolo. Trascorse una giornata in vetta al supercollider, e arrivò a Hacker News ecc. Potrebbe essere banale, ma è un buon contenuto!
fredley,

Risposte:


734

Puoi ringraziare la scheda perforata IBM per questo limite - aveva 80 colonne:

Punch card IBM


64
Successivamente i primi teletipi e successivamente i terminali video utilizzavano 80 colonne (e quindi 132 colonne) come larghezza standard.
LapTop006,

262
Ora la domanda è: perché la scheda perforata IBM aveva 80 colonne?
Factor Mystic,

139
@FactorMystic - la dimensione della carta perforata era basata sulla dimensione della valuta alla fine del 1880, quando Hollerith le progettò per aiutare con il censimento del 1890 .

56
Le carte sono di quelle dimensioni perché nel 1890, CTR voleva riutilizzare i corrieri di valuta (allora il dollaro era più grande) per portare le carte di dati del censimento.
Al Biglan,

89
@AlBiglan Perché la valuta era di quelle dimensioni?
Fredley,

249

Come Oded accennato, questo standard di codifica comune è il risultato della IBM 1928 80 colonne formato schede perforate , dal momento che molti standard di codifica risalgono ai tempi in cui i programmi sono stati scritti su schede perforate, una scheda / riga alla volta, e anche la transizione su schermi più grandi non ha alterato il fatto che il codice diventa più difficile da leggere più diventa largo.

Dalla pagina di Wikipedia su schede perforate :

Impatto culturale

  • Un'eredità del formato di schede perforate a 80 colonne è che una visualizzazione di 80 caratteri per riga era una scelta comune nella progettazione di terminali basati sui caratteri. A partire da novembre 2011 alcune impostazioni predefinite dell'interfaccia dei caratteri, come la larghezza della finestra del prompt dei comandi in Microsoft Windows, rimangono impostate su 80 colonne e alcuni formati di file, come FITS, utilizzano ancora immagini di carte di 80 caratteri.

Ora la domanda è: perché IBM ha scelto 80 carte a colonna nel 1928, quando Herman Hollerith aveva precedentemente usato carte a 24 e 45 colonne ?

Anche se non riesco a trovare una risposta definitiva, sospetto che la scelta si basasse sul numero tipico di caratteri per riga di macchine da scrivere dell'epoca.

La maggior parte delle macchine da scrivere storiche che ho visto aveva una larghezza del rullo di circa 9 pollici, che corrisponde alla standardizzazione dei formati carta a circa 8 "-8,5" di larghezza (vedere Perché il formato carta standard negli Stati Uniti 8 ½ "x 11 "? and the History of ISO216 A series standard di carta ).

Aggiungi un tipico passo della macchina da scrivere di 10-12 caratteri per pollice e ciò porterebbe a documenti con larghezze comprese tra 72 e 90 caratteri, a seconda della dimensione dei margini.

Pertanto, 80 caratteri per riga avrebbero rappresentato un buon compromesso tra passo del foro (piccoli fori rettangolari contro fori rotondi più grandi) e lunghezza della linea, mantenendo le stesse dimensioni della carta.


Per inciso, non ovunque si specifica una larghezza di 80 caratteri nei propri standard di codifica. Dove lavoro ho un limite di 132 caratteri, che corrisponde alla larghezza delle tipiche stampanti wide line di un tempo, una stampa A4 orizzontale a 12 pt e la larghezza tipica della linea rimanente in una finestra dell'editor di Eclipse (ingrandita su uno schermo 1920x1200) dopo Esplora pacchetti e Le viste di struttura sono prese in considerazione.

Anche così, preferisco ancora un codice di 80 caratteri in quanto semplifica il confronto di tre revisioni di un file fianco a fianco senza scorrere lateralmente (sempre errato) o avvolgere le linee (che distruggono la formattazione del codice). Con un codice largo 80 caratteri, è necessario solo uno schermo largo 240 caratteri (1920 pixel a 8 pixel per carattere) per vedere una fusione a tre vie completa (antenato comune, ramo locale e ramo remoto) comodamente su uno schermo.


2
Non per iniziare un'altra festa della speculazione, ma le carte di Hollerith avevano buchi circolari, non i rettangoli di IBM 5081 et al. E la successiva incursione di IBM nelle carte, il formato System / 3, aveva 96 fori circolari in 3 bande orizzontali di colonne.
Ross Patterson,

9
Un buon motivo per provare a continuare a usare 80 caratteri anche su schermi più grandi è che molti programmatori preferiscono usare finestre di terminale più piccole (o addirittura IDE), piuttosto che doverle tenere sempre a schermo intero.
rkulla,

4
@rkulla Quindi per quanti decenni dovremmo continuare a imporre un limite di 80 caratteri? Certo per alcune lingue come C con identificatori brevi va bene, ma per altri come C # con identificatori lunghi, può essere una seccatura. Fortunatamente, imponiamo un limite di 132 caratteri dove sono ora ma ero molto seccato con 80, specialmente in Python
Basic

5
@Basic c'è un argomento secondo cui se non riesci a lavorare entro un limite di 80 caratteri, allora i tuoi identificatori sono eccessivamente dettagliati o stai cercando di fare troppo su una riga. La maggior parte delle persone è più a suo agio con colonne più strette di più linee rispetto a linee molto lunghe, poiché i nostri occhi e il nostro cervello sono stati addestrati per anni attraverso libri, giornali e pagine Web vincolate alla larghezza della colonna (come questa), il che significa che troviamo difficoltà a scansionare e comprendere linee molto lunghe.
Mark Booth,

5
@MarkBooth Non lo trascinerò troppo perché è un po 'un problema religioso, ma uno che viene segnalato da PEP8 per essere troppo lungo è ... `(8 spazi) return HttpResponse (JsonLib (). Encode (Ret) , content_type = "application / json") `e sì, potrebbe essere suddiviso in più righe ma è sparso su vari controller e non sembra che valga la pena dividersi se non per soddisfare lo" standard "a 80 caratteri.
Basic

59

Direi che è anche perché i vecchi terminali avevano (principalmente) caratteri 80x24: Ai tempi dei terminali 80x24 ...

MODIFICARE:

Per rispondere in modo più preciso e approfondito alla domanda, 80 caratteri è l'attuale limite "universalmente accettato" alla larghezza del codice all'interno degli editor perché i formati 80x24 e 80x25 erano le modalità schermo più comuni nei primi terminali I / O e nei personal computer ( VT52 - grazie a Sandman4).

Questo limite è ancora valido e in qualche modo importante IMHO per due motivi principali: la geometria predefinita che molte distribuzioni Linux assegnano alle finestre dei terminali appena generate è ancora 80x24 e molte persone le usano così come sono , senza ridimensionare. Inoltre, i programmatori kernel, real-time e embedded spesso lavorano in un ambiente "senza testa" senza alcun gestore di finestre. Ancora una volta, la risoluzione dello schermo predefinita è spesso 80x24 (o 80x25) e, in queste situazioni, potrebbe anche essere difficile modificare questa impostazione predefinita.

Quindi se sei un programmatore kernel, in tempo reale o incorporato dovresti forzarti a rispettare questo limite, solo per essere un po 'più "amichevole" nei confronti di qualsiasi programmatore che dovrebbe leggere il tuo codice.


8
Ma i vecchi terminali erano larghi 80 caratteri a causa di programmers.stackexchange.com/a/148678/4767
Oded

9
-1 per non aver letto la risposta precedente e per il link inutile che dice "Ai tempi dei terminali 80x24, uno degli autori originali di un popolare gioco unix era spesso complimentato per quanto bene il suo codice fosse commentato. Ha detto che doveva farlo perché ha sempre fumato la pentola quando ha programmato e avrebbe perso il filo dei pensieri quando lo schermo scorreva. "
moscerino del

7
Ci scusiamo per il benvenuto Avio, ti è capitato di saltare su un post che è diventato estremamente popolare! Facciamo le cose un po 'diversamente dal resto di Internet qui intorno. Odiamo la duplicazione, tra le altre cose. Leggi le domande frequenti per iniziare, spero di rivederti!
Fredley,

6
+1 per giustificare il downvote. Un altro +1 (se potessi) perché il limite di 80 caratteri per il codice è a causa del terminale a 80 colonne e che a sua volta può o meno essere correlato alle schede perforate.
Sandman4,

4
+1 per contrastare il downvote di RossPatterson. Non ci sono citazioni su riferimenti a Wikipedia per attribuire l'80CPR alle schede perforate; che può essere completamente casuale, e comunemente accettare una "verità" che non è in realtà vera. Mostrami un'intervista con uno degli ingegneri originali che hanno ipotizzato il VT52 in cui afferma che stavano seguendo uno standard di punchcard IBM.
Jeremy Holovacs,

52

Sebbene probabilmente non sia il motivo originale del limite di 80 caratteri, un motivo per cui è stato ampiamente accettato è semplicemente la lettura dell'ergonomia :

  • Se le righe sono troppo corte, il testo diventa difficile da leggere perché durante la lettura è necessario passare costantemente da una riga all'altra.
  • Se le linee sono troppo lunghe, il salto della linea diventa troppo difficile perché "perdi la linea" mentre torni all'inizio della linea successiva (questo può essere mitigato avendo una spaziatura tra le linee più grande, ma anche questo spreca spazio).

Questo è ampiamente noto e accettato nella tipografia. La raccomandazione standard (per il testo nei libri, ecc.) È di usare qualcosa nella regione di 40-90 caratteri per riga e idealmente circa 60 (vedi ad esempio Wikipedia , Markus Itkonen: tipografia e leggibilità ).

Se miri a 60 caratteri per riga, il tuo limite superiore deve ovviamente essere un po 'più alto per accogliere l'espressione lunga occasionale (e cose come marcatori di margini e numeri di riga), quindi avere un limite superiore di 70-80 ha senso.

Questo probabilmente spiega perché il limite di 80 caratteri è stato assunto da molti altri sistemi.


1
Adoro questa risposta perché va oltre la tecnologia specifica ed evita il perseguimento della "vera" tecnologia originale.
Kakyo,

26

Una domanda correlata è "perché persistono 80 colonne". Anche le risposte in questa pagina sono approssimativamente quella larghezza. Concordo con le ragioni storiche di 80 colonne, ma la domanda è perché lo standard è persistito. Direi leggibilità - per prosa e codice. Le nostre menti possono assorbire così tante informazioni in un solo pezzo. Uso ancora il marcatore 80 colonne nel mio editor di codice per ricordarmi quando un'affermazione diventa troppo lunga e oscura. Mi lascia anche un sacco di spazio sullo schermo per il browser e le finestre IDE di supporto. Lunga vita a 80 colonne - come guida non di regola.


4
Ho visto la larghezza massima (approssimativamente) di 80 caratteri menzionata nelle discussioni sulla tipografia - apparentemente aiuta davvero la leggibilità, monospace o no.
Nord,

12

Un altro limite di lunghezza della linea comune nei giorni dei caratteri a passo fisso era di 72 caratteri. Esempi: codice Fortran, posta, notizie.

Uno dei motivi era che le colonne 73-80 di una scheda perforata erano spesso riservate a un numero di serie. Perché un numero seriale? Se hai lasciato cadere un mazzo di carte, puoi raccogliere le carte in qualsiasi ordine, allineare gli angoli in alto a sinistra (che hanno sempre avuto un taglio diagonale) e usare una macchina di smistamento delle carte per riportarle in ordine.

Un altro motivo del limite di 72 caratteri era che i caratteri comuni erano alti 10 punti e larghi 6 punti (1/12 "). Una pagina A4 o 8,5" larga poteva contenere 72 caratteri in una colonna larga 6 "e avere ancora spazio per i margini di oltre un pollice.


7

Mi attengo personalmente a "circa la colonna 80" per la mia fine della riga perché oltre a ciò provoca il wrapping o la perdita del codice quando lo si stampa.

C'è anche l'eredità delle schede perforate, ma non credo che le stampanti laser o la carta 8,5x11 pollici siano state impostate per conformarsi ai limiti delle schede perforate.


Come suggerisco nella mia risposta @CMike, penso che sia possibile che la larghezza della scheda perforata sia correlata alla dimensione dei piani della macchina da scrivere e quindi alle dimensioni della carta (o viceversa).
Mark Booth,

4

Scorri i fogli delle stampanti in formato Lettere o largo 15 ".

Erano le stampanti a linea da 80 cps per la copia cartacea di codici o rapporti, e in seguito Epson supporta la stampa condensata a 132 cps (codice di escape \ 015 per la stampa condensata).


Soprattutto quando è scritto (più volte!) In questa pagina!
Fredley,

12
@Ross: non dovresti sottovalutare nessuno per non sapere qualcosa sul sito di domande e risposte !
abatishchev,

6
@abatishchev - ma la risposta a cui si fa riferimento è in questa pagina .
ChrisF

10
@abatishchev In realtà, questa è esattamente l'idea dei siti StackExchange. Le risposte "buone" dovrebbero essere votate e le risposte "cattive" dovrebbero essere annullate, per garantire che i futuri lettori che potrebbero non essere in grado di giudicare da soli possano conoscere l'opinione della comunità delle risposte.
Ross Patterson,

2
@abatishchev Non si tratta di votare le risposte che non ti piacciono, si tratta di votare le risposte che non sono utili . Vedi il testo al passaggio del mouse sui pulsanti di voto.
Mark Booth,

0

Uno dei motivi delle 80 carte a colonna potrebbe essere associato al "punzone a mano" che probabilmente era in uso prima delle punzonatrici per schede elettroniche. È uno che ho usato nei primi anni '70 in un sito di computer con frame principale ICL System 4-50. Uno ha dovuto dare un pugno a una sezione di tre? pugno coltelli nel carrello allo stesso tempo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.