Tại sao 80 ký tự là giới hạn 'tiêu chuẩn' cho chiều rộng mã?


572

Tại sao 80 ký tự là giới hạn "tiêu chuẩn" cho chiều rộng mã? Tại sao 80 mà không phải 79, 81 hay 100? Nguồn gốc của giá trị đặc biệt này là gì?



14
Argh! Bạn không thể đợi một tuần trước khi hỏi sao? Đây có thể là một câu hỏi chiến thắng cuộc thi .
yannis

12
Trước khi bất cứ ai nghĩ đến việc thêm câu trả lời khác cho câu hỏi này, vui lòng đọc câu trả lời được chấp nhận và câu trả lời của Mark Booth . Những câu trả lời toàn diện. Các punchcard đến đầu tiên.
ChrisF

4
Tại sao mẩu chuyện nhỏ bên lề này có 139 upvote nằm ngoài tôi. Trong khi đó, hầu hết các câu hỏi khác (tốt hay xấu) ở trang đầu có cách ít phiếu. Là tiêu chí bỏ phiếu tập thể của chúng tôi rất phá vỡ? :( (@fredley Đây không phải là lời chỉ trích của bạn, mà là của cộng đồng của chúng tôi)
Andres F.

6
@AresresF. Lý do bài đăng này đã làm tốt là vì đó là điều mà nhiều người sẽ quan tâm, đằng sau một tiêu đề tốt. Nó đã dành một ngày trên đỉnh của siêu xe, và đưa nó đến Hacker News, v.v. Nó có thể là những chuyện vặt ngoài lề, nhưng đó là nội dung tốt!
fredley

Câu trả lời:


734

Bạn có thể cảm ơn thẻ đục lỗ của IBM về giới hạn này - nó có 80 cột:

Thẻ đục lỗ của IBM


64
Sau đó, các kiểu đầu tiên và các thiết bị đầu cuối video sau đó đã sử dụng 80 cột (và sau đó là 132 cột) làm chiều rộng tiêu chuẩn.
LapTop006

262
Bây giờ câu hỏi là: Tại sao thẻ đục lỗ của IBM có 80 cột?
Nhân tố huyền bí

139
@FactorMystic - kích thước thẻ đục lỗ được dựa trên kích thước của tiền tệ vào cuối những năm 1880 khi Hollerith thiết kế chúng để hỗ trợ điều tra dân số năm 1890 .

56
Các thẻ có kích thước như vậy bởi vì vào năm 1890, CTR muốn sử dụng lại các nhà cung cấp tiền tệ (đồng đô la đã trở lại lớn hơn) để mang các thẻ dữ liệu điều tra dân số.
Al Biglan

89
@AlBiglan Tại sao tiền tệ lại có kích thước như vậy?
fredley

249

Như Oded đề cập, tiêu chuẩn mã hóa thông thường đây là một kết quả năm 1928 của IBM định dạng thẻ đấm 80 cột , vì nhiều tiêu chuẩn mã hóa có niên đại từ thời điểm mà các chương trình được viết trên thẻ đục lỗ, một thẻ / dòng tại một thời điểm, và thậm chí quá trình chuyển đổi để màn hình rộng hơn không làm thay đổi thực tế rằng mã càng khó đọc thì nó càng trở nên rộng hơn.

Từ trang wikipedia về thẻ đục lỗ s:

Ảnh hưởng văn hoá

  • Một di sản của định dạng thẻ đục lỗ 80 cột là hiển thị 80 ký tự mỗi hàng là một lựa chọn phổ biến trong thiết kế các thiết bị đầu cuối dựa trên ký tự. Kể từ tháng 11 năm 2011, một số mặc định giao diện ký tự, chẳng hạn như độ rộng của cửa sổ nhắc lệnh trong Microsoft Windows, vẫn được đặt ở 80 cột và một số định dạng tệp, như FITS, vẫn sử dụng hình ảnh thẻ 80 ký tự.

Bây giờ câu hỏi là, tại sao IBM đã chọn 80 thẻ cột vào năm 1928, khi Herman Hollerith trước đây đã sử dụng thẻ cột 24 và 45 ?

Mặc dù tôi không thể tìm thấy một câu trả lời dứt khoát, tôi nghi ngờ rằng sự lựa chọn được dựa trên số đặc trưng của ký tự trên mỗi dòng của máy đánh chữ của thời điểm đó.

Hầu hết các máy đánh chữ lịch sử mà tôi thấy có chiều rộng trục lăn khoảng 9 inch, tương ứng với tiêu chuẩn hóa kích thước giấy rộng khoảng 8 "-8,5" (xem Tại sao kích thước giấy tiêu chuẩn ở Hoa Kỳ 8 ½ "x 11 "?Lịch sử của ISO216 Một tiêu chuẩn giấy loạt ).

Thêm một khoảng cách đánh máy điển hình là 10-12 ký tự trên một inch và điều đó sẽ dẫn đến các tài liệu có độ rộng từ 72 đến 90 ký tự, tùy thuộc vào kích thước của lề.

Như vậy, 80 ký tự trên mỗi dòng sẽ thể hiện sự thỏa hiệp tốt giữa khoảng cách lỗ (hình chữ nhật nhỏ so với lỗ tròn lớn hơn) và chiều dài dòng, trong khi vẫn duy trì cùng kích thước thẻ.


Ngẫu nhiên, không phải nơi nào cũng chỉ định độ rộng dòng 80 ký tự trong các tiêu chuẩn mã hóa của họ. Nơi tôi làm việc có giới hạn 132 ký tự, tương ứng với chiều rộng của máy in dòng rộng điển hình , bản in khổ A4 12pt và độ rộng dòng điển hình còn lại trong cửa sổ trình soạn thảo của Eclipse (tối đa hóa trên màn hình 1920x1200) sau Gói Explorer và Quan điểm phác thảo được đưa vào tài khoản.

Mặc dù vậy, tôi vẫn thích mã rộng 80 ký tự vì nó giúp dễ dàng so sánh ba phiên bản của một tệp mà không phải cuộn sang một bên (luôn luôn xấu) hoặc gói dòng (phá hủy định dạng mã). Với mã rộng 80 ký tự, bạn chỉ cần màn hình rộng 240 ký tự (1920 pixel với 8 pixel mỗi ký tự) để xem hợp nhất ba chiều (tổ tiên chung, nhánh cục bộ và nhánh từ xa) thoải mái trên một màn hình.


2
Không bắt đầu một lễ hội đầu cơ khác, nhưng thẻ của Hollerith có các lỗ tròn, không phải hình chữ nhật của IBM 5081 et al. Và sau đó, IBM đã thâm nhập vào các thẻ, định dạng System / 3, có 96 lỗ tròn trong 3 dải cột ngang.
Ross Patterson

9
Một lý do chính đáng để cố gắng tiếp tục sử dụng 80 ký tự ngay cả trên màn hình lớn hơn là nhiều lập trình viên thích sử dụng các cửa sổ đầu cuối nhỏ hơn (hoặc thậm chí IDE), thay vì phải luôn giữ chúng ở chế độ toàn màn hình.
rkulla

4
@rkulla Vậy trong bao nhiêu thập kỷ, chúng ta sẽ tiếp tục áp đặt giới hạn 80 ký tự? Chắc chắn đối với một số ngôn ngữ như C có số nhận dạng ngắn thì tốt nhưng với những ngôn ngữ khác như C # có số nhận dạng dài thì có thể là một nỗi đau. May mắn thay, chúng tôi áp đặt giới hạn 132 char hiện tại nhưng tôi đã từng rất khó chịu với 80, đặc biệt là trong Python
Basic

5
@Basic có một lập luận rằng nếu bạn không thể làm việc trong giới hạn dòng 80 ký tự thì số nhận dạng của bạn quá dài dòng hoặc bạn đang cố gắng làm quá nhiều trên một dòng. Hầu hết mọi người cảm thấy thoải mái hơn với các cột hẹp hơn nhiều dòng hơn các dòng rất dài, vì mắt và bộ não của chúng ta đã được đào tạo trong nhiều năm qua sách, báo và các trang web bị hạn chế độ rộng cột (như trang này) có nghĩa là chúng ta khó quét và hiểu các dòng rất dài.
Đánh dấu gian hàng

5
@MarkBooth Tôi sẽ không kéo nó ra quá nhiều vì đó là một vấn đề tôn giáo nhưng một vấn đề bị PEP8 gắn cờ vì quá dài là ... `(8 dấu cách) trả về HttpResponse (JsonLib (). Mã hóa (Ret) , content_type = "application / json") `và vâng, nó có thể được chia thành nhiều dòng nhưng nó nằm rải rác trên nhiều bộ điều khiển khác nhau và dường như không đáng để chia tách trừ việc đáp ứng" tiêu chuẩn "80-char.
Cơ bản

59

Tôi muốn nói rằng đó cũng là vì các thiết bị đầu cuối cũ có kích thước 80x24 ký tự: Trở lại thời của các thiết bị đầu cuối 80x24 ...

BIÊN TẬP:

Để trả lời chính xác và kỹ lưỡng hơn cho câu hỏi, 80 ký tự là giới hạn "được chấp nhận phổ biến" hiện tại đối với độ rộng mã bên trong các trình soạn thảo vì các định dạng 80x24 và 80x25 là chế độ màn hình phổ biến nhất trong các thiết bị đầu cuối I / O và máy tính cá nhân ( VT52 - cảm ơn đến Sandman4).

Giới hạn này vẫn còn hiệu lực và IMHO bằng cách nào đó quan trọng vì hai lý do chính: hình học mặc định mà nhiều distro Linux gán cho cửa sổ terminal mới sinh ra vẫn là 80x24 và nhiều người sử dụng chúng như nó vốn có , mà không thay đổi kích thước. Hơn nữa, các lập trình viên kernel, thời gian thực và nhúng thường làm việc trong môi trường "không đầu" mà không có bất kỳ trình quản lý cửa sổ nào. Một lần nữa, độ phân giải màn hình mặc định thường là 80x24 (hoặc 80x25) và trong những tình huống này, thậm chí có thể khó thay đổi cài đặt mặc định này.

Vì vậy, nếu bạn là một kernel, lập trình viên thời gian thực hoặc nhúng, bạn nên ép buộc bản thân phải tôn trọng giới hạn này, chỉ cần "thân thiện" hơn với bất kỳ lập trình viên nào nên đọc mã của bạn.


8
Nhưng các thiết bị đầu cuối cũ rộng 80 ký tự vì lập trình
viên.stackexchange.com

9
-1 vì không đọc câu trả lời trước và cho liên kết vô dụng chỉ nói "Quay lại thời của các thiết bị đầu cuối 80x24, một trong những tác giả ban đầu của một trò chơi unix nổi tiếng thường khen ngợi rằng mã của ông được nhận xét tốt như thế nào. Ông nói rằng ông phải làm điều đó bởi vì anh ta luôn hút thuốc khi anh ta mã hóa và sẽ mất đi sự suy nghĩ khi màn hình cuộn lên. "
gnat

7
Xin lỗi vì sự chào đón của Avio, bạn vừa tình cờ nhảy vào một bài đăng đã trở nên cực kỳ phổ biến! Chúng tôi làm mọi thứ hơi khác so với phần còn lại của internet quanh đây. Chúng tôi ghét sự trùng lặp, trong số những thứ khác. Hãy đọc faq để bắt đầu, hy vọng sẽ gặp lại bạn!
fredley

6
+1 để biện minh cho downvote. +1 khác (nếu tôi có thể) vì giới hạn mã 80 ký tự là do thiết bị đầu cuối 80 cột và đến lượt nó có thể có hoặc không liên quan đến thẻ đột.
Sandman4

4
+1 để chống lại downvote của @ RossPatterson. Không có trích dẫn trên bất kỳ tài liệu tham khảo wikipedia nào để gán 80CPR cho các thẻ đục lỗ; điều đó có thể hoàn toàn ngẫu nhiên và một "sự thật" thường không được chấp nhận. Chỉ cho tôi một cuộc phỏng vấn với một trong những kỹ sư ban đầu đã suy đoán VT52 nơi anh ta nói rằng họ đang tuân theo tiêu chuẩn punchcard của IBM.
Jeremy Holovacs

52

Mặc dù có lẽ không phải là lý do ban đầu cho giới hạn 80 ký tự, một lý do mà nó được chấp nhận rộng rãi chỉ đơn giản là đọc công thái học :

  • Nếu các dòng quá ngắn, văn bản trở nên khó đọc vì bạn phải liên tục nhảy từ dòng này sang dòng tiếp theo trong khi đọc.
  • Nếu các dòng quá dài, việc nhảy dòng trở nên quá khó vì bạn "mất dòng" trong khi quay lại điểm bắt đầu của dòng tiếp theo (điều này có thể được giảm thiểu bằng cách có khoảng cách giữa các dòng lớn hơn, nhưng điều này cũng gây lãng phí không gian).

Điều này được biết đến rộng rãi và được chấp nhận trong typography. Đề xuất tiêu chuẩn (đối với văn bản trong sách, v.v.) là sử dụng nội dung nào đó trong vùng 40-90 ký tự trên mỗi dònglý tưởng nhất là khoảng 60 (xem ví dụ Wikipedia , Markus Itkonen: Kiểu chữ và khả năng đọc ).

Nếu bạn nhắm tới 60 ký tự trên mỗi dòng, giới hạn trên của bạn rõ ràng phải cao hơn một chút để phù hợp với biểu thức dài thường xuyên (và những thứ như điểm đánh dấu lề và số dòng), do đó, có giới hạn trên 70-80 có ý nghĩa.

Điều này có lẽ giải thích tại sao giới hạn 80 ký tự được chiếm bởi nhiều hệ thống khác.


1
Tôi thích câu trả lời này vì nó vượt xa công nghệ cụ thể và tránh sự theo đuổi của công nghệ gốc "thực sự".
kakyo

26

Một câu hỏi liên quan là "tại sao vẫn tồn tại 80 cột". Ngay cả các câu trả lời trên trang này cũng xấp xỉ chiều rộng đó. Tôi đồng ý với các lý do lịch sử cho 80 cột, nhưng câu hỏi là tại sao tiêu chuẩn vẫn tồn tại. Tôi sẽ yêu cầu khả năng đọc - cho văn xuôi và mã. Tâm trí của chúng ta chỉ có thể hấp thụ rất nhiều thông tin trong một mảnh. Tôi vẫn sử dụng điểm đánh dấu cột 80 trong trình soạn thảo mã của mình để nhắc nhở tôi khi một câu lệnh trở nên quá dài và tối nghĩa. Nó cũng để lại cho tôi nhiều bất động sản màn hình cho trình duyệt và các cửa sổ IDE hỗ trợ. Cột 80 sống lâu - như một hướng dẫn không phải là một quy tắc.


4
Tôi đã thấy chiều rộng tối đa 80 ký tự (xấp xỉ) được đề cập trong các cuộc thảo luận về kiểu chữ - rõ ràng nó thực sự có giúp đọc được, không gian đơn hay không.
nkorth

12

Một giới hạn độ dài dòng phổ biến khác trong những ngày có phông chữ cố định là 72 ký tự. Ví dụ: Mã Fortran, thư, tin tức.

Một lý do là các cột 73-80 của thẻ đục lỗ thường được dành cho một số sê-ri. Tại sao một số sê-ri? Nếu bạn đánh rơi một cỗ bài, bạn có thể nhặt các thẻ theo bất kỳ thứ tự nào, xếp các góc trên bên trái (luôn có đường cắt chéo) và sử dụng máy phân loại thẻ để lấy lại theo thứ tự.

Một lý do khác cho giới hạn 72 ký tự là các phông chữ phổ biến cao 10 điểm và rộng 6 điểm (1/12 "). Một trang rộng A4 hoặc 8,5" có thể chứa 72 ký tự trong một cột rộng 6 "và vẫn có chỗ cho lề trên một inch.


7

Cá nhân tôi dính vào "khoảng cột 80" cho đến cuối dòng vì xa hơn điều đó gây ra việc gói hoặc mất mã khi bạn in nó.

Cũng có di sản thẻ đục lỗ, nhưng tôi không nghĩ rằng máy in laser hoặc giấy 8,5x11 inch được thiết lập để tuân thủ các giới hạn thẻ đục lỗ.


Như tôi đề nghị trong câu trả lời của mình @CMike, tôi nghĩ rằng có thể chiều rộng của thẻ đục lỗ có liên quan đến kích thước của máy đánh chữ và do đó kích thước giấy (hoặc ngược lại).
Đánh dấu gian hàng

4

Cuộn trong máy in giấy có kích thước Chữ hoặc rộng 15 ..

Đó là máy in dòng 80 cps để sao chép mã hoặc báo cáo, và sau đó trên Epson hỗ trợ in ngưng tụ 132 cps (mã thoát \ 015 cho in ngưng tụ).


Đặc biệt là khi nó được viết (nhiều lần!) Trên trang này!
fredley

12
@Ross: bạn không nên hạ thấp bất cứ ai vì không biết gì về trang web hỏi đáp !
abatishchev

6
@abatishchev - nhưng câu trả lời đang được đề cập là trên trang này .
ChrisF

10
@abatishchev Trên thực tế, đó chính xác là ý tưởng của các trang web StackExchange. Câu trả lời "tốt" nên được đánh giá cao và câu trả lời "xấu" nên được hạ thấp, để đảm bảo rằng những độc giả tương lai không thể tự đánh giá có thể biết ý kiến ​​của cộng đồng về câu trả lời.
Ross Patterson

2
@abatishchev Không phải là bỏ phiếu cho câu trả lời mà bạn không thích, đó là về việc bỏ phiếu cho câu trả lời không hữu ích . Xem văn bản di chuột qua các nút biểu quyết.
Đánh dấu gian hàng

0

Một trong những lý do cho thẻ 80 cột có thể được liên kết với 'cú đấm tay' có thể được sử dụng trước các máy đục lỗ thẻ điện tử. Nó là cái mà tôi đã sử dụng vào đầu những năm 70 trên một trang web máy tính khung chính của Hệ thống ICL. Người ta phải đấm một phần ba? đấm dao trong xe ngựa cùng một lúc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.