Dlaczego 80 znaków to „standardowy” limit szerokości kodu?


573

Dlaczego 80 znaków to „standardowy” limit szerokości kodu? Dlaczego 80, a nie 79, 81 lub 100? Jakie jest pochodzenie tej konkretnej wartości?



14
Argh! Czy nie mogłeś poczekać tydzień przed pytaniem? To mogło być pytanie wygrywające konkurs .
yannis

12
Zanim ktokolwiek myśli dodając kolejną odpowiedź na to pytanie proszę zapoznać się z przyjętą odpowiedzi i odpowiedź Marka Bootha . Odpowiadają one kompleksowo na pytanie. Najpierw była karta dziurkacza.
ChrisF

4
Dlaczego ta marginalna ciekawostka ma 139 pozytywnych opinii, jest poza mną. Tymczasem prawie każde inne pytanie (dobre lub złe) na pierwszej stronie ma znacznie mniej głosów. Czy nasze kryteria głosowania zbiorowego są tak złamane? :( (@fredley To nie jest krytyka ciebie, ale naszej społeczności)
Andres F.

6
@AndresF. Powodem, dla którego ten post spisał się dobrze, jest to, że jest to coś, czym zainteresuje się wiele osób, za dobrym tytułem. Spędził dzień na szczycie supercollider i trafił do Hacker News itp. Może to być marginalna ciekawostka, ale dobra zawartość!
fredley

Odpowiedzi:


735

Możesz podziękować karcie perforowanej IBM za ten limit - miał 80 kolumn:

Karta dziurkacza IBM


64
Potem wczesne teletypy, a później terminale wideo używały 80 kolumn (a następnie 132 kolumn) jako standardowej szerokości.
LapTop006

262
Teraz pytanie brzmi: dlaczego karta dziurkacza IBM ma 80 kolumn?
Factor Mystic

139
@FactorMystic - rozmiar karty dziurkacza był oparty na wielkości waluty z końca lat 80. XIX wieku, kiedy Hollerith zaprojektował je, aby pomagały w spisie ludności z 1890 roku .

56
Karty są tej wielkości, ponieważ w 1890 r. CTR chciał ponownie wykorzystać przewoźników walutowych (wówczas dolar był większy) do przenoszenia kart danych spisu powszechnego.
Al Biglan,

89
@AlBiglan Dlaczego waluta miała taką wielkość?
fredley

249

Jak Oded wspomniano, wspólny standard kodowania jest wynikiem 1928 IBM 80 kolumnowej formacie karta dziurkowana , gdyż wiele standardów kodowania sięgają do czasów, gdy programy zostały napisane na kartach perforowanych, jedną kartę / linii na raz, a nawet przejście na szersze ekrany nie zmieniło faktu, że kod staje się trudniejszy do odczytania, im bardziej się rozszerza.

Ze strony wikipedii na temat kart dziurkowanych :

Wpływ kulturowy

  • Spuścizna 80-kolumnowego formatu kart perforowanych polega na tym, że wyświetlanie 80 znaków w rzędzie było powszechnym wyborem przy projektowaniu terminali znakowych. Od listopada 2011 r. Niektóre wartości domyślne interfejsu znaków, takie jak szerokość okna wiersza polecenia w systemie Microsoft Windows, pozostają ustawione na 80 kolumn, a niektóre formaty plików, takie jak FITS, nadal używają obrazów kart o długości 80 znaków.

Pytanie brzmi: dlaczego IBM wybrał 80 kart kolumnowych w 1928 r., Kiedy Herman Hollerith używał wcześniej 24 i 45 kart kolumnowych ?

Chociaż nie mogę znaleźć ostatecznej odpowiedzi, podejrzewam, że wybór był oparty na typowej liczbie znaków na linię maszyn do pisania w tamtym czasie.

Większość historycznych maszyn do pisania , które widziałem, miała szerokość płyty około 9 cali, co odpowiada standaryzacji rozmiarów papieru do około 8 "-8,5" szerokości (zobacz Dlaczego standardowy rozmiar papieru w USA 8 ½ "x 11 „? i historia papierowego standardu serii ISO216 A ).

Dodaj typową wysokość do pisania 10-12 znaków na cal, co doprowadziłoby do dokumentów o szerokości od 72 do 90 znaków, w zależności od rozmiaru marginesów.

W związku z tym 80 znaków w wierszu stanowiłoby dobry kompromis między rozstawem otworów (małe prostokątne vs. większe okrągłe otwory) a długością linii, przy zachowaniu tego samego rozmiaru karty.


Nawiasem mówiąc, nie wszędzie w swoich standardach kodowania określa szerokość linii 80 znaków. Tam, gdzie pracuję, ma limit 132 znaków, co odpowiada szerokości typowych drukarek szerokiej linii z przeszłości, 12-poziomowy wydruk A4 w poziomie i typowa szerokość linii pozostała w oknie edytora Eclipse (zmaksymalizowanym na ekranie 1920 x 1200) po Eksploratorze pakietów i Widoki konspektu są brane pod uwagę.

Mimo to wolę kod o szerokości 80 znaków, ponieważ ułatwia porównanie trzech wersji pliku obok siebie bez przewijania w bok (zawsze źle) lub zawijania linii (co niszczy formatowanie kodu). Dzięki kodowi o szerokości 80 znaków potrzebujesz tylko ekranu o szerokości 240 znaków (1920 pikseli przy 8 pikselach na znak), aby wygodnie zobaczyć pełne połączenie w trzech kierunkach (wspólny przodek, oddział lokalny i oddział zdalny) na jednym ekranie.


2
Nie rozpoczynać kolejnego festynu spekulacyjnego, ale karty Holleritha miały okrągłe otwory, a nie prostokąty IBM 5081 i in. Późniejszy atak IBM na karty, w formacie System / 3, miał 96 okrągłych otworów w 3 poziomych pasmach kolumn.
Ross Patterson

9
Dobrym powodem do kontynuowania używania 80 znaków nawet na większych ekranach jest to, że wielu programistów woli używać mniejszych okien terminali (lub nawet IDE), zamiast utrzymywać je na pełnym ekranie przez cały czas.
rkulla

4
@rkulla Więc przez ile dekad powinniśmy nadal nakładać limit 80 znaków? Na pewno dla niektórych języków, takich jak C z krótkimi identyfikatorami, jest w porządku, ale dla innych, takich jak C # z długimi identyfikatorami, może to być uciążliwe. Na szczęście nakładamy limit 132 znaków w miejscu, w którym teraz jestem, ale bardzo denerwowałem się czasem 80, szczególnie w Pythonie
Basic

5
@Podstawowy argument mówi, że jeśli nie możesz pracować w granicach 80 znaków, to albo twoje identyfikatory są zbyt szczegółowe, albo próbujesz zrobić za dużo w jednej linii. Większość ludzi czuje się bardziej komfortowo z węższymi kolumnami zawierającymi więcej linii niż bardzo długimi liniami, ponieważ nasze oczy i mózgi były trenowane przez lata przez książki, gazety i strony internetowe o ograniczonej szerokości kolumny (jak ta), co oznacza, że ​​trudno nam skanować i rozumiem bardzo długie linie.
Mark Booth

5
@MarkBooth Nie wyciągnę tego zbyt mocno, ponieważ jest to trochę kwestia religijna, ale taki, który jest oznaczany przez PEP8 za zbyt długi, to ... `(8 spacji) zwraca HttpResponse (JsonLib (). Encode (Ret) , content_type = "application / json") `i tak, można go podzielić na wiele linii, ale jest on rozproszony po różnych kontrolerach i nie wydaje się, że warto go podzielić, z wyjątkiem spełnienia 80-znakowego„ standardu ”.
Podstawowy

59

Powiedziałbym, że dzieje się tak również dlatego, że stare terminale miały (głównie) znaki 80x24: w czasach terminali 80x24 ...

EDYTOWAĆ:

Aby precyzyjniej i dokładniej odpowiedzieć na pytanie, 80 znaków jest obecnie „powszechnie akceptowanym” ograniczeniem szerokości kodu w edytorach, ponieważ formaty 80x24 i 80x25 były najpopularniejszymi trybami ekranu we wczesnych terminalach I / O i komputerach osobistych ( VT52 - dzięki do Sandman4).

Limit ten jest nadal ważna i jakoś ważne IMHO z dwóch głównych powodów: Domyślnym geometrycznych, że wiele dystrybucji Linuksa przypisać nowo zrodził Windows Terminal wciąż 80x24 i wiele osób z nich korzystać jak jest , bez zmiany rozmiaru. Co więcej, jądra, programiści w czasie rzeczywistym i programiści często pracują w środowisku „bezgłowym” bez żadnego menedżera okien. Ponownie domyślna rozdzielczość ekranu to często 80 x 24 (lub 80 x 25), aw takich sytuacjach zmiana tego domyślnego ustawienia może być nawet trudna.

Więc jeśli jesteś programistą jądra, czasu rzeczywistego lub wbudowanym, powinieneś zmusić się do przestrzegania tego limitu, aby być bardziej „przyjaznym” w stosunku do każdego programisty, który powinien czytać twój kod.


8
Ale stare terminale miały szerokość 80 znaków z powodu programmers.stackexchange.com/a/148678/4767
Oded

9
-1 za brak czytania wcześniejszej odpowiedzi i za bezużyteczny link, który mówi tylko: „W czasach terminali 80x24 jeden z oryginalnych autorów popularnej gry uniksowej był często chwalony za to, jak dobrze jego komentarz został skomentowany. Powiedział, że musiał rób to, ponieważ zawsze palił trawkę, gdy kodował, i tracił swój tok myślenia, gdy ekran się przewijał.
grał

7
Przepraszam za powitanie Avio, akurat trafiłeś na post, który stał się bardzo popularny! Robimy to trochę inaczej niż w całym internecie. Nienawidzimy powielania, między innymi. Zapoznaj się z najczęściej zadawanymi pytaniami , do zobaczenia ponownie!
fredley,

6
+1, aby uzasadnić głosowanie negatywne. Kolejny +1 (gdybym mógł), ponieważ limit 80 znaków dla kodu wynika z 80-kolumnowego terminala, a to z kolei może, ale nie musi być związane z kartami dziurkacza.
Sandman4

4
+1, aby przeciwdziałać głosowaniu RossPatterson. Nie ma cytatów w żadnych odniesieniach na Wikipedii, które przypisywałyby 80CPR kartom punktowym; może to być całkowicie przypadkowe i powszechnie akceptowana „prawda”, która w rzeczywistości nie jest prawdą. Pokaż mi wywiad z jednym z oryginalnych inżynierów, który wybrał VT52, gdzie twierdzi, że przestrzegali standardu kart dziurkowanych IBM.
Jeremy Holovacs

52

Chociaż prawdopodobnie nie jest to pierwotny powód limitu 80 znaków, powodem, dla którego został powszechnie przyjęty, jest po prostu czytanie ergonomii :

  • Jeśli linie są zbyt krótkie, tekst staje się trudny do odczytania, ponieważ podczas czytania musisz ciągle przeskakiwać z jednej linii do drugiej.
  • Jeśli linie są zbyt długie, przeskakiwanie staje się zbyt trudne, ponieważ „gubisz linię” podczas powrotu do początku następnej linii (można to złagodzić, stosując większe odstępy między wierszami, ale marnuje to również miejsce).

Jest to powszechnie znane i akceptowane w typografii. Standardową rekomendacją (dla tekstu w książkach itp.) Jest użycie czegoś w zakresie 40–90 znaków w wierszu , a najlepiej około 60 (patrz np. Wikipedia , Markus Itkonen: Typografia i czytelność ).

Jeśli dążysz do 60 znaków w linii, górny limit musi oczywiście być nieco wyższy, aby uwzględnić sporadycznie długie wyrażenie (i takie rzeczy jak znaczniki marginesów i numery linii), więc posiadanie górnej granicy 70-80 ma sens.

To prawdopodobnie wyjaśnia, dlaczego limit 80 znaków został przejęty przez wiele innych systemów.


1
Uwielbiam tę odpowiedź, ponieważ wykracza ona poza konkretną technologię i unika dążenia do „prawdziwej” oryginalnej technologii.
kakyo

26

Powiązane pytanie brzmi: „dlaczego utrwalono 80 kolumn”. Nawet odpowiedzi na tej stronie mają w przybliżeniu tę szerokość. Zgadzam się z historycznymi przyczynami 80 kolumn, ale pytanie brzmi, dlaczego standard został utrzymany. Twierdziłbym, że jest czytelny - dla prozy i kodu. Nasze umysły mogą wchłonąć tyle informacji w jednym kawałku. Nadal używam znacznika 80 kolumn w edytorze kodu, aby przypomnieć mi, kiedy instrukcja staje się zbyt długa i niejasna. Pozostawia mi również mnóstwo ekranu na przeglądarkę i obsługiwane okna IDE. Niech żyje kolumna 80 - jako przewodnik nie jest regułą.


4
Widziałem 80-znakową (w przybliżeniu) maksymalną szerokość wspomnianą w dyskusjach na temat typografii - najwyraźniej to naprawdę pomaga w czytelności, w monospace czy nie.
nkorth

12

Kolejnym częstym ograniczeniem długości linii w dniach czcionek o stałej wysokości było 72 znaki. Przykłady: kod Fortran, poczta, aktualności.

Jednym z powodów było to, że kolumny 73–80 karty dziurkacza były często zarezerwowane na numer seryjny. Dlaczego numer seryjny? Jeśli upuściłeś talię kart, możesz podnieść karty w dowolnej kolejności, wyrównać lewy górny róg (który zawsze miał przekątną) i użyć maszyny do sortowania kart, aby je przywrócić.

Innym powodem ograniczenia 72 znaków był fakt, że typowe czcionki miały wysokość 10 punktów i szerokość 6 punktów (1/12 "). Strona o szerokości A4 lub 8,5" może pomieścić 72 znaki w kolumnie o szerokości 6 "i nadal mieć miejsce na marginesy ponad cal.


7

Osobiście trzymam się „około kolumny 80” na moim końcu wiersza, ponieważ ponadto powoduje to zawijanie lub utratę kodu podczas jego drukowania.

Istnieje również spuścizna kart dziurkowanych, ale nie sądzę, aby drukarki laserowe lub papier 8,5 x 11 cali były ustawione tak, aby były zgodne z ograniczeniami kart dziurkowanych.


Jak sugeruję w mojej odpowiedzi @CMike, myślę, że możliwe jest, że szerokość karty dziurkacza jest związana z rozmiarem płyt do pisania, a zatem z rozmiarem papieru (lub odwrotnie).
Mark Booth

4

Przewiń papiery do drukarek o rozmiarze liter lub szerokości 15 cali.

Były to drukarki liniowe 80 cps do drukowania kodów lub raportów, a później Epson obsługuje skrócone drukowanie 132 cps (kod ucieczki \ 015 dla skróconego wydruku).


Zwłaszcza gdy jest napisane (kilka razy!) Na tej stronie!
fredley,

12
@ Ross: nie powinieneś nikomu głosować za to, że nie wiesz czegoś na stronie pytań i odpowiedzi !
abatishchev

6
@abatishchev - ale przywołana odpowiedź znajduje się na tej stronie .
ChrisF

10
@abatishchev Właściwie to właśnie pomysł witryn StackExchange. „Dobre” odpowiedzi powinny zostać ocenione pozytywnie, a „złe” odpowiedzi powinny zostać ocenione z góry, aby zapewnić, że przyszli czytelnicy, którzy mogą nie być w stanie samodzielnie ocenić, mogą poznać opinię społeczności na temat odpowiedzi.
Ross Patterson

2
@abatishchev Nie chodzi o głosowanie w odpowiedziach, których nie lubisz, chodzi o głosowanie w odpowiedziach, które nie są przydatne . Zobacz kursor myszy nad przyciskami do głosowania.
Mark Booth

0

Jeden z powodów, dla których 80 kart kolumnowych może być związany z „dziurkaczem”, który prawdopodobnie był używany przed automatami do dziurkowania kart elektronicznych. Jest to taki, którego użyłem na początku lat 70. na stronie głównej ramy ICL System 4-50. Trzeba było wybić sekcję trzy? jednocześnie dziurkuj noże w karetce.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.