专栏首页阮一峰的网络日志每行字符数(CPL)的起源

每行字符数(CPL)的起源

前几天,我收到网友小龙的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)就这样确定下来了。

(完)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 全文搜索引擎 Elasticsearch 入门教程

    全文搜索属于最常见的需求,开源的 Elasticsearch (以下简称 Elastic)是目前全文搜索引擎的首选。 它可以快速地储存、搜索和分析海量数据。维基...

    ruanyf
  • 12种不宜使用的Javascript语法

    这几天,我在读《Javascript语言精粹》。 这本书很薄,100多页,正好假日里翻翻。 该书的作者是Douglas Crockford,他是目前世界上最精通...

    ruanyf
  • Usenet下载教程(高级篇)

    上个星期,我翻译了一篇介绍Usenet的文章。今天,我将剩余的部分写完。 (接前文) 8. 第6节介绍了最基本的下载方法: 1) 选择讨论组(groups);...

    ruanyf
  • Linux(RHEL7及CentOS7)下glibc版MySQL5.7.20的安装

    版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢

    耕耘实录
  • golang之切片与排序

    排序操作在sort包中,sort.Ints对整数进行排序,sort.Strings对字符串进行排序,sort.Float64对浮点数进行排序

    超蛋lhy
  • MySQL DBA如何利用strace/pstack/gdb来定位问题

    strace是Linux环境下的一款程序调试工具,用来监察一个应用程序所使用的系统调用。 Strace是一个简单的跟踪系统调用执行的工具。在其最简单的形式中,它...

    老叶茶馆
  • CentOS 7.2 Yum安装MySQL 5.6

    版权声明:本文为木偶人shaon原创文章,转载请注明原文地址,非常感谢。 https://b...

    shaonbean
  • 怎么让用一行代码实现页面的定时强制刷新?脚本刷流量再也不用愁了!

    要实现网页的强制刷新有很多种方式,这里我们引用一种较为常见同时也很简洁的方法,即利用JQuery框架实现。 核心代码为:

    易兮科技
  • 技术派:谁说API网关只能集成REST APIs?

    魏新宇
  • Linux CentOS7 (Windows)系统安装 MySQL

    优秀博客: https://blog.csdn.net/jubincn/article/details/6725582 http://www.runoob....

    zoro

扫码关注云+社区

领取腾讯云代金券