Multics项目失败后,贝尔实验室的程序员们也没有计算机可以使用了,最后在楼道里找到了声学部门闲置的机器。

神译局是旗下编译团队,关注科技、商业、职场、生活等领域,重点介绍国外的新技术、新观点、新风向。

编者按:你或许不知道,安卓和iOS两个充满竞争的操作系统,其实是源自于同一个系统——Unix,直到现在,还在为这两个操作系统提供着支撑力量。

今年,正是Unix诞生的50周年。当时,这个几乎驱动着所有智能手机的操作系统,其实是一个项目失败的产物,开发者这个系统的程序员,并没有的获得支持,只能够使用别人闲置下来不用的计算机。

从一个失败的项目,到无处不在,Unix诞生的早期,到底发生了什么?Ars Technica近日发表了一篇长文,复盘了这一项目的发展历程,文章原题为“Unix at 50: How the OS that powered smartphones started from failure”,作者是RICHARD JENSEN,文章由神译局编译,希望能够为你带来启发。

注:此文较长,分三部分刊出,此为第二部分。

Unix 50年:安卓和iOS操作系统,源自于同一个失败的项目(二)

肯·汤普森(Ken Thompson,坐着)和丹尼斯·里奇(Dennis Ritchie,站着)在 PDP-11前(译者注:PDP-11是最著名的计算机之一,是数字设备公司(DEC)从1960年代早期开始制造的产品之一)。

里奇开玩笑说,与1999年3月《科学美国人》(Scientific American)等杂志刊登自己的照片时相比,他那时的头发“更加茂密”。

 Unix 50年:安卓和iOS操作系统,源自于同一个失败的项目(一)

舒适的环境

对于贝尔实验室的程序员来说,Multics 并不是他们的全职工作,他们使用的通用电气主机也可以用于其他项目。

汤普森的操作系统就是其中之一。 那年冬天他一直在做这个程序,并且想出了如何让每个终端同时连接到机器上打印“ HELLO”。

但是在他能够进一步发展之前,Multics 项目被取消了,大型机被打包并搬出了他所在的计算机科学部门。

贝克和戴维斯取消Multics 项目的时候,并没有给麦克罗伊的团队提供新的工作,这让他们有点忐忑不安。 他们担心,随着Multics的消亡,自己在贝尔实验室的职位也不会持续很长时间。

然而,这个蓬勃发展的开发团队恰好处于适合 Unix 蓬勃发展的环境中。 贝尔实验室与其他地方不同,它的资金来自美国几乎所有电话线路的月收入的一部分。

把一小部分程序员放在默里山综合楼的顶层并不会让公司破产。汤普森所在的部门,也有一个有理想的经理人来支持他们追求好奇心。

管理计算机科学研究部门(由麦克罗伊的程序员和一群数学家组成)的山姆·摩根也没打算依靠麦克罗伊的团队,因为他们突然没有什么特别的事情可做。

摩根是一名受过专业训练的应用数学家,1967年被提升为部门主任。 

“我不认为管理是他最喜欢的活动,”布莱恩 · 科尼汉(Brian Kernighan)告诉 Ars,他的办公室就在汤普森对面。 “但他非常努力地把它做好。 他很善良,试图善待每一个人。”

“这里的管理原则是雇佣聪明的人,然后向他们提供环境,”摩根自己在 Unix 口述历史项目中回忆道。 “你给他们大致的指示,告诉他们需要什么样的东西,给他们很多自由。” 

因此,摩根没有提供具体的方向,而是倾向于运用他所说的“选择性热情”来鼓励一个特定的研究项目,他指出,“如果你错误地阻止或没有回应一些后来证明是好的东西,如果它真的是一个好的想法,它会回来。”

“他让人们做自己的事情,从不告诉任何人他们应该做什么,”科尼汉回忆说。 当时,贝尔实验室也强调跨学科的合作。 “每个人都一直开着门,所以如果你有什么问题,附近有个专家,你可以走进去寻求帮助,”科尼汉回忆道。

尽管如此,对于汤普森和他的同事们来说,目前还有一个小问题——没有人有计算机。虽然实验室管理人员对计算机本身没有问题,但麦克罗伊的程序员无法说服他们的老板给他们购买一台计算机。

由于 Multics 的惨败,他们没法说服任何人给他们一台新计算机,以便他们继续操作系统的研究和开发。

但从实验室管理人员的角度来看,汤普森和其他团队成员似乎只想继续从事 Multics 项目。

共享计算财富

计算机科学部门与声学和行为研究部门共用一层楼。这个部门更大,由电子音乐、声音合成和声音识别领域的先驱马克斯·马修斯(Max Mathews)领导。

声学部门,明显应用于AT&T的核心业务,显然比计算机科学部门资金更充足。

此外,这里还有一种似乎有意激怒里奇和汤普森的情况——声学部门并不缺少计算机。里奇和汤普森本来就对公司的官僚作风有一定的不屑。 事实上,声学的计算机数量远远超过了他们的需要。

而且,只要声学部门的程序变得过于复杂,无法在他们的计算机上高效运行时,他们只需要向实验室管理人员索要新的计算机就可以了。

Unix 50年:安卓和iOS操作系统,源自于同一个失败的项目(二)

马克斯·马修斯在贝尔实验室的模拟电子实验室里演奏一把电子小提琴。

尽管他们对隔壁能够获取大量资金存在一定程度的嫉妒,但在60年代和70年代声学和计算机科学部门之间也有一些合作。其实,贝尔实验室在计算机技术方面的许多创新,实际上来自声学系。

例如,在60年代早期,声学研究员 Bill Ninke 用 DEC PDP-7微型计算机演示了一个基本图形用户界面。

虽然声学仍然保留着那台计算机,但是他们已经把它闲置,没有使用它,并把它放在了六楼的某个偏僻的地方。

因此,汤普森,不知疲倦地将实验室的角落和缝隙扒了一个遍以后,终于发现了 PDP-7,这个时候,戴维斯和贝克也刚刚宣布取消Multics项目后不久。

在团队其他人的帮助下,汤普森把PDP-7的各种零件打包起来,把它放进了一个指定给音响部门的壁橱里,然后开始运行。

PDP-7的大小相当于一个冰箱,并不算终端机。而且,他们还说服声学部门为计算机提供空间,并让这个部门从预算中支付机器的日常修理费用。

麦克罗伊的程序员们,突然有了一台电脑。 因此,在1969年夏天,汤普森、里奇和卡纳迪在PDP-7上研究出了一个基本的文件管理器。

这不是一件简单的任务。 批量计算(一个接一个地运行程序)很少能让计算机能够永久地存储信息,许多大型主机上没有任何永久存储设备(无论是磁盘还是硬盘)。 

但是,这些程序员所喜欢的分时环境,必需要附加存储器。当多个用户同时连接到同一台计算机时,文件管理器必须编写得足够好,以防止一个用户的文件被写到另一个用户的文件上。

而且,还要求当读取一个文件时,必须将该文件的输出发送给打开该文件的用户。

这是一个麦克罗伊的团队愿意接受的挑战。

他们已经看到了计算机的未来,并且想要探索它。他们知道 Multics 是个死胡同,但是他们发现了共享开发、共享访问和实时计算所带来的可能性。

20年后,里奇在普林斯顿大学这样描述说: “我们想要保留的不仅仅是一个做编程的好环境,而是一个可以能够让团队合作的系统。”

“在20世纪60年代后期,我还在使用普林斯顿的 IBM 7094和贝尔实验室的 GE 635 进行批处理计算,”布莱恩·科尼汉告诉 Ars。

 “但我在1966年夏天,在麻省理工学院用上了 CTSS,这揭示了交互式计算是多么美好。”

一旦 Unix 开始运行,科尼汉就从研究抽象主题转向编写程序,最终与里奇合作研究 C语言,问世之后,其立即成为了编程手册的黄金标准。

译者:尺度。