เพราะเหตุใด 80 อักขระจึงถูกจำกัดความกว้างของมาตรฐานสำหรับความกว้างของรหัส


572

เหตุใด 80 อักขระจึงถูก จำกัด "มาตรฐาน" สำหรับความกว้างของรหัส ทำไม 80 และไม่ใช่ 79, 81 หรือ 100 ต้นกำเนิดของค่าเฉพาะนี้คืออะไร



14
โอ๊ะ! คุณไม่สามารถรอหนึ่งสัปดาห์ก่อนที่จะถาม? นี้จะได้รับคำถามประกวดชนะเลิศ
yannis

12
ก่อนที่ทุกคนคิดว่าการเพิ่มคำตอบอื่นคำถามนี้โปรดอ่านคำตอบที่ได้รับการยอมรับและคำตอบมาร์คบูธ คำถามเหล่านี้ตอบคำถามได้อย่างครอบคลุม หมัดเด็ดมาก่อน
ChrisF

4
ทำไมเรื่องไม่สำคัญชิ้นนี้มี 139 upvotes อยู่นอกเหนือฉัน ในขณะที่เกือบทุกคำถามอื่น ๆ (ดีหรือไม่ดี) ในหน้าด้านหน้ามีวิธีที่คะแนนโหวตน้อย เกณฑ์การลงคะแนนโดยรวมของเราเสียหรือไม่ :( (@fredley นี่ไม่ใช่คำวิจารณ์ของคุณ แต่เป็นชุมชนของเรา)
Andres F.

6
@AndresF เหตุผลที่โพสต์นี้ทำได้ดีก็เพราะว่ามีบางสิ่งที่ผู้คนจำนวนมากจะสนใจ มันใช้เวลาหนึ่งวันที่ด้านบนสุดของ supercollider และทำให้มันเป็นข่าว Hacker เป็นต้นมันอาจจะเป็นเรื่องไม่สำคัญเล็กน้อย แต่มันก็เป็นเนื้อหาที่ดี!
fredley

คำตอบ:


734

คุณสามารถขอบคุณ IBM punch cardสำหรับข้อ จำกัด นี้ - มี 80 คอลัมน์:

ไอบีเอ็มการ์ดเจาะ


64
หลังจาก teletypes ก่อนหน้านั้นและเทอร์มินัลวิดีโอหลังจากนั้นใช้ 80 คอลัมน์ (และ 132 คอลัมน์) เป็นความกว้างมาตรฐาน
LapTop006

262
ตอนนี้คำถามคือ: ทำไมบัตรเจาะ IBM มี 80 คอลัมน์?
Factor Mystic

139
@FactorMystic - ขนาดบัตรหมัดก็ขึ้นอยู่กับขนาดของสกุลเงินกลับมาในช่วงปลายทศวรรษที่ 1880 เมื่อ Hollerith ได้รับการออกแบบมาเพื่อช่วยให้พวกเขาด้วย1890 การสำรวจสำมะโนประชากร

56
การ์ดมีขนาดนั้นเพราะในปี 1890 CTR ต้องการนำผู้ให้บริการสกุลเงินกลับมาใช้ใหม่ (ดอลลาร์นั้นใหญ่กว่าเดิม) เพื่อพกบัตรข้อมูลสำมะโน
Al Biglan

89
@AlBiglan ทำไมสกุลเงินถึงมีขนาดนั้น
เฟรดลี

249

ในฐานะที่เป็นOdedกล่าวนี้มาตรฐานการเข้ารหัสที่พบบ่อยคือผลของไอบีเอ็ม 1928 80 คอลัมน์รูปแบบบัตรเจาะตั้งแต่มาตรฐานการเข้ารหัสหลายวันที่กลับไปช่วงเวลาที่โปรแกรมถูกเขียนบนบัตรหมัดหนึ่งบัตร / บรรทัดในเวลาและแม้กระทั่งการเปลี่ยนแปลง ในหน้าจอที่กว้างขึ้นไม่ได้เปลี่ยนความจริงที่ว่ารหัสนั้นยากที่จะอ่านให้กว้างขึ้น

จากหน้าวิกิพีเดียบนการ์ดเจาะ :

ผลกระทบทางวัฒนธรรม

  • มรดกของรูปแบบการ์ดเจาะคอลัมน์ 80 คือการแสดง 80 อักขระต่อแถวเป็นตัวเลือกทั่วไปในการออกแบบเทอร์มินัลที่อิงอักขระ ตั้งแต่เดือนพฤศจิกายน 2011 ค่าเริ่มต้นของอินเตอร์เฟสอักขระบางตัวเช่นความกว้างของหน้าต่างพร้อมรับคำสั่งใน Microsoft Windows จะยังคงอยู่ที่ 80 คอลัมน์และบางรูปแบบไฟล์เช่น FITS ยังคงใช้อิมเมจการ์ด 80 ตัวอักษร

ตอนนี้คำถามคือทำไมไอบีเอ็มจึงเลือก 80 บัตรคอลัมน์ในปี 1928 เมื่อHerman Hollerithเคยใช้บัตรคอลัมน์ 24 และ 45 ?

แม้ว่าฉันจะไม่พบคำตอบที่ชัดเจน แต่ฉันสงสัยว่าตัวเลือกนั้นขึ้นอยู่กับจำนวนอักขระโดยทั่วไปต่อบรรทัดของเครื่องพิมพ์ดีดในแต่ละครั้ง

เครื่องพิมพ์ดีดประวัติศาสตร์ส่วนใหญ่ที่ฉันเคยเห็นมีความกว้างแท่นวางประมาณ 9 นิ้วซึ่งสอดคล้องกับมาตรฐานขนาดกระดาษถึงประมาณ 8 "-8.5" กว้าง (ดูทำไมขนาดกระดาษมาตรฐานใน US 8 ½ "x 11 คืออะไร "?และประวัติมาตรฐาน ISO216 Aกระดาษมาตรฐาน )

เพิ่มระยะห่างเครื่องพิมพ์ดีดโดยทั่วไป 10-12 ตัวอักษรต่อนิ้วและจะนำไปสู่เอกสารที่มีความกว้างระหว่าง 72 ถึง 90 ตัวอักษรขึ้นอยู่กับขนาดของระยะขอบ

ดังนั้น 80 ตัวอักษรต่อบรรทัดจะแสดงถึงการประนีประนอมที่ดีระหว่างระยะห่างระหว่างรู (สี่เหลี่ยมเล็ก ๆ กับรูกลมขนาดใหญ่) และความยาวบรรทัดขณะที่ยังคงขนาดการ์ดเดิมไว้


อนึ่งไม่ใช่ทุกที่ที่ระบุความกว้างของบรรทัด 80 อักขระในมาตรฐานการเข้ารหัส ที่ผมทำงานมีขีด จำกัด 132 ตัวอักษรซึ่งสอดคล้องกับความกว้างของทั่วไปกว้าง เครื่องพิมพ์บรรทัดของสมัยก่อน, ภูมิทัศน์ 12 พอยต์ A4 พิมพ์ออกและสายทั่วไปความกว้างที่เหลืออยู่ในหน้าต่างบรรณาธิการของ Eclipse (maximized บนหน้าจอ 1920x1200 ก) หลังจากที่แพคเกจ Explorer และ มุมมองเค้าร่างถูกนำมาพิจารณา

ถึงกระนั้นฉันยังคงต้องการรหัสที่มีความกว้าง 80 ตัวอักษรเพราะมันทำให้ง่ายขึ้นในการเปรียบเทียบการแก้ไขสามแบบของไฟล์แบบเคียงข้างกันโดยไม่มีการเลื่อนไปด้านข้าง (แย่เสมอ) หรือการตัดบรรทัด (ซึ่งทำลายการจัดรูปแบบโค้ด) ด้วยรหัสตัวอักษร 80 ตัวคุณจะต้องมีหน้าจอกว้าง 240 ตัวอักษร (1920 พิกเซลที่ 8 พิกเซลต่อตัวอักษร) เพื่อดูการผสานสามทางแบบเต็ม(บรรพบุรุษร่วมกันสาขาท้องถิ่นและสาขาระยะไกล) ได้อย่างสะดวกสบายบนหน้าจอเดียว


2
เพื่อไม่ให้เริ่มการเก็งกำไรอีกครั้ง แต่การ์ดของ Hollerith มีรูกลมไม่ใช่สี่เหลี่ยมของ IBM 5081 และคณะ และการโจมตีของไอบีเอ็มในภายหลังในรูปแบบของระบบ / 3 มี 96 รูวงกลมใน 3 แถบแนวนอนของคอลัมน์
Ross Patterson

9
เหตุผลที่ดีในการพยายามใช้ 80 อักขระต่อไปแม้ในหน้าจอที่ใหญ่ขึ้นคือโปรแกรมเมอร์จำนวนมากต้องการใช้หน้าต่างเทอร์มินัลเล็ก ๆ (หรือแม้กระทั่ง IDE) แทนที่จะต้องทำให้เต็มหน้าจอตลอดเวลา
rkulla

4
@rkulla ดังนั้นเราจะกำหนดจำนวนตัวอักษร 80 ตัวต่อไปอีกกี่ทศวรรษ? แน่นอนว่าสำหรับบางภาษาเช่น C ที่มีตัวระบุแบบสั้นนั้นใช้ได้ดี แต่สำหรับคนอื่นเช่น C # ที่มีตัวระบุแบบยาวอาจเป็นเรื่องที่เจ็บปวด โชคดีที่เรากำหนดจำนวน จำกัด 132 ตัวซึ่งตอนนี้ฉันอยู่ แต่ฉันเคยรำคาญ 80 มากโดยเฉพาะใน Python
พื้นฐาน

5
@Basic มีข้อโต้แย้งว่าหากคุณไม่สามารถทำงานได้ภายในขีด จำกัด บรรทัด 80 ตัวอักษรตัวระบุของคุณจะverbose มากเกินไปหรือคุณพยายามทำมากเกินไปในหนึ่งบรรทัด คนส่วนใหญ่คุ้นเคยกับคอลัมน์ที่แคบกว่าของเส้นมากกว่าเส้นที่ยาวมากเนื่องจากดวงตาและสมองของเราได้รับการฝึกฝนมานานหลายปีผ่านหนังสือหนังสือพิมพ์และหน้าเว็บที่มีความกว้างของคอลัมน์ (เช่นนี้) ซึ่งหมายความว่าเราสแกนยาก และเข้าใจบรรทัดที่ยาวมาก
Mark Booth

5
@ MarkBooth ฉันจะไม่ลากมันออกมามากเกินไปเพราะมันเป็นปัญหาทางศาสนาเล็กน้อย แต่สิ่งที่ PEP8 ถูกตั้งค่าสถานะเพราะมันยาวเกินไปก็คือ ... `(8 ช่องว่าง) คืน HttpResponse (JsonLib (). encode (Ret) , content_type = "application / json") `และใช่มันอาจแบ่งออกเป็นหลายบรรทัด แต่มันกระจายอยู่ทั่วตัวควบคุมต่าง ๆ และดูเหมือนว่ามันไม่คุ้มค่าที่จะแยกออกยกเว้นการประชุมตามมาตรฐาน 80-char
พื้นฐาน

59

ฉันจะบอกว่าเป็นเพราะเทอร์มินัลเก่า (ส่วนใหญ่) ขนาด 80x24 ตัวอักษร: ย้อนกลับไปในเทอร์มินัล 80x24 ...

แก้ไข:

เพื่อตอบคำถามให้ละเอียดและแม่นยำยิ่งขึ้น 80 อักขระเป็นขีด จำกัด "ยอมรับสากล" ในปัจจุบันสำหรับความกว้างของโค้ดภายในตัวแก้ไขเนื่องจากรูปแบบ 80x24 และ 80x25 เป็นโหมดหน้าจอที่พบบ่อยที่สุดในเทอร์มินัล I / O ยุคแรกและคอมพิวเตอร์ส่วนบุคคล ( VT52 - ขอบคุณ ถึง Sandman4)

ข้อ จำกัด นี้ยังคงเป็น IMHO ที่ถูกต้องและมีความสำคัญอย่างใดสำหรับสองเหตุผลหลักเรขาคณิตเริ่มต้นที่หลาย Linux distros กำหนดให้ Windows Terminal กลับกลายใหม่ยังคงเป็น 80x24 และคนจำนวนมากใช้พวกเขาตามที่เป็นโดยไม่ต้องปรับขนาด นอกจากนี้เคอร์เนลโปรแกรมเมอร์แบบเรียลไทม์และฝังตัวมักจะทำงานในสภาพแวดล้อม "หัวขาด" โดยไม่มีตัวจัดการหน้าต่างใด ๆ อีกครั้งความละเอียดหน้าจอเริ่มต้นมักจะ 80x24 (หรือ 80x25) และในสถานการณ์เหล่านี้อาจเป็นการยากที่จะเปลี่ยนการตั้งค่าเริ่มต้นนี้

ดังนั้นหากคุณเป็นเคอร์เนลโปรแกรมเมอร์แบบเรียลไทม์หรือฝังตัวคุณควรบังคับตัวเองให้เคารพขีด จำกัด นี้เพื่อให้ "เป็นมิตร" ต่อโปรแกรมเมอร์ที่ควรอ่านโค้ดของคุณ


8
แต่ขั้วเก่า 80 ตัวอักษรกว้างเพราะprogrammers.stackexchange.com/a/148678/4767
Oded

9
-1 สำหรับการไม่อ่านคำตอบก่อนหน้าและสำหรับลิงค์ไร้ประโยชน์ที่บอกว่า"ย้อนกลับไปในยุคเทอร์มินัล 80x24 หนึ่งในผู้เขียนดั้งเดิมของเกมยูนิกซ์ยอดนิยมมักได้รับคำชมว่าโค้ดของเขาดีแค่ไหน ทำเช่นนั้นเพราะเขารมควันเสมอเมื่อเขาเขียนและจะสูญเสียความคิดของเขาเมื่อหน้าจอเลื่อน "
gnat

7
ขออภัยสำหรับการต้อนรับ Avio คุณเพิ่งเกิดขึ้นในการโพสต์ที่ได้รับความนิยมอย่างมาก! เราทำสิ่งต่าง ๆ เล็กน้อยจากส่วนที่เหลือของอินเทอร์เน็ตรอบ ๆ ที่นี่ เราเกลียดการซ้ำซ้อนเหนือสิ่งอื่นใด อ่านคำถามที่พบบ่อยเพื่อเริ่มต้นหวังว่าจะได้พบคุณอีกครั้ง!
fredley

6
+1 เพื่อแสดงว่า downvote +1 อีก (ถ้าฉันทำได้) เพราะความยาว 80 ตัวอักษรสำหรับรหัสนั้นเป็นเพราะเทอร์มินัล 80 คอลัมน์และในทางกลับกันอาจหรืออาจไม่เกี่ยวข้องกับ punchcard
Sandman4

4
+1 เพื่อต่อต้าน downvote @ RossPatterson ของ ไม่มีการอ้างอิงใด ๆ เกี่ยวกับการอ้างอิงวิกิพีเดียในการระบุคุณลักษณะ 80CPR ไปยัง punchcards; นั่นอาจเป็นเรื่องบังเอิญอย่างสมบูรณ์และมักจะยอมรับ "ความจริง" ที่ไม่เป็นความจริง แสดงบทสัมภาษณ์กับหนึ่งในวิศวกรดั้งเดิมที่ระบุ VT52 ซึ่งเขาบอกว่าพวกเขาทำตามมาตรฐานของ IBM punchcard
Jeremy Holovacs

52

ในขณะที่อาจไม่ใช่เหตุผลดั้งเดิมของการ จำกัด จำนวนอักขระ 80 ตัว แต่เหตุผลที่เป็นที่ยอมรับอย่างกว้างขวางก็คือการอ่านการยศาสตร์ :

  • หากบรรทัดสั้นเกินไปข้อความจะอ่านยากเนื่องจากคุณต้องข้ามจากบรรทัดหนึ่งไปยังบรรทัดถัดไปอย่างต่อเนื่องในขณะที่อ่าน
  • หากบรรทัดยาวเกินไปการกระโดดข้ามเส้นจะยากเกินไปเนื่องจากคุณ "เสียเส้น" ในขณะที่ย้อนกลับไปที่จุดเริ่มต้นของบรรทัดถัดไป (ซึ่งสามารถลดลงได้โดยการเว้นวรรคระหว่างบรรทัดที่ใหญ่กว่า

เรื่องนี้เป็นที่รู้จักและยอมรับในวิชาการพิมพ์ คำแนะนำมาตรฐาน (สำหรับข้อความในหนังสือ ฯลฯ ) คือการใช้บางสิ่งบางอย่างในพื้นที่40-90 ตัวอักษรต่อบรรทัดและนึกคิดประมาณ 60 (ดูเช่นWikipedia , Markus Itkonen: การพิมพ์และการอ่าน )

หากคุณตั้งเป้าหมายไว้ที่ 60 ตัวอักษรต่อบรรทัดขีด จำกัด สูงสุดของคุณจะต้องสูงขึ้นเล็กน้อยเพื่อรองรับการแสดงออกที่ยาวเป็นครั้งคราว

สิ่งนี้อาจอธิบายได้ว่าทำไมระบบ 80 หลายตัวจึงถูกควบคุม


1
ฉันรักคำตอบนี้เพราะมันเหนือกว่าเทคโนโลยีเฉพาะและหลีกเลี่ยงการแสวงหาเทคโนโลยีดั้งเดิม "ของจริง"
kakyo

26

คำถามที่เกี่ยวข้องคือ "เหตุใดจึงมีคอลัมน์ 80 คอลัมน์" แม้แต่การตอบกลับในหน้านี้ก็ประมาณความกว้างนั้น ฉันเห็นด้วยกับเหตุผลทางประวัติศาสตร์สำหรับ 80 คอลัมน์ แต่คำถามคือทำไมมาตรฐานยังคงอยู่ ฉันจะเรียกร้องให้อ่านได้ - สำหรับร้อยแก้วและรหัส จิตใจของเราสามารถดูดซับข้อมูลได้มากในชิ้นเดียว ฉันยังคงใช้ตัวทำเครื่องหมายคอลัมน์ 80 ในโปรแกรมแก้ไขรหัสของฉันเพื่อเตือนฉันเมื่อคำสั่งยาวเกินไปและคลุมเครือ มันทำให้ฉันมีหน้าจออสังหาริมทรัพย์มากมายสำหรับเบราว์เซอร์และหน้าต่าง IDE ที่รองรับ Long live 80 column - ตามคำแนะนำไม่ใช่กฎ


4
ฉันเคยเห็นความกว้างสูงสุด 80 ตัวอักษร (โดยประมาณ) ที่กล่าวถึงในการอภิปรายเกี่ยวกับวิชาการพิมพ์ - เห็นได้ชัดว่ามันช่วยให้อ่านได้ง่ายอวกาศหรือไม่
nkorth

12

ขีดจำกัดความยาวบรรทัดทั่วไปอื่นในวันที่มีแบบอักษรพิชช์คือ 72 ตัวอักษร ตัวอย่าง: รหัส Fortran, จดหมาย, ข่าว

เหตุผลหนึ่งคือคอลัมน์ 73-80 ของบัตรเจาะมักจะถูกสงวนไว้สำหรับหมายเลขซีเรียล ทำไมต้องเป็นหมายเลขซีเรียล หากคุณทิ้งการ์ดเด็คคุณสามารถเลือกไพ่ในลำดับใดก็ได้จัดเรียงมุมบนซ้าย (ซึ่งมักจะมีการตัดในแนวทแยง) และใช้เครื่องคัดแยกไพ่เพื่อให้การ์ดกลับมาตามลำดับ

อีกเหตุผลหนึ่งสำหรับการ จำกัด 72 ตัวอักษรคือแบบอักษรทั่วไปคือ 10 จุดสูงและ 6 คะแนน (1/12 ") กว้างหน้า A4 หรือ 8.5" สามารถถือ 72 ตัวอักษรในคอลัมน์กว้าง 6 "และยังมีห้องพักสำหรับระยะขอบ กว่านิ้ว


7

ฉันติดอยู่ที่ "ประมาณคอลัมน์ 80" โดยส่วนตัวสำหรับการวางสายเพราะยิ่งไปกว่านั้นจะทำให้เกิดการห่อหรือรหัสที่หายไปเมื่อคุณพิมพ์

มีเครื่องตอกบัตรรุ่นเก่าเช่นกัน แต่ฉันไม่คิดว่าเครื่องพิมพ์เลเซอร์หรือกระดาษ 8.5x11 นิ้วถูกตั้งค่าให้สอดคล้องกับข้อ จำกัด ของบัตรเจาะ


ตามที่ฉันแนะนำในคำตอบ @ CMike ของฉันฉันคิดว่าเป็นไปได้ว่าความกว้างของบัตรเจาะมีความสัมพันธ์กับขนาดของแผ่นพิมพ์ดีดและขนาดกระดาษ (หรือในทางกลับกัน)
Mark Booth

4

เลื่อนกระดาษในเครื่องพิมพ์มีขนาดตัวอักษรหรือกว้าง 15 "

มันเป็นเครื่องพิมพ์บรรทัด 80 cps สำหรับการทำสำเนารหัสหรือรายงานและในภายหลังบน Epson รองรับ 132 cps การพิมพ์แบบย่อ (รหัส escape \ 015 สำหรับการพิมพ์แบบย่อ)


โดยเฉพาะอย่างยิ่งเมื่อมันถูกเขียน (หลายครั้ง!) ในหน้านี้!
fredley

12
@Ross: คุณไม่ควรลงคะแนนใครเพราะไม่รู้ว่ามีอะไรในเว็บไซต์ถาม & ตอบ !
abatishchev

6
@abatishchev - แต่คำตอบที่อ้างถึงอยู่ในหน้านี้
ChrisF

10
@abatishchev จริงๆแล้วมันเป็นความคิดของเว็บไซต์ StackExchange คำตอบ "ดี" ควรได้รับการยกระดับขึ้นและคำตอบที่ "ไม่ดี" ควรถูกลดระดับลงเพื่อให้แน่ใจว่าผู้อ่านในอนาคตที่อาจไม่สามารถตัดสินด้วยตนเองสามารถทราบความคิดเห็นของชุมชนเกี่ยวกับคำตอบ
Ross Patterson

2
@abatishchev มันไม่ได้เกี่ยวกับการลงคะแนนคำตอบที่คุณไม่ชอบมันเป็นเรื่องของการออกเสียงลงคะแนนคำตอบที่ไม่เป็นประโยชน์ ดูข้อความเลื่อนเมาส์ไปเหนือปุ่มลงคะแนน
Mark Booth

0

หนึ่งในเหตุผลสำหรับการ์ดคอลัมน์ 80 อาจเกี่ยวข้องกับ 'หมัดมือ' ซึ่งอาจมีการใช้ก่อนที่เครื่องหมัดบัตรอิเล็กทรอนิกส์ มันเป็นสิ่งที่ฉันใช้ในช่วงต้นยุค 70 ในเว็บไซต์คอมพิวเตอร์เฟรมหลักระบบ 4-50 เราต้องต่อยส่วนที่สาม? หมัดมีดในสายการบินในเวลาเดียวกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.