Mengapa 80 karakter batas 'standar' untuk lebar kode?

572

Mengapa 80 karakter batas "standar" untuk lebar kode? Mengapa 80 dan bukan 79, 81 atau 100? Apa asal dari nilai khusus ini?

fredley
sumber
14
Argh! Tidak bisakah Anda menunggu seminggu sebelum bertanya? Ini bisa menjadi pertanyaan pemenang kontes .
yannis
12
Sebelum ada yang berpikir untuk menambahkan jawaban lain untuk pertanyaan ini, harap baca jawaban yang diterima dan jawaban Mark Booth . Ini menjawab pertanyaan secara komprehensif. Kartu punch itu didahulukan.
ChrisF
4
Mengapa sepotong trivia marginal ini memiliki 139 upvotes adalah di luar saya. Sementara itu, hampir setiap pertanyaan lain (baik atau buruk) di halaman depan memiliki cara penilaian kurang. Apakah kriteria pemungutan suara kolektif kita begitu rusak? :( (@fredley Ini bukan kritik terhadap Anda, tetapi komunitas kami)
Andres F.
6
@AndresF. Alasan mengapa posting ini dilakukan dengan baik adalah karena ini adalah sesuatu yang banyak orang akan tertarik, di belakang judul yang bagus. Itu menghabiskan satu hari di atas supercollider, dan berhasil sampai ke Hacker News dll. Ini mungkin hal-hal sepele, tapi isinya bagus!
fredley

Jawaban:

734

Anda dapat berterima kasih kepada kartu punch IBM untuk batas ini - ini memiliki 80 kolom:

Kartu punch IBM

Oded
sumber
64
Setelah itu teletype awal, dan kemudian terminal video menggunakan 80 kolom (dan kemudian 132 kolom) sebagai lebar standar.
LapTop006
262
Sekarang pertanyaannya adalah: Mengapa kartu punch IBM memiliki 80 kolom?
Factor Mystic
139
@FactorMystic - ukuran kartu punch didasarkan pada ukuran mata uang pada akhir tahun 1880-an ketika Hollerith merancang mereka untuk membantu dengan sensus tahun 1890-an .
56
Kartu-kartu itu seukuran itu karena pada tahun 1890, CTR ingin menggunakan kembali operator mata uang (dolar lebih besar saat itu) untuk membawa kartu data sensus.
Al Biglan
89
@AlBiglan Mengapa mata uang sebesar itu?
fredley
249

Seperti Oded disebutkan, standar pengkodean umum ini adalah hasil dari 1928 IBM 80 kolom Format kartu menekan , karena banyak standar pengkodean tanggal kembali ke waktu ketika program ditulis pada kartu punch, satu kartu / baris pada satu waktu, dan bahkan transisi ke layar yang lebih luas tidak mengubah fakta bahwa kode menjadi lebih sulit untuk dibaca menjadi lebih lebar.

Dari halaman wikipedia pada kartu berlubang s:

Dampak Budaya

  • Warisan format kartu punched 80 kolom adalah tampilan 80 karakter per baris adalah pilihan umum dalam desain terminal berbasis karakter. Pada November 2011 beberapa default antarmuka karakter, seperti lebar jendela command prompt di Microsoft Windows, tetap ditetapkan pada 80 kolom dan beberapa format file, seperti FITS, masih menggunakan gambar kartu 80 karakter.

Sekarang pertanyaannya adalah, mengapa IBM memilih 80 kartu kolom pada tahun 1928, ketika Herman Hollerith sebelumnya menggunakan 24 dan 45 kartu kolom ?

Meskipun saya tidak dapat menemukan jawaban yang pasti, saya menduga bahwa pilihan itu didasarkan pada jumlah karakter khas per baris mesin ketik saat itu.

Sebagian besar mesin tik bersejarah yang pernah saya lihat memiliki lebar pelat sekitar 9 inci, yang sesuai dengan standardisasi ukuran kertas hingga lebar sekitar 8 "-8,5" (lihat Mengapa ukuran kertas standar di AS 8 ½ "x 11 "? dan Sejarah standar kertas seri ISO216 A ).

Tambahkan pitch mesin tik khas 10-12 karakter per inci dan itu akan mengarah ke dokumen dengan lebar antara 72 dan 90 karakter, tergantung pada ukuran margin.

Dengan demikian, 80 karakter per baris akan mewakili kompromi yang baik antara pitch pitch (lubang bulat kecil persegi panjang dan lebih besar) dan panjang garis, sambil mempertahankan ukuran kartu yang sama.


Secara kebetulan, tidak di mana-mana menentukan lebar garis 80 karakter dalam standar pengkodeannya. Di mana saya bekerja memiliki batas 132 karakter, yang sesuai dengan lebar printer garis lebar khas dahulu, cetakan landscape 12pt A4 dan lebar garis khas yang tersisa di jendela editor Eclipse (dimaksimalkan pada layar 1920x1200) setelah Package Explorer dan Tampilan garis besar diperhitungkan.

Meski begitu, saya masih lebih suka 80 karakter kode lebar karena membuatnya lebih mudah untuk membandingkan tiga revisi file berdampingan tanpa menggulir ke samping (selalu buruk) atau garis pembungkus (yang merusak pemformatan kode). Dengan kode lebar 80 karakter, Anda hanya perlu layar lebar 240 karakter (1920 piksel pada 8 piksel per karakter) untuk melihat penggabungan tiga arah penuh (leluhur umum, cabang lokal, dan cabang jarak jauh) dengan nyaman di satu layar.

Mark Booth
sumber
2
Bukan untuk memulai spekulasi-fest lain, tetapi kartu Hollerith memiliki lubang bundar, bukan persegi panjang dari IBM 5081 et al. Dan IBM kemudian terjun ke kartu, format System / 3, memiliki 96 lubang bundar dalam 3 pita kolom horisontal.
Ross Patterson
9
Alasan yang bagus untuk terus menggunakan 80 karakter bahkan pada layar yang lebih besar adalah karena banyak programmer lebih suka menggunakan jendela terminal yang lebih kecil (atau bahkan IDE), daripada harus membuat mereka tetap layar penuh setiap saat.
rkulla
4
@rkulla Jadi untuk berapa dekade lagi kita harus terus memaksakan batas 80 karakter? Tentu untuk beberapa bahasa seperti C dengan pengidentifikasi pendek itu baik-baik saja tetapi untuk yang lain seperti C # dengan pengidentifikasi panjang, itu bisa menyebalkan. Untungnya, kami memberlakukan batas 132 char di tempat saya sekarang, tetapi saya dulu sangat terganggu dengan 80, terutama dengan Python
Basic
5
@Basic ada argumen bahwa jika Anda tidak dapat bekerja dalam batas garis 80 karakter maka pengidentifikasi Anda terlalu bertele-tele atau Anda mencoba melakukan terlalu banyak pada satu baris. Kebanyakan orang lebih nyaman dengan kolom yang lebih sempit dengan lebih banyak garis daripada garis yang sangat panjang, karena mata dan otak kita telah dilatih selama bertahun-tahun melalui buku, koran, dan halaman web dengan batasan kolom (seperti ini) yang berarti kita kesulitan untuk memindai dan memahami garis yang sangat panjang.
Mark Booth
5
@MarkBooth Saya tidak akan menyeretnya keluar karena ini adalah masalah agama tetapi yang ditandai oleh PEP8 karena terlalu panjang adalah ... `(8 spasi) mengembalikan HttpResponse (JsonLib (). Encode (Ret) , content_type = "application / json") `dan ya itu dapat dipecah menjadi beberapa baris tetapi tersebar di berbagai pengontrol dan sepertinya tidak layak untuk dipisahkan kecuali untuk memenuhi" standar "80-char.
Dasar
59

Saya akan mengatakan itu juga karena terminal lama (kebanyakan) berukuran 80x24 karakter: Kembali pada zaman terminal 80x24 ...

SUNTING:

Untuk menjawab pertanyaan dengan lebih tepat dan lebih teliti, 80 karakter adalah batas "diterima secara universal" saat ini untuk lebar kode di dalam editor karena format 80x24 dan 80x25 adalah mode layar paling umum di terminal I / O awal dan komputer pribadi ( VT52 - terima kasih ke Sandman4).

Batas ini masih berlaku dan entah bagaimana IMHO penting karena dua alasan utama: geometri default yang ditetapkan oleh banyak distro Linux ke windows terminal yang baru lahir masih 80x24 dan banyak orang menggunakannya apa adanya , tanpa mengubah ukuran. Selain itu, kernel, programmer real-time dan embedded sering bekerja di lingkungan "tanpa kepala" tanpa window manager. Sekali lagi, resolusi layar default sering 80x24 (atau 80x25), dan, dalam situasi ini, bahkan mungkin sulit untuk mengubah pengaturan default ini.

Jadi, jika Anda seorang kernel, programmer real-time atau tertanam, Anda harus memaksakan diri Anda untuk menghormati batas ini, hanya untuk menjadi sedikit lebih "ramah" terhadap setiap programmer yang harus membaca kode Anda.

Avio
sumber
8
Tetapi terminal lama memiliki lebar 80 karakter karena programer.stackexchange.com/a/148678/4767
Oded
9
-1 untuk tidak membaca jawaban sebelumnya dan untuk tautan tidak berguna yang mengatakan hanya "Kembali pada zaman terminal 80x24, salah satu penulis asli dari permainan unix populer sering dipuji pada seberapa baik kodenya dikomentari. Dia mengatakan bahwa dia harus lakukan itu karena dia selalu merokok ganja ketika dia membuat kode dan akan kehilangan pemikiran ketika layarnya bergulir. "
agas
7
Maaf untuk Avio sambutan, Anda kebetulan masuk ke pos yang menjadi sangat populer! Kami melakukan hal-hal yang sedikit berbeda dari internet di sekitar sini. Kami benci duplikasi, antara lain. Bacalah faq untuk memulai, berharap bisa melihat Anda lagi!
fredley
6
+1 untuk membenarkan downvote. +1 lain (jika saya bisa) karena batas 80 karakter untuk kode adalah karena terminal 80-kolom dan yang pada gilirannya mungkin atau mungkin tidak terkait dengan kartu punch.
Sandman4
4
+1 untuk menetralkan downvote @ RossPatterson. Tidak ada kutipan pada referensi wikipedia untuk menghubungkan 80CPR dengan punchcard; yang mungkin sepenuhnya kebetulan, dan "kebenaran" yang umum diterima yang sebenarnya tidak benar. Tunjukkan pada saya sebuah wawancara dengan salah satu insinyur asli yang berspekulasi VT52 di mana dia mengatakan mereka mengikuti standar punchcard IBM.
Jeremy Holovacs
52

Meskipun mungkin bukan alasan asli untuk batas 80 karakter, alasan bahwa itu diterima secara luas hanya karena membaca ergonomi :

  • Jika baris terlalu pendek, teks menjadi sulit dibaca karena Anda harus terus-menerus melompat dari satu baris ke baris berikutnya saat membaca.
  • Jika garis terlalu panjang, garis melompat menjadi terlalu keras karena Anda "kehilangan garis" saat kembali ke awal baris berikutnya (ini dapat dikurangi dengan jarak antar-garis yang lebih besar, tetapi ini juga membuang-buang ruang).

Ini dikenal luas dan diterima dalam tipografi. Rekomendasi standar (untuk teks dalam buku dll.) Adalah untuk menggunakan sesuatu di wilayah 40-90 karakter per baris , dan idealnya sekitar 60 (lihat misalnya Wikipedia , Markus Itkonen: Tipografi dan keterbacaan ).

Jika Anda membidik 60 karakter per baris, batas atas Anda harus sedikit lebih tinggi untuk mengakomodasi ekspresi panjang sesekali (dan hal-hal seperti penanda margin dan nomor baris), sehingga memiliki batas atas 70-80 masuk akal.

Ini mungkin menjelaskan mengapa batas 80 karakter diambil alih oleh banyak sistem lain.

sleske
sumber
1
Saya suka jawaban ini karena melampaui teknologi tertentu dan menghindari pengejaran teknologi asli "sejati".
kakyo
26

Pertanyaan terkait adalah "mengapa 80 kolom tetap ada". Bahkan tanggapan pada halaman ini kira-kira selebar itu. Saya setuju dengan alasan historis untuk 80 kolom, tetapi pertanyaannya adalah mengapa standar tetap ada. Saya akan mengklaim keterbacaan - untuk prosa dan kode. Pikiran kita hanya dapat menyerap begitu banyak informasi dalam keadaan utuh. Saya masih menggunakan penanda 80 kolom di editor kode saya untuk mengingatkan saya ketika sebuah pernyataan terlalu panjang dan tidak jelas. Ini juga membuat saya banyak layar real-estate untuk browser, dan jendela IDE yang mendukung. Umur 80 kolom - sebagai panduan bukan aturan.

Paul Marrington
sumber
4
Saya telah melihat lebar 80 karakter (kurang-lebih) yang disebutkan dalam diskusi tipografi - tampaknya ini benar-benar membantu keterbacaan, monospace atau tidak.
nkorth
12

Batas panjang garis umum lainnya pada hari-hari font pitch tetap adalah 72 karakter. Contoh: Kode Fortran, surat, berita.

Salah satu alasannya adalah kolom 73-80 kartu punch sering disediakan untuk nomor seri. Mengapa nomor seri? Jika Anda menjatuhkan setumpuk kartu, Anda dapat mengambil kartu dalam urutan apa pun, berbaris di sudut kiri atas (yang selalu memiliki potongan diagonal) dan menggunakan mesin penyortir kartu untuk mengembalikannya.

Alasan lain untuk batas 72 karakter adalah bahwa font yang umum tingginya 10 poin dan lebar 6 poin (1/12 "). Halaman lebar A4 atau 8,5" dapat menampung 72 karakter dalam kolom lebar 6 "dan masih memiliki ruang untuk margin lebih dari satu inci.

Larry Tesler
sumber
7

Saya pribadi tetap berpegang pada "tentang kolom 80" untuk akhir baris saya karena lebih jauh dari itu menyebabkan pembungkus atau kehilangan kode ketika Anda mencetaknya.

Ada warisan kartu punch juga, tapi saya tidak berpikir printer laser atau kertas 8,5x11 inci diatur agar sesuai dengan batasan kartu punch.

CMike
sumber
Seperti yang saya sarankan dalam jawaban saya @ CMike, saya berpikir bahwa ada kemungkinan bahwa lebar kartu punch terkait dengan ukuran platens mesin tik dan dengan demikian ukuran kertas (atau sebaliknya).
Mark Booth
4

Gulir dalam kertas printer berukuran Letters atau 15 "lebar.

Itu adalah printer garis 80 cps untuk hardcopy kode atau laporan, dan kemudian pada Epson mendukung pencetakan terkondensasi 132 cps (kode escape \ 015 untuk cetakan terkondensasi).

Rony
sumber
Terutama ketika itu ditulis (beberapa kali!) Di halaman ini!
fredley
12
@Ross: Anda tidak boleh menurunkan suara siapa pun karena tidak mengetahui sesuatu di situs Tanya Jawab !
abatishchev
6
@abatishchev - tetapi jawaban yang dirujuk ada di halaman ini .
ChrisF
10
@abatishchev Sebenarnya, itulah ide situs StackExchange. Jawaban "baik" harus diunggulkan, dan jawaban "buruk" harus diturunkan, untuk memastikan bahwa pembaca di masa depan yang mungkin tidak dapat menilai sendiri dapat mengetahui pendapat masyarakat tentang jawaban tersebut.
Ross Patterson
2
@abatishchev Ini bukan tentang memilih jawaban yang tidak Anda sukai, ini tentang memilih jawaban yang tidak berguna . Lihat teks mouse-over dari tombol voting.
Mark Booth
0

Salah satu alasan untuk 80 kartu kolom dapat dikaitkan dengan 'hand punch' yang mungkin digunakan sebelum mesin punch kartu elektronik. Ini adalah salah satu yang saya gunakan pada awal 70-an di situs utama ICL System 4-50. Seseorang harus memukul bagian tiga? meninju pisau di kereta pada saat yang sama.

Ray Denton
sumber