Warum sind 80 Zeichen die 'Standard'-Grenze für die Codebreite?


572

Warum sind 80 Zeichen die "Standard" -Begrenzung für die Codebreite? Warum 80 und nicht 79, 81 oder 100? Woher kommt dieser besondere Wert?



14
Argh! Könnten Sie nicht eine Woche gewartet haben, bevor Sie gefragt haben? Dies könnte eine wettbewerbsgewinnende Frage gewesen sein .
Yannis

12
Bevor jemand daran denkt, eine weitere Antwort auf diese Frage hinzuzufügen, lesen Sie bitte die akzeptierte Antwort und die Antwort von Mark Booth . Diese beantworten die Frage umfassend. Die Lochkarte stand an erster Stelle.
ChrisF

4
Warum dieses Stück Randtrivia 139 positive Stimmen hat, ist mir ein Rätsel. Inzwischen hat fast jede andere Frage (gut oder schlecht) auf der Titelseite viel weniger Stimmen. Sind unsere Sammelwahlkriterien so verletzt? :( (@fredley Dies ist keine Kritik an dir, sondern an unserer Gemeinschaft)
Andres F.

6
@AndresF. Der Grund, warum dieser Beitrag gut gelungen ist, ist, dass sich viele Menschen für ihn interessieren werden, der hinter einem guten Titel steht. Es hat einen Tag an der Spitze des Supercolliders verbracht und es bis zu Hacker News usw. geschafft.
Fredley

Antworten:


734

Sie können der IBM Lochkarte für dieses Limit danken - sie hatte 80 Spalten:

IBM Lochkarte


64
Danach verwendeten frühe Teletypen und spätere Videoterminals 80 Spalten (und dann 132 Spalten) als Standardbreite.
LapTop006,

262
Die Frage ist nun: Warum hatte die IBM Lochkarte 80 Spalten?
Factor Mystic

139
@FactorMystic - Die Lochkartengröße basierte auf der Größe der Währung in den späten 1880er Jahren, als Hollerith sie entwarf, um die Volkszählung von 1890 zu unterstützen .

56
Die Karten sind so groß, weil CTR 1890 Währungsträger (der Dollar war damals größer) wiederverwenden wollte, um die Datenkarten der Volkszählung zu tragen.
Al Biglan

89
@AlBiglan Warum war Währung dieser Größe?
Fredley

249

Wie bereits erwähnt, ist dieser gemeinsame Kodierungsstandard das Ergebnis des Lochkartenformats von IBM aus dem Jahr 1928. Viele Kodierungsstandards stammen aus einer Zeit, als Programme auf Lochkarten geschrieben wurden, jeweils eine Karte / Zeile und sogar der Übergang Bei breiteren Bildschirmen änderte sich nichts an der Tatsache, dass das Lesen von Code mit zunehmender Breite schwieriger wird.

Von der Wikipedia-Seite auf Lochkarten s:

Kulturelle Auswirkungen

  • Ein Erbe des Lochkartenformats mit 80 Spalten ist, dass eine Anzeige von 80 Zeichen pro Zeile eine häufige Wahl beim Entwurf zeichenbasierter Terminals war. Ab November 2011 sind einige Standardeinstellungen für die Zeichenschnittstelle, z. B. die Breite des Eingabeaufforderungsfensters in Microsoft Windows, weiterhin auf 80 Spalten festgelegt, und einige Dateiformate, z. B. FITS, verwenden weiterhin Kartenbilder mit 80 Zeichen.

Nun stellt sich die Frage, warum IBM 1928 80 Spaltenkarten ausgewählt hat, als Herman Hollerith zuvor 24- und 45-Spaltenkarten verwendet hatte .

Obwohl ich keine definitive Antwort finden kann, vermute ich, dass die Wahl auf der typischen Anzahl von Zeichen pro Zeile von Schreibmaschinen der Zeit beruhte .

Die meisten der historischen Schreibmaschinen, die ich gesehen habe, hatten eine Schreibwalzenbreite von ungefähr 9 Zoll, was der Standardisierung von Papierformaten auf eine Breite von ungefähr 8 Zoll bis 8,5 Zoll entspricht (siehe Warum ist das Standardpapierformat in den USA 8 ½ Zoll x 11 Zoll?) „? und die Geschichte der ISO216 Eine Reihe Papierstandard ).

Fügen Sie einen typischen Schreibmaschinenabstand von 10-12 Zeichen pro Zoll hinzu, und dies würde je nach Größe der Ränder zu Dokumenten mit einer Breite zwischen 72 und 90 Zeichen führen.

Somit wären 80 Zeichen pro Zeile ein guter Kompromiss zwischen Lochabstand (kleine rechteckige gegenüber größeren runden Löchern) und Zeilenlänge bei gleichbleibender Kartengröße.


Übrigens spezifiziert nicht überall eine Zeilenbreite von 80 Zeichen in ihren Codierungsstandards. Wo ich arbeite , hat ein 132 Zeichen begrenzt, die die Breite des typischen entspricht breiten Zeilendruckers der Vorzeit, einen 12pt Landschaft A4 Ausdrucks und die typischen Linienbreite Verbleiben in einem Editor - Fenstern von Eclipse (maximierte auf einem 1920x1200 Bildschirm) nach Package Explorer und Gliederungsansichten werden berücksichtigt.

Trotzdem bevorzuge ich immer noch 80 Zeichen breiten Code, da es einfacher ist, drei Revisionen einer Datei nebeneinander zu vergleichen, ohne entweder seitwärts zu scrollen (immer schlecht) oder Zeilenumbrüche (die die Code-Formatierung zerstören). Mit 80 Zeichen breitem Code benötigen Sie nur einen 240 Zeichen breiten Bildschirm (1920 Pixel bei 8 Pixel pro Zeichen), um eine vollständige Drei-Wege-Zusammenführung (gemeinsamer Vorfahr, lokaler Zweig und entfernter Zweig) bequem auf einem Bildschirm zu sehen.


2
Nicht um ein weiteres Spekulationsfest zu beginnen, aber Holleriths Karten hatten kreisförmige Löcher, nicht die Rechtecke des IBM 5081 et al. Und IBMs späterer Streifzug in das System / 3-Format hatte 96 runde Löcher in drei horizontalen Säulenbändern.
Ross Patterson

9
Ein guter Grund, um weiterhin 80 Zeichen zu verwenden, ist, dass viele Programmierer kleinere Terminal- (oder sogar IDE-) Fenster bevorzugen, anstatt sie immer im Vollbildmodus anzeigen zu müssen.
Rkulla

4
@rkulla Also, für wie viele Jahrzehnte sollten wir weiterhin eine Beschränkung von 80 Zeichen auferlegen? Sicher, für einige Sprachen wie C mit kurzen Bezeichnern ist es in Ordnung, aber für andere wie C # mit langen Bezeichnern kann es schmerzhaft sein. Glücklicherweise legen wir ein Zeichenlimit von 132 fest, wo ich jetzt bin, aber ich habe mich immer über 80 geärgert, besonders in Python
Basic,

5
@Basic Es gibt ein Argument, dass, wenn Sie nicht innerhalb einer Zeilenbegrenzung von 80 Zeichen arbeiten können, entweder Ihre Bezeichner übermäßig ausführlich sind oder Sie versuchen, zu viel in einer Zeile zu tun. Die meisten Menschen fühlen sich wohler mit schmaleren Spalten mit mehr Zeilen als mit sehr langen Zeilen, da unsere Augen und unser Gehirn seit Jahren durch Bücher, Zeitungen und Webseiten mit eingeschränkter Spaltenbreite (wie diese) geschult wurden, was bedeutet, dass wir Schwierigkeiten beim Scannen haben und sehr lange Schlangen verstehen .
Mark Booth

5
@MarkBooth Ich werde es nicht zu sehr herausziehen, da es ein religiöses Problem ist, aber eines, das von PEP8 als zu lang gekennzeichnet wird, ist ... `(8 Leerzeichen) return HttpResponse (JsonLib (). Encode (Ret) , content_type = "application / json") `und ja, es könnte in mehrere Zeilen aufgeteilt werden, aber es ist auf verschiedene Controller verteilt und es scheint nicht sinnvoll, es aufzuteilen, es sei denn, es entspricht dem 80-Zeichen-Standard.
Grund

59

Ich würde sagen, das liegt auch daran, dass alte Terminals (meistens) 80x24 Zeichen groß waren: Damals, als es noch 80x24 Terminals gab ...

BEARBEITEN:

Um die Frage genauer und gründlicher zu beantworten, sind derzeit 80 Zeichen die "allgemein akzeptierte" Beschränkung der Codebreite in Editoren, da die Formate 80 x 24 und 80 x 25 die häufigsten Bildschirmmodi in frühen E / A - Terminals und Personalcomputern waren ( VT52 - Dankeschön) zu Sandman4).

Diese Grenze ist immer noch gültig und irgendwie wichtig IMHO für zwei Hauptgründe: die Standard - Geometrie , die viele Linux - Distributionen neu gelaicht Terminal - Fenster zuzuweisen , ist nach wie vor 80x24 und viele Menschen nutzen sie , wie sie ist , ohne Ändern der Größe. Darüber hinaus arbeiten Kernel-, Echtzeit- und Embedded-Programmierer häufig in einer "kopflosen" Umgebung ohne Fenstermanager. Auch hier beträgt die Standardbildschirmauflösung häufig 80 x 24 (oder 80 x 25), und in diesen Situationen kann es sogar schwierig sein, diese Standardeinstellung zu ändern.

Wenn Sie also ein Kernel-, Echtzeit- oder Embedded-Programmierer sind, sollten Sie sich selbst zwingen, diese Grenze einzuhalten, nur um gegenüber jedem Programmierer, der Ihren Code lesen sollte, ein wenig "freundlicher" zu sein.


8
Aber alte Terminals waren 80 Zeichen breit, weil programmers.stackexchange.com/a/148678/4767
Oded

9
-1 für das Nichtlesen der vorherigen Antwort und für den nutzlosen Link, der nur besagt: "In den Tagen von 80x24-Terminals wurde einem der ursprünglichen Autoren eines beliebten Unix-Spiels oft gelobt, wie gut sein Code kommentiert wurde. Er sagte, dass er das tun musste tun, weil er immer Topf geraucht , als er codierte und würde seinen Gedankengang verlieren , wenn der Bildschirm gescrollt. "
gnat

7
Entschuldigung für die Begrüßung, Avio, Sie sind zufällig in einen äußerst beliebten Beitrag eingestiegen! Wir machen die Dinge hier etwas anders als im Rest des Internets. Wir hassen unter anderem Vervielfältigungen. Lesen Sie die FAQ, um loszulegen. Wir hoffen, Sie wieder zu sehen!
Fredley

6
+1, um die Ablehnung zu rechtfertigen. Ein weiteres +1 (wenn ich könnte), weil das 80-Zeichen-Limit für Code auf ein 80-Spalten-Terminal zurückzuführen ist und das wiederum möglicherweise mit Lochkarten zusammenhängt oder nicht.
Sandman4

4
+1, um @ RossPattersons Ablehnung entgegenzuwirken. Es gibt keine Verweise auf Wikipedia, die die 80CPR den Lochkarten zuordnen könnten. das mag völlig zufällig sein und eine allgemein akzeptierte "Wahrheit", die eigentlich nicht wahr ist. Zeigen Sie mir ein Interview mit einem der Originalingenieure, die den VT52 spezifiziert haben und von denen er sagt, dass sie einem IBM-Lochkartenstandard folgen.
Jeremy Holovacs

52

Wahrscheinlich nicht der ursprüngliche Grund für die Beschränkung auf 80 Zeichen, aber ein Grund, der weithin akzeptiert wurde, ist das einfache Lesen der Ergonomie :

  • Wenn die Zeilen zu kurz sind, ist der Text schwer zu lesen, da Sie beim Lesen ständig von einer Zeile zur nächsten springen müssen.
  • Wenn die Zeilen zu lang sind, wird das Springen zu schwer, weil Sie die Zeile verlieren, während Sie zum Anfang der nächsten Zeile zurückkehren (dies kann durch einen größeren Abstand zwischen den Zeilen verringert werden, verschwendet aber auch Platz).

Dies ist allgemein bekannt und wird in der Typografie akzeptiert. Die Standardempfehlung (für Texte in Büchern usw.) ist die Verwendung von 40 bis 90 Zeichen pro Zeile und im Idealfall von 60 (siehe z. B. Wikipedia , Markus Itkonen: Typografie und Lesbarkeit ).

Wenn Sie 60 Zeichen pro Zeile anstreben, muss Ihre Obergrenze offensichtlich etwas höher sein, um den gelegentlichen langen Ausdruck (und Dinge wie Randmarkierungen und Zeilennummern) zu berücksichtigen. Daher ist eine Obergrenze von 70-80 sinnvoll.

Dies erklärt wahrscheinlich, warum die Beschränkung auf 80 Zeichen von vielen anderen Systemen übernommen wurde.


1
Ich liebe diese Antwort, weil sie über bestimmte Technologien hinausgeht und das Streben nach der "wahren" Originaltechnologie vermeidet.
Kakyo

26

Eine verwandte Frage ist "warum hat 80 Spalte bestanden". Sogar die Antworten auf dieser Seite sind ungefähr so ​​breit. Ich stimme den historischen Gründen für 80 Spalten zu, aber die Frage ist, warum der Standard fortbestanden hat. Ich würde Lesbarkeit beanspruchen - für Prosa und Code. Unser Verstand kann nur so viele Informationen in einem Stück aufnehmen. Ich verwende immer noch die 80-Spalten-Markierung in meinem Code-Editor, um mich daran zu erinnern, wenn eine Anweisung zu lang und undurchsichtig wird. Es lässt mir auch viel Platz auf dem Bildschirm für den Browser und die unterstützenden IDE-Fenster. Es lebe die 80er Kolumne - als Leitfaden keine Regel.


4
Ich habe die (ungefähr) maximale Breite von 80 Zeichen gesehen, die in den Diskussionen über Typografie erwähnt wurde - anscheinend hilft es wirklich der Lesbarkeit, ob es sich um Monospace handelt oder nicht.
13.

12

Eine andere übliche Begrenzung der Zeilenlänge in den Tagen von Schriften mit festem Abstand betrug 72 Zeichen. Beispiele: Fortran Code, Mail, News.

Ein Grund war, dass die Spalten 73-80 einer Lochkarte oft für eine Seriennummer reserviert waren. Warum eine Seriennummer? Wenn Sie ein Kartenspiel fallen gelassen haben, können Sie die Karten in beliebiger Reihenfolge aufnehmen, die oberen linken Ecken (die immer diagonal geschnitten waren) ausrichten und mit einer Kartensortiermaschine wieder in die richtige Reihenfolge bringen.

Ein weiterer Grund für die Beschränkung auf 72 Zeichen war, dass gängige Schriftarten 10 Punkte hoch und 6 Punkte (1/12 ") breit waren. Eine A4- oder 8,5" breite Seite konnte 72 Zeichen in einer 6 "breiten Spalte enthalten und dennoch Platz für Ränder bieten von über einem Zoll.


7

Ich persönlich halte mich für mein Zeilenende an "Über Spalte 80", da sonst beim Drucken ein Zeilenumbruch oder ein Codeverlust auftritt.

Es gibt auch Legacy-Lochkarten, aber ich glaube nicht, dass Laserdrucker oder 8,5 x 11-Zoll-Papier so eingestellt wurden, dass sie den Einschränkungen für Lochkarten entsprechen.


Wie ich in meiner Antwort @CMike vorschlage, halte ich es für möglich, dass die Lochkartenbreite mit der Größe der Schreibmaschinenplatten und damit der Papierformate zusammenhängt (oder umgekehrt).
Mark Booth

4

Rollen Sie in Druckerpapieren waren Buchstaben Größe oder 15 "breit.

Es waren die Zeilendrucker mit 80 cps für das Hardcopy von Codes oder Berichten, und später unterstützt Epson das kondensierte Drucken mit 132 cps (Escape-Code \ 015 für kondensiertes Drucken).


Vor allem, wenn es (mehrmals!) Auf dieser Seite steht!
Fredley

12
@ Ross: Du solltest niemanden dafür ablehnen, dass er etwas auf der Q & A- Seite nicht weiß !
abatishchev

6
@abatishchev - aber die Antwort, auf die verwiesen wird, ist auf dieser Seite .
ChrisF

10
@abatishchev Eigentlich ist das genau die Idee von StackExchange-Sites. "Gute" Antworten sollten positiv und "schlechte" Antworten negativ bewertet werden, um sicherzustellen, dass zukünftige Leser, die möglicherweise nicht in der Lage sind, selbst zu urteilen, die Meinung der Community zu den Antworten kennen.
Ross Patterson

2
@abatishchev Es geht nicht darum, Antworten abzustimmen, die Sie nicht mögen, sondern darum, Antworten abzustimmen, die nicht nützlich sind . Siehe den Mouse-Over-Text der Abstimmungsschaltflächen.
Mark Booth

0

Einer der Gründe für die 80-Spalten-Karten kann mit dem "Handstempel" zusammenhängen, der wahrscheinlich vor den elektronischen Kartenstempeln verwendet wurde. Es ist eines, das ich in den frühen 70ern auf einer ICL System 4-50 Großrechner-Site verwendet habe. Man musste einen Abschnitt von drei schlagen? stanzen sie gleichzeitig messer in den wagen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.