UNIX传奇

对于计算机从业者来说,Unix 的重要性怎么说都不为过,这本书从内部视角详细阐述了 Unix 的诞生过程。

作者本身也非常值得一提,如今 80 岁的他,前几天还在为 AWK 提交代码,与丹尼斯·里奇共同创作了「C 程序设计语言」,参与了 Unix 的前期开发,也是 Unix 的命名者。

Unix 诞生于贝尔实验室,贝尔实验室当时的氛围是怎样的,Ken Thompson 如何在媳妇儿探望公婆的三周时间里写出了一个操作系统,Unix 出现之前大家是如何编程的,Unix 的设计哲学等等,书里都有提及,如果想了解这段历史,这本书会给你答案。

回头看来,我认为,⻉尔实验室合理地安排了空间使用。独立办公室虽然比开放式区域成本更高,但也给了员工安静平和的空间,让员工可以不受旁边没完没了的噪声影响,专注于工作,还能够保存图书、文件,关上⻔就能沉思或私聊。

如今,我已在开放式区域工作了足够⻓时间,起码对我而言,开放式工作区不利于集中注意力。⻉尔实验室既提供独立办公室,又为群体提供共享空间,这套机制非常棒。

直接申请买机器的企图失败了,但还有替代办法。⻉尔实验室是巨大而富有成效的科研机构,产出大量专利申请。在那个时期,它几乎平均每天被授予一项专利。专利申请是文本文档,但有一些严苛的格式要求,例如要标出行号。既有的计算机系统无法应对这些奇怪的规则,所以专利部⻔计划向一间公司购买专⻔硬件来处理。

乔·奥桑纳提议,专利部⻔可以用 PDP-11 准备专利申请材料,Unix 小组负责编写所需软件,包括能以合适格式输出申请书的文本格式化程序在内。而且,不会有人拿这台机器来做操作系统。这套说辞敷衍了管理层仅剩的反对意⻅。

交易达成,买了一台 PDP-11。肯和丹尼斯很快就将 PDP-7 上的 Unix 移植过来。PDP-11 硬件能力有限,只有 24 KB 主存储器和半兆字节磁盘空间。操作系统用了 16 KB 内存,剩下 8KB 给用戶程序。

“在某一时刻,我发现离实现一个操作系统仅有 3 周之遥了。”他需要写三个程序,每周写一个:用来创建代码的编辑器;将代码转换为 PDP-7 能运行的机器语言的汇编器;再加上“内核的外层——操作系统⻬活了”。

正在那时,肯的太太休了 3 周假,带着一岁大的儿子去加利福尼亚探望公婆,这样肯就有了 3 周不受打扰的工作时间。正如他在 2019 年一次采访中所说,“一周,一周,再一周,我们就有了 Unix。”无论以何种方式来度量,这都体现了真正的软件生产力。

Multics 本该前途无量,但其很快就陷入困境。回头看来,它算是第二系统效应(second system effect)的受害者。所谓第二系统效应,意思是在首个系统(如 CTSS)创建成功后,打算创建一个新系统,修正旧系统的遗留问题,还要添加每个人期望的新特性,结果常常是塞了太多不同东西进去,最终得到过于复杂的系统。

Multics 最终还是完成了,起码是宣称成功了。直至 2000 年,它虽然没被广泛接受,但仍然持续得到支持和使用。很多好点子滥觞于 Multics,但它最持久的贡献却完全没人预料到:它影响了一个叫 Unix 的小操作系统,这个小系统诞生的部分原因是想摈弃 Multics 的复杂架构。

穿孔卡用高品质硬纸制成,每张卡片能保存最多 80 个字符,容纳一行程序的内容。6 行 C 语言程序得用 6 张卡片,如果要修改代码,就得替换卡片。

1969 年,我正式加入⻉尔实验室时,没人告知我具体要做什么事。惯例如此:把你介绍给其他人,让你随意晃荡,去寻找自己的研究课题和协作者。回想起来,这似乎是下⻢威,但我不记得有什么麻烦。周边有那么多新鲜事在发生,想找点儿东西来研究,或者找个人来合作,根本不成问题。两个夏天之后,我已经认识所有人,也了解了一些项目情况。

⻉尔实验室向来缺乏明确的管理层指示。1127 中心的项目不由管理层指派,而是自下而上,由对某个课题感兴趣的人员自主成立项目组。⻉尔实验室的其他部⻔也是如此:如果我参与了某个开发组,也许会“利诱”科研同事也来参加,不过他们得自愿加入。

迪克无时无刻不在深思自己在做什么,为什么要这么做。他常说“算以获识,非算以得数”,他甚至有一条(用中文)写着这句话的领带。他很早就认为,电子计算将在⻉尔实验室的工作中占到一半比例。同事们都不这么认为,但很快他的预测就成真了。他常说,周五下午宜哲思,所以他每逢这个时间就安坐思考,但也随时欢迎我这样的访客。

1967 年实习时,我的办公室位于 2 号楼 5 层 8 号梯旁。上班第一天,我坐在办公室里(那些连实习生都有自己办公室的好日子啊),琢磨着该做些什么。上午 11 点,有个年纪略⻓的家伙出现在⻔口,说:“嗨,我是 Dick。走,吃午饭去。”

我没听清楚他姓什么。不过我想,行,为什么不呢?那顿午饭怎么吃的我完全不记得了,只记得饭后那位迪克某某就去了其他地方。我沿着走廊找到他办公室⻔上的名牌,上面写着“Richard Hamming”!这位和善的邻居原来是一位名人。他是纠错码的发明者,也是我选修过的一⻔数值分析课所用教材的作者。

作为规管制度的一部分,AT&T 将一小部分营收拨付给⻉尔实验室,专用于改进通信服务。

持续的资金投入是研究工作的关键保障。这意味着 AT&T 能布局⻓远,⻉尔实验室的研究员们也能自由探索那些未必有短期回报,甚至可能永无回报的领域。

AT&T,即美国电话电报公司(American Telephone and Telegraph Company),由分布于美国各地的多个当地电话公司组合而成。在其发展历史的早期阶段,AT&T 意识到,它需要一个研究机构,系统解决在建设全国电话系统时遇到的科学和工程难题。1925 年,AT&T 创办研发子公司⻉尔电话实验室(Bell Telephone Laboratories),意在解决这些难题。该机构通常被简称为⻉尔实验室(Bell Labs)或 BTL,有时甚至只是“实验室”,但电话系统始终是其关注的重点。