Neden 80 karakter kod genişliği için 'standart' sınırı?


572

Neden 80 karakter kod genişliği için "standart" sınır? Neden 80 ve 79, 81 veya 100 değil? Bu özel değerin kökeni nedir?



14
Ahh! Sormadan önce bir hafta beklememiş miydin? Bu yarışma kazanan bir soru olabilirdi .
yannis

12
Herhangi biri bu soruya başka bir cevap eklemeyi düşünmeden önce, lütfen kabul edilen cevabı ve Mark Booth'un cevabını okuyun . Bunlar soruyu kapsamlı bir şekilde cevaplıyor. İlk önce delikli kart geldi.
ChrisF

4
Neden bu marjinal trivia'nın 139 oy hakkı var ki benden fazla. Bu arada, ön sayfasında (iyi veya kötü) hemen hemen her soru vardır yolu daha az oy. Toplu oy verme kriterlerimiz bu kadar bozuk mu? :( (@fredley Bu, ama senin topluluğumuzun eleştirisi değil)
Andres F.

6
@AndresF. Bu yazının iyi yapmasının nedeni, iyi bir unvanın arkasında, birçok insanın ilgileneceği bir şey. Süper askerin tepesinde bir gün geçirdi ve Hacker News vb .'ye yaptı.
Fredley

Yanıtlar:


734

IBM punch kartına bu limit için teşekkür edebilirsiniz - 80 sütun vardı:

IBM delikli kart


64
Bu erken teletiplerden sonra ve daha sonra video terminalleri standart genişlik olarak 80 sütun (ve ardından 132 sütun) kullandı.
LapTop006 15:12

262
Şimdi soru şu: IBM delikli kartında neden 80 sütun var?
Faktör Mystic

139
@FactorMystic - delikli kart boyutu, Hollerith'in 1890 nüfus sayımına yardımcı olmak üzere tasarlandığı 1880'lerin sonlarındaki para biriminin büyüklüğüne dayanıyordu .

56
Kartlar bu büyüklüktedir, çünkü 1890'da, TO, nüfus sayımı veri kartlarını taşımak için para birimlerini yeniden kullanmak istiyordu (o zamanki dolar daha büyüktü).
Al Biglan

89
@AlBiglan Para birimi neden bu kadar büyüktü?
Fredley

249

Gibi Oded bahsedildiği, bu ortak kodlama standardı IBM'in 1928 bir sonucudur 80 sütun delikli kart formatında birçok kodlama standartları geri programların bir anda yumruk kartları, tek kartta / satırda yazıldığı bir zamana tarih beri ve hatta geçiş Daha geniş ekranlar, kodun daha geniş hale gelmesi daha zorlaştığı gerçeğini değiştirmedi.

Delikli kartlardaki wikipedia sayfasından :

Kültürel Etki

  • 80 sütunlu delikli kart biçiminin bir mirası, karakter tabanlı terminallerin tasarımında sıra başına 80 karakter gösteriminin yaygın bir seçim olduğu yönündedir. Kasım 2011'den itibaren, Microsoft Windows'taki komut istemi penceresinin genişliği gibi bazı karakter arayüzü varsayılanları 80 sütunda ayarlanmış ve FITS gibi bazı dosya formatları hala 80 karakterlik kart görüntüleri kullanmaktadır.

Şimdi asıl soru, neden Herman Hollerith daha önce 24 ve 45 sütun kartlarını kullandığında 1928'de neden 80 sütun kartını seçti ?

Kesin bir cevap bulamamaya rağmen, seçimin zamanın daktilolarının her bir satırındaki tipik karakter sayısına bağlı olduğunu düşünüyorum .

Gördüğüm tarihi daktiloların çoğu, yaklaşık 9 inç genişliğindeki bir plaka genişliğine sahipti ; bu, kağıt boyutlarının yaklaşık 8 "-8.5" genişliğinde standartlaştırılmasına karşılık geliyor (bkz . ABD 8 ½ "x 11'deki standart kağıt boyutu neden? "? ve ISO216 A serisi kağıt standardı" .

İnç başına 10-12 karakterlik tipik bir daktilo aralığı ekleyin ve bu, kenar boşluklarının boyutuna bağlı olarak genişliği 72 ile 90 karakter arasında olan belgelere yol açar.

Dolayısıyla, her satıra 80 karakter, aynı kart boyutunu korurken, delik adımı (küçük dikdörtgen vs daha büyük yuvarlak delikler) ve çizgi uzunluğu arasında iyi bir uzlaşmayı temsil ederdi.


Bu arada, her yerde kodlama standartlarında 80 karakterlik bir çizgi genişliği belirtilmiyor. Çalıştığım yerde, eski tip geniş hat yazıcıların genişliğine tekabül eden bir 132 karakter sınırına, 12pt yatay A4 çıktıya ve Eclipse editör penceresinden kalan (1920x1200 ekranda maksimize edilmiş) tipik çizgi genişliğine karşılık gelen 132 karakter sınırına sahiptir. Anahat görünümleri dikkate alınır.

Yine de 80 karakterlik geniş kodu tercih ediyorum, çünkü bir dosyanın üç revizyonunu yan yana kaydırmadan (her zaman kötü) veya sarma satırlarını (kod formatlamasını yok eden) kaydırmadan karşılaştırmayı kolaylaştırıyor. 80 karakterlik geniş kodla, tek bir ekranda tam olarak üç yönlü bir birleştirme (ortak ata, yerel dal ve uzak dal) görmek için yalnızca 240 karakter genişliğinde bir ekrana (karakter başına 8 piksel olarak 1920 piksel) ihtiyacınız var .


2
Başka bir spekülasyon festivaline başlamamayıp, Hollerith'in kartlarında dairesel delikler vardı, IBM 5081 ve ark. IBM'in daha sonra kartlara girmesi üzerine Sistem / 3 formatı, 3 yatay sütun bandında 96 dairesel deliğe sahipti.
Ross Patterson

9
Daha büyük ekranlarda bile 80 karakter kullanmaya devam etmenin iyi bir nedeni, çoğu programcının her zaman tam ekran olarak tutmak yerine, daha küçük terminal (veya hatta IDE) pencereleri kullanmayı tercih etmesidir.
rkulla

4
@ rkulla Öyleyse kaç yıl boyunca 80 karakterlik bir sınır koymaya devam edelim? Kısa tanıtıcıları olan C gibi bazı diller için sorun olmaz, ancak uzun tanıtıcıları olan C # gibi bazı kullanıcılar için bu bir acı olabilir. Neyse ki şu an bulunduğum yerde 132 karakterlik bir limit uyguluyoruz ama 80'de çok sinirlenmiştim, özellikle 15: 21'de Python
Basic

5
@Basic, 80 karakterlik bir çizgi sınırı içerisinde çalışamazsanız tanımlayıcılarınızın aşırı derecede ayrıntılı olduğu veya bir satırda çok fazla şey yapmaya çalıştığınız konusunda bir argüman var . Çoğu insan, çok uzun çizgilerden daha dar çizgilerden daha dar sütunlarla daha rahattır; çünkü gözlerimiz ve beyinlerimiz yıllarca kitaplar, gazeteler ve sütun genişliği kısıtlamalı web sayfaları (bunun gibi) aracılığıyla eğitilmiştir; ve çok uzun çizgileri kavrar .
Mark Booth,

5
@MarkBooth Biraz dini bir mesele olduğu için fazla sürüklemeyeceğim ama PEP8 tarafından çok uzun olduğu için işaretlenen biri ... `(8 boşluk) return HttpResponse (JsonLib (). Encode (Ret) , content_type = "application / json") `ve evet birden fazla satıra bölünmüş olabilir, ancak çeşitli denetleyiciler arasında dağınıktır ve 80 karakterli" standardın "yerine getirilmesinin dışında bölünmeye değer gibi görünmez.
Temel

59

Bunun eski terminallerin (çoğunlukla) 80x24 karakter boyutunda olması nedeniyle de söyleyebilirim: 80x24 terminal günlerinde ...

DÜZENLE:

Soruya daha kesin ve daha doğru cevap verebilmek için, 80 karakter, editörler içindeki kod genişliğine ilişkin geçerli "evrensel olarak kabul edilen" sınırdır, çünkü 80x24 ve 80x25 formatları, erken I / O terminallerinde ve kişisel bilgisayarlarda en yaygın ekran modlarıdır ( VT52 - teşekkürler Sandman4'e).

Bu sınır hala geçerli ve bir şekilde önemli IMHO'nun iki ana nedeni var: birçok Linux dağıtımının yeni ortaya çıkmış terminal pencerelerine atadığı varsayılan geometri hala 80x24 ve çoğu kişi bunları yeniden boyutlandırma olmadan olduğu gibi kullanıyor . Dahası, çekirdek, gerçek zamanlı ve gömülü programcılar genellikle herhangi bir pencere yöneticisi olmadan "başsız" bir ortamda çalışırlar. Yine, varsayılan ekran çözünürlüğü genellikle 80x24'tür (veya 80x25) ve bu durumlarda, bu varsayılan ayarın değiştirilmesi bile zor olabilir.

Eğer bir çekirdekli, gerçek zamanlı veya yerleşik bir programlayıcıysanız, bu sınıra saygı duymaya zorlamalısınız, kodunuzu okuması gereken herhangi bir programlayıcıya karşı biraz daha "arkadaşça" olmaya çalışmalısınız.


8
Ama yaşlı terminalleri nedeniyle 80 karakter genişliğinde idi programmers.stackexchange.com/a/148678/4767
Oded

9
-1 önceki cevabı okumadığı ve sadece "80x24 terminal dönemlerinde, popüler bir unix oyununun orijinal yazarlarından biri sık sık kodunun ne kadar iyi yorumlandığına iltifat etti" diyen işe yaramaz bir bağlantı okumadığı için. Bunu yapın, çünkü kodlandığında her zaman tencere içti ve ekran kaydırıldığında düşünce trenini kaybedecekti. "
gnat

7
Hoşgeldin Avio için üzgünüm, çok popüler olan bir yazıya atladın! Buradaki şeyleri internetin geri kalanından biraz farklı yapıyoruz. Başka şeylerin yanı sıra çoğaltmadan nefret ediyoruz. Başlamak için ssseyi okuyun, sizi tekrar görmeyi umuyoruz!
Fredley

6
+1 oy için haklı çıkarmak için. Kod için 80 karakterlik bir sınırın 80 sütun terminalinden kaynaklandığından ve sırayla delikli kartlarla ilişkili olabileceğinden veya olamayacağından başka bir + 1 (yapabilseydim) .
Sandman4

4
+ 1 @ RossPatterson'ın olumsuz oyu ile mücadele etmek için. 80CPR'yi delikli kartlara atfetmek için herhangi bir wikipedia referansta alıntı yoktur; Bu tamamen tesadüfi olabilir ve genellikle doğru olmayan, yaygın olarak kabul edilen bir "hakikat" olabilir. Bana, bir IBM punchcard standardını takip ettiklerini söylediği VT52'yi belirleyen orijinal mühendislerden biriyle röportaj göster.
Jeremy Holovacs

52

Muhtemelen 80 karakter sınırının orijinal nedeni olmasa da, yaygın olarak kabul edilmesinin bir nedeni sadece ergonomiyi okumaktır :

  • Çizgiler çok kısaysa, okunması zor bir metin olur çünkü okuma sırasında sürekli bir satırdan diğerine atlamanız gerekir.
  • Çizgiler çok uzunsa, çizgi zıplaması çok zorlaşır, çünkü bir sonraki çizginin başlangıcına geri dönerken "çizgiyi kaybedersiniz" (bu, daha büyük çizgiler arası boşluk bırakılarak hafifletilebilir, ancak bu aynı zamanda boşa harcanır).

Bu yaygın olarak bilinir ve tipografide kabul edilir. Standart öneri (kitaplardaki metinler vb. İçin) satır başına 40-90 karakterlik bir bölgede ve ideal olarak yaklaşık 60'lık bir şey kullanmaktır (bakınız örneğin Wikipedia , Markus Itkonen: Tipografi ve okunabilirlik ).

Satır başına 60 karakter hedefliyorsanız, üst sınırınız, ara sıra uzun ifadeyi (ve kenar boşlukları işaretleri ve satır numaraları gibi şeyler) yerleştirmek için biraz daha yüksek olmalıdır, bu nedenle 70-80'lik bir üst sınıra sahip olmak mantıklıdır.

Bu muhtemelen 80 karakter limitinin neden birçok sistem tarafından üstlenildiğini açıklıyor.


1
Bu cevabı çok seviyorum çünkü belirli bir teknolojinin ötesine geçiyor ve “gerçek” orijinal teknolojinin peşinden gitmiyor.
kakyo

26

İlgili bir soru "neden 80 sütun devam etti" dir. Bu sayfadaki yanıtlar bile yaklaşık olarak bu genişlikte. 80 sütunun tarihsel nedenleriyle aynı fikirdeyim, ancak soru standardın neden devam ettiğidir. Okunabilirlik iddia ediyorum - nesir ve kod için. Aklımız sadece çok fazla bilgiyi tek bir parçada emebilir. Bir ifade çok uzadığında ve belirsiz olduğunda bana hatırlatmak için kod editörümdeki 80 sütun işaretleyicisini hala kullanıyorum. Ayrıca bana tarayıcı ve emlak IDE pencereleri için pek çok ekran gayrimenkulü sağlıyor. Yaşasın 80 sütun - rehber olarak bir kural değil.


4
Tipografi tartışmalarında bahsettiğim 80 karakterlik (yaklaşık olarak) maksimum genişliği gördüm - görünüşe göre bu gerçekten okunabilirlik, tek boşluk ya da değil yardımcı oluyor.
nkorth

12

Sabit aralıklı yazı tipi günlerinde başka bir yaygın satır uzunluğu sınırı 72 karakterdi. Örnekler: Fortran kodu, posta, haberler.

Bunun bir nedeni, delikli bir kartın 73-80 numaralı sütunlarının genellikle seri numarası için ayrılmış olmasıydı. Neden seri numarası? Bir kart destesini düşürdüyseniz, kartları herhangi bir sırayla toplayabilir, sol üst köşeleri (her zaman çapraz kesilen) hizalayabilir ve sırayla geri almak için bir kart sıralama makinesi kullanabilirsiniz.

72 karakterlik limitin bir başka nedeni de, genel fontların 10 punto ve 6 punto (1/12 ") genişliğinde olmasıydı. A4 veya 8.5" genişliğinde bir sayfa 6 "genişliğinde bir sütunda 72 karakter tutabiliyordu ve yine de kenar boşluklarına sahip olabiliyordu bir inçten fazla.


7

Satır sonum için şahsen "yaklaşık sütun 80" e sadık kalırım, çünkü bundan daha fazla basarsanız sarma veya kayıp koda neden oluyor.

Delikli kartın mirası da var, ancak lazer yazıcıların veya 8,5x11 inçlik kağıtların delikli kart sınırlamalarına uyacak şekilde ayarlandığını sanmıyorum.


De tavsiye edildiği gibi cevabım @CMike, bir delikli kart genişliği, böylelikle yazı makinası baskı levhaları ve kağıt boyutları (veya tersi) büyüklüğü ile ilişkili olduğu mümkün olduğunu düşünüyorum.
Mark Booth,

4

Yazıcılardaki kağıtlarda kaydırma, Harflerin boyutu ya da 15 inç genişliğindeydi.

Kodların veya raporların basılı kopyalanması için kullanılan 80 cps satır yazıcılarıydı ve daha sonra Epson'da 132 cps yoğunlaştırılmış baskıyı destekliyor (yoğunlaştırılmış baskı için kaçış kodu \ 015).


Özellikle bu sayfaya (birkaç kez!) Yazıldığında!
Fredley

12
@Ross: Sorular ve Cevaplar sitesinde bir şey bilmediğiniz için kimseyi küçümsememelisiniz !
abatishchev

6
@ abatishchev - ancak atıfta bulunulan cevap bu sayfada .
ChrisF

10
@ abatishchev Aslında, tam olarak StackExchange sitelerinin fikri. “İyi” cevaplar kaldırılmalı ve kendileri için yargılayamayacak olan gelecekteki okuyucuların topluluğun cevaplar hakkındaki görüşlerini bilmesini sağlamak için “kötü” cevaplar düşürülmelidir.
Ross Patterson

2
@ abatishchev Sevmediğiniz cevapları oylama ile ilgili değil, faydalı olmayan cevapları oylama ile ilgili . Oylama düğmelerinin fare üstündeki metne bakın.
Mark Booth,

0

80 sütunlu kartların sebeplerinden biri, muhtemelen elektronik kart zımbalama makinelerinden önce kullanılan 'el zımbası' ile ilişkilendirilebilir. 70'li yılların başında bir ICL Sistem 4-50 ana çerçeve bilgisayar sitesinde kullandım. Biri üç bölüme mi atmak zorunda kaldı? Aynı anda vagondaki bıçakları delin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.