前 言
“回忆往往披着玫瑰色的光晕,令人欢欣。回忆常驻于美好而持久的事物上,也常驻于因努力改善人类生活而获得的愉悦之中。”
——丹尼斯·里奇,
“The Evolution of the Unix Time-sharing System”
(Unix分时系统的演进),1984年10月
自1969年在贝尔实验室的阁楼上诞生以来,Unix操作系统的发展远远超出其创造者们的想象。它带动了许多创新软件的开发,影响了无数程序员,改变了整个计算机技术的发展轨迹。
Unix及其衍生产品在特定的技术社区之外并不广为人知,但它们是若干系统的核心,这些系统已是许多人生活的一部分。谷歌(Google)、脸书(Facebook)、亚马逊(Amazon)等提供的许多服务和其他大量服务都由Linux驱动。Linux是类Unix操作系统,后文将会讲到。你的手机或MacBook运行着某种版本的Unix操作系统。如果你家里有Alexa等智能小电器,或者车上有导航软件,它们也由类Unix操作系统驱动。如果你浏览网页时总被广告轰炸,也是Unix操作系统在后面支撑。当然,基于Unix的追踪系统也知道你在做什么,以便更精准地对你进行广告轰炸。
50多年前,在一小群合作者和追随者的帮助下,有两个人创造了Unix。由于一系列幸运的“意外”,我在其中亦有贡献,但绝不敢居功自傲。我顶多是写了一些有用的软件,还有几本帮助人们学习Unix及其语言、工具和哲学的图书。这要感谢那些顶尖的合著者们。
本书不但书写Unix的历史,而且记录了我的回忆,一探Unix的起源。本书试图解释什么是Unix,Unix是如何产生的,以及Unix为何如此重要。不过,本书绝非学术著作(脚注欠奉[1]),与我的初衷不同,它偏重回忆甚于历史。
本书为那些有兴趣了解计算或创新史的读者撰写。书中有一些技术内容,我会尽量给出解释,好让没有相关背景知识的读者能够领会基本概念,以及了解这些概念的重要之处。读者可以随意略过看起来太难懂的部分,不必逐字阅读。对于程序员,其中一些解释会显得太啰唆,还好书中有些对历史的思考仍然有用,与之有关的故事也颇有意趣。
我虽尽力求真,但回忆总有错漏。而且,那些我借以佐证的访谈、忆旧、口述、书籍和文章并不全然与我的记忆相符,甚至这些资料也会互相矛盾。
幸好很多早期参与其中的人士仍然健在,他们能够帮我去伪存真。他们的记忆也会有误,或者带有定见,但成书中的错漏皆我之过。
本书主要的写作目的是讲述计算机历史上某个极具生产力和发展性的时期中的一些精彩往事。理解我们习以为常地使用的技术如何演化而来,颇为要紧。有人顶住压力、克服时间限制,做出了定义技术发展方向和路径的决策。越了解历史,我们越感激那些带来Unix的发明天才,或许也越能理解现代计算机系统是如何发展成现在这个样子的。仅就那些如今看起来大错特错抑或倒行逆施的选择而言,常常也是在当时可用资源限制之下所能考虑和实现的必然结果。
Unix操作系统是故事的中心,但其余亦有涉及。我还将讲述被广泛使用的C语言,人们用它编写了支持互联网运行的系统及利用系统能力的各种服务。在贝尔实验室,还有一些编程语言随Unix而生,尤其要提到也被广泛使用的C++。Word、Excel和PowerPoint等微软Office软件就是用C++写成的,大多数网页浏览器也是用C++编写的。程序员们耳熟能详的一二十个日常开发工具,在Unix的早期就已问世,四五十年以来一直维持原状,至今仍在许多程序员的工具包中有一席之地。
计算机科学理论同样扮演着重要的角色,常常极大地推动实用工具的产生。硬件研究开拓出设计工具、集成电路、计算机体系架构,还有不常见的特殊用途设备。这些活动相互作用,往往带来预料以外的发明,这也是贝尔实验室在多个不同领域持续产出活力的原因之一。
科技创新的发生还与另一件有趣的事相关。Unix诞生地贝尔实验室是很出色的机构,它既制造出许多好点子,也投资了这些好点子。多个改变世界的发明由贝尔实验室而起,它的运作机制值得学习。
Unix的故事当然也贡献了大量有关设计和构造软件,以及有效利用计算机的洞见,我会在书中一一指出。例如,Unix软件哲学倡导合用既有软件,完成很多不同任务,而不是从头写个新软件。这个例子简明又生动,它在编程领域体现了“分而治之”的故技:将大任务切分为多个小任务,每个小任务都变得更可控,然后再以各种不可思议的方式将之整合到一起。
最后,虽然Unix是贝尔实验室最抢眼的软件,但它绝非贝尔实验室对计算领域的唯一贡献。计算科学研究中心(The Computing Science Research Center),即传说中的“1127中心”,或简称“1127”,在那二三十年里面生产力“爆棚”。Unix激发了它的能力,Unix也是它的工作基础,但1127中心的贡献远超于此。1127中心的成员写出了多本重要著作,这些著作在后面的很多年里成为计算机科学的核心文献,也是程序员可以按图索骥的指南。1127中心分外显赫,在当时及以后都是极具生产力和规模较大的计算机科学研究团体。
Unix及其周边环境为何如此成功?区区两人的实验性产品如何演化为真正改变世界的东西?这是否是孤例?类似事件还会再发生吗?关于如此耀眼的成果能否被规划出来的大问题,我打算留到本书末尾再讨论。目前我认为,Unix的成功是一些偶然因素的作用结果:两位杰出人士,一群优秀拥趸,卓越而开明的管理体制,有远见的公司的持续投资,允许离经叛道、大胆探索的自由环境。科技快速演进,硬件以指数级速度不断变小、变快、变便宜,推动了Unix的应用。
对我和贝尔实验室的很多同事而言,Unix的早期岁月既富有活力,又充满乐趣。我希望这本书能让你略微感受到丹尼斯•里奇说的那种因努力改善人类生活而获得的愉悦。
[1] 原文如此。为帮助读者理解,译者添加了一些脚注。