每行字符数(CPL)的起源

jopen 13年前
     前几天,我收到网友小龙的 Email。    <p> 他想与我讨论一个问题:</p>    <blockquote>     <p><strong>"各种计算机语言的编码风格,有的建议源码每行的字符数(characters per line)不超过72个,还有的建议不超过80个,这是为什么?区别在哪里?怎么来的?"</strong></p>    </blockquote>    <p> 我一下子就被问住了。</p>    <p style="text-align:center;"><img alt="" src="https://simg.open-open.com/show/daf35c2e7363f92fa808db3da92ba42a.jpg" /></p>    <p> 命令行状态下,终端窗口的显示宽度,默认是80个字符,这个我早就知道,但是并不清楚原因;至于72个字符,更是从未注意过。</p>    <p> 幸好,世界上还有 Wikipedia,我在里面找到了<a href="/misc/goto?guid=4958195343027055561" target="_blank">答案</a>。</p>    <p style="text-align:center;"><img alt="" src="https://simg.open-open.com/show/7cd7a656d160074362a7179a566f432f.jpg" /></p>    <p> 每行72个字符的限制,来源于打字机。上图是20世纪60年代初,非常流行的 IBM 公司生产的 <a href="/misc/goto?guid=4958195343948601718" target="_blank">Selectric</a> 电动打字机。</p>    <p style="text-align:center;"><img alt="" src="https://simg.open-open.com/show/02e0d51121f9ef344da89f72e5cf0077.jpg" /></p>    <p> 当时,美国最通用的信笺大小是8.5英寸 x11 英寸(215.9 mm × 279.4 mm),叫做 <a href="/misc/goto?guid=4958195344694435021" target="_blank">US Letter</a>。打字的时候,左右两边至少要留出1英寸的页边距,因此每行的长度实际为6英寸。打字机使用等宽字体(monospaced)的情况下,每英寸可以打12个字符,就相当于一行72个字符。</p>    <p style="text-align:center;"><img alt="" src="https://simg.open-open.com/show/55032dec132afa22a88648dfb89d554b.jpg" /></p>    <p> 早期,源码必须用打字机打出来阅读,所以有些语言就规定,每行不得超过72个字符。直到今天,<a href="/misc/goto?guid=4958195345433244722" target="_blank">RFC</a> 文档依然采用这个规定,因为它从诞生起就采用打字稿的形式。</p>    <p style="text-align:center;"><img alt="" src="https://simg.open-open.com/show/810debc1701358ab5c94ab9f8b83d97a.jpg" /></p>    <p> 20世纪70年代,显示器出现了。它的主要用途之一,是将<a href="/misc/goto?guid=4958195346169236573" target="_blank">打孔卡</a>(punched card)的输入显示出来。当时,最流行的打孔卡是 IBM 公司生产的80栏打孔卡,每栏为一个字符,80栏就是80个字符。</p>    <p style="text-align:center;"><img alt="" src="https://simg.open-open.com/show/8fbfe2458dccd0efe55c54d9308dc26e.jpg" /></p>    <p> 上图是一张 Fortran 语言的源码填写单,一共有80栏,程序员在每一栏选择想要输入的字符,最多为80个字符。</p>    <p style="text-align:center;"><img alt="" src="https://simg.open-open.com/show/2186def53e17e4eef8e75b95e97f66c7.jpg" /></p>    <p> 然后,用机器自动生成打孔卡,在每栏选定的位置打一个孔。</p>    <p> 计算机读取打孔卡以后,把每个孔转换为相应的字符。如果显示器每行显示80个字符,就正好与打孔卡一一对应,终端窗口的每行字符数(CPL)就这样确定下来了。<br /> <br /> 来自: <a id="link_source2" href="/misc/goto?guid=4958195346910944477" target="_blank">阮一峰的网络日志</a></p>