从伯克利到贝尔实验室
查看原文 08:24在 Vintage Computer Festival East,Brian Kernighan 采访 Ken Thompson,话题包括 Unix、早期工具和计算机国际象棋。两人在贝尔实验室共事多年,办公室就在走廊两侧。
Thompson 回忆,在伯克利读书时,学校的主计算机午夜停机后,他可以拿钥匙进去,一直用到早上八点。他说自己“喜欢计算机”,工作十分投入,却没有明确的职业目标。一位来自贝尔实验室的老师帮他进入研究生院;他说自己当初没有申请,因为觉得能力不够。
后来贝尔实验室邀请他面试,他最初拒绝了:他不想进入商业机构工作,也觉得不该白拿对方的旅费。最后他同意去看看,但事先声明自己的答案会是“不”。走进研究部门的走廊时,他发现门上的名字自己都认识。随后他沿美国东海岸拜访朋友,录用通知追到了旅途中的一站,他重新考虑后接受了。
Multics 之后,他想做一个更小的系统
查看原文 17:06在贝尔实验室,Thompson 参与了 MIT、贝尔实验室和通用电气合作的分时系统 Multics。他回忆,这个项目规模庞大、设计过度;自己虽然在做编程工作,造出的却不是他想用的系统。贝尔实验室最终退出,管理层也不愿再资助操作系统项目。
他找到一台原本用于工程工作的 PDP-7,用它做实验,其中包括一个太空游戏。他还对机器的磁盘产生兴趣,写了一个磁盘调度算法。为了在负载下测试它,他开始编写一些程序给磁盘安排工作。
PDP-7 上的三个星期
查看原文 21:27程序写着写着,Thompson 意识到,自己离一个操作系统大约只差三个星期:需要一个编辑器来写代码、一个汇编器把代码变成可运行的形式,还需要一个小内核。恰好他的妻子带着年幼的孩子去加州探亲,三周后才回来。他留下来,每周完成其中一项:“一个星期,一个星期,一个星期,我们就有了 Unix。”
这是 Thompson 对起点的简要回忆,并不是说完整的现代 Unix 在三周内建成。他描述的是一台速度很慢、只有两个终端的小系统。Dennis Ritchie、Doug McIlroy 和 Robert Morris 都是早期用户。
一份专利文书提案带来了新机器
查看原文 24:48团队曾申请一台 PDP-10 来运行 Unix,但被拒绝。Thompson 回忆,Joe Ossanna 随后提出了另一种用途:专利部门需要按特定格式和编号要求处理文件。团队表示自己可以完成这项工作,还能节省开支。
他们获得了一台 PDP-11,将 Unix 移植过去,并开发文书格式化工具。白天是专利部门的工作人员使用机器,研究人员晚上再用。Thompson 补充说,白天他们会避免做有风险的工作,因为机器缺乏保护,可能崩溃。
管道改变了工具的组合方式
查看原文 30:41McIlroy 曾提出把程序连接起来。Thompson 说,自己在 PDP-7 上的第一次尝试让相互配合的进程通信,但接口不顺手,最终没有人使用。他担心,在一般性的进程网络中,队列可能不断增长或耗空,也没想出这种设计能用于什么实际程序。
后来,他想到了管道。Unix 已经支持输入输出重定向,于是他在操作系统里加入这一机制,再通过 shell 尝试。他和 Ritchie 随后修改了现有工具,让它们成为过滤器:读入、处理、输出,不再让状态信息妨碍程序之间传递数据。
一次实验将计算器接到数字转文字的程序,再接到语音合成器。Kernighan 记得当时大家都忙着发现各种组合。Thompson 说,那是“原本不该出现在同一间房里的东西”被连接到了一起。
Grep 原本就放在 Thompson 的目录里
查看原文 35:34Kernighan 问起 grep:这个程序从 20 世纪 70 年代初就一直有人使用。Thompson 说,自己早已写好它,只是放在个人目录里。他不想独自决定,自己写的哪些程序应该进入共享的 bin 目录。
后来 McIlroy 需要一种在文件中搜索的方法。Thompson 答应回去想一个晚上。按照他的说法,他花了最多大约一小时修复错误、完成原本就打算做的事,第二天把 grep 交了出去。程序进入 bin,名字后来也成了动词。
从 B 到 C,再到内核重写
查看原文 41:09Thompson 还讲到 PDP-7 的内存限制如何影响 B 的开发。他说,最初尝试实现的 Fortran 太大,于是他不断删减。加入新功能会让编译器超出可用内存,他就用一个基于磁盘的版本继续工作,直到它重新缩小到能放进内存。
Ritchie 后来开发了新版 B。随着 Unix 转到内存更多的 PDP-11,他在此基础上发展出 C,类型系统是其中的重要新增部分。Thompson 将这一转换归功于 Ritchie;他自己曾三次尝试用这门不断演进的语言重写内核,均告失败。等语言加入结构体后,重写才成功。
一台没有抵达莫斯科的国际象棋机器
查看原文 46:26对国际象棋的兴趣,让 Thompson 从软件程序走向专用硬件。他讲到早期参赛失利、制造速度更快的机器,以及后来与 Joe Condon 的合作:后者的硬件设计工具帮助他们造出一台更强的系统。Thompson 说,他们的机器在 1980 年获得了世界冠军。
之后他受邀到莫斯科演示。起飞前,他把电脑交到货运站,但它并没有随飞机抵达。经过反复询问和报纸报道,他才得知机器被扣在美国境内。Thompson 回忆,贝尔实验室缴纳了罚款,机器也被送回;但计划中的演示已经错过。这是他在访谈中对事件的回述。
本文整理自 Vintage Computer Federation 的《VCF East: Ken Thompson interviewed by Brian Kernighan》。