前几天,我收到网友小龙的Email。
他想与我讨论一个问题:
"各种计算机语言的编码风格,有的建议源码每行的字符数(characters per line)不超过72个,还有的建议不超过80个,这是为什么?区别在哪里?怎么来的?"
我一下子就被问住了。
命令行状态下,终端窗口的显示宽度,默认是80个字符,这个我早就知道,但是并不清楚原因;至于72个字符,更是从未注意过。
幸好,世界上还有Wikipedia,我在里面找到了答案。
每行72个字符的限制,来源于打字机。上图是20世纪60年代初,非常流行的IBM公司生产的Selectric电动打字机。
当时,美国最通用的信笺大小是8.5英寸x11英寸(215.9 mm × 279.4 mm),叫做US Letter。打字的时候,左右两边至少要留出1英寸的页边距,因此每行的长度实际为6英寸。打字机使用等宽字体(monospaced)的情况下,每英寸可以打12个字符,就相当于一行72个字符。
早期,源码必须用打字机打出来阅读,所以有些语言就规定,每行不得超过72个字符。直到今天,RFC文档依然采用这个规定,因为它从诞生起就采用打字稿的形式。
20世纪70年代,显示器出现了。它的主要用途之一,是将打孔卡(punched card)的输入显示出来。当时,最流行的打孔卡是IBM公司生产的80栏打孔卡,每栏为一个字符,80栏就是80个字符。
上图是一张Fortran语言的源码填写单,一共有80栏,程序员在每一栏选择想要输入的字符,最多为80个字符。
然后,用机器自动生成打孔卡,在每栏选定的位置打一个孔。
计算机读取打孔卡以后,把每个孔转换为相应的字符。如果显示器每行显示80个字符,就正好与打孔卡一一对应,终端窗口的每行字符数(CPL)就这样确定下来了。
(完)
zython 说:
http://www.afandpa.org/paper.aspx?id=511
8" x 10.5" 和 8.5" x 11"长期共存,知道1980s才最终确认8.5" x 11"为标准尺寸。
阮兄把8.5" x 11" 作为解释,对不上,8-1x2=6才对
2011年10月23日 18:05 | # | 引用
Azhun 说:
这个东西都可以研究一番,佩服了。
2011年10月23日 18:30 | # | 引用
sohighthesky 说:
请问下付费为什么不直接使用支付宝的普通商品买卖呢?这样不是不用交1块钱了么?
2011年10月23日 18:51 | # | 引用
iSayme 说:
这个小知识点真是不错,有意思!
2011年10月23日 18:51 | # | 引用
piaoger 说:
"/r"与"/n"这种东西也有类似的故事,也是挺有意思的。
2011年10月23日 19:43 | # | 引用
阮一峰 说:
支付宝没有普通商品买卖,只有淘宝有。
谢谢指出,我还不知道呢。
综合这个情况来看,就是说每行72个字符,是一个比较保险的数字,在所有信纸上都能正常打字。
2011年10月23日 21:18 | # | 引用
猪头四 说:
我一直想问阮哥,你那么些详细的资料一般都是从什么渠道搜索或者查询二来啊?
2011年10月23日 23:12 | # | 引用
木 说:
请问PasswordGenViewController.m 前面那个atos命令具体用来转换什么呢
2011年10月24日 01:09 | # | 引用
过路菜鸟 说:
记得当时用单色显示器的时候,字符分辨率就是25行×80字。
2011年10月24日 09:08 | # | 引用
默默的倾听着 说:
就跟火车轨道的宽度一样,是最早由两匹马的屁股宽度决定的
2011年10月24日 10:42 | # | 引用
Magic 说:
其实这个问题阮兄还没有完全回答
1. US Letter为什么要设计成8.5英寸x11英寸?
2. IBM生产的punched card为什么要设计成80栏?
2011年10月24日 10:55 | # | 引用
zhuantou 说:
看到两条微博,咨询您能不能找找有没有做酒的流程,干脆自己做酒的了。
闲言碎语陈功微博:-白酒就别喝了,改喝葡萄酒吧。据说由于传统酿酒工艺制工期长、成本高,咱们的酒企早就纷纷选择新工艺勾兑白酒。几个白酒大省的情况是:“‘名酒’均出自于川原酒勾兑”。而纯粹意义上的原浆几乎是没有的。“因为纯粮酿造的原浆成本高且时间周期太长,没有几个厂家能耗得起那个时间。”
@马寅北京 : 一次饭局上,北京最大代理拉菲红酒公司老板酒酣时吐露:他有两艘远洋货轮,轮船被改造为造假酒的工厂,从法国批量买入低质红酒浆,船到公海后开始生产各年份的拉菲酒,到海关通过成品酒检验并完税后即可凭关单及食品检疫证明顺利进入北京各大商场,每瓶几万几十万不等。比地产暴利多了!
2011年10月24日 12:32 | # | 引用
llz 说:
第一个问题的答案:http://www.afandpa.org/paper.aspx?id=511
大意是说这是由起始的造纸术决定的(满足造纸工人操作的人体工学), 后来就是路径依赖
2011年10月24日 12:42 | # | 引用
Z 说:
$stty -a 可以看到columns 80
2011年10月24日 16:44 | # | 引用
lesliechu 说:
我订阅了阮先生的日志,感觉每一篇都写的很认真,对我帮助非常大,让我获得了很多新的或我无法接触的知识,表示感谢!
2011年12月19日 09:31 | # | 引用