Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

1.3 Unix 的崛起

和万众瞩目的阿帕网圈子不同,在新泽西(New Jersey)的荒野中还有一条完全独立的技术线,从 1969 年就一直在发展,最后风头盖过了 PDP-10 那套体系。碰巧的是,在阿帕网诞生的同一年,贝尔实验室(Bell Labs)的黑客肯・汤普森(Ken Thompson)创造了 Unix。

汤普森之前参与过 Multics 分时操作系统的研发,这套系统和 MIT 的 ITS 算是同根同源。Multics 承载了一套很关键的设计思路:把操作系统内部复杂的底层逻辑全部封装隐藏,普通用户、甚至大部分程序员都不用感知底层细节。核心目的就是简化操作与开发门槛,让大家能更高效地完成实际工作。

可后来 Multics 越做越臃肿,体积庞大却很难落地使用,活成了典型的白象工程(white elephant)a,贝尔实验室直接退出了项目。这套系统后续由霍尼韦尔(Honeywell)推向商用,但始终没能做起来。汤普森很怀念 Multics 的使用体验,就找来一台闲置淘汰的 DEC PDP-7 小型机,在上面融合 Multics 的设计思路和自己的想法,动手写起了新系统。

另一位传奇黑客丹尼斯・里奇(Dennis Ritchie),专门为汤普森这套尚在雏形的 Unix 打造了全新编程语言 C。和 Unix 的设计思路一脉相承,C 的设计理念是上手舒服、没有多余束缚,而且非常灵活。贝尔实验室内部有越来越多的人开始使用这套工具;在 1971 年两人拿下内部项目,要给实验室开发一套我们现在说的办公自动化系统,Unix 和 C 也借着这个项目快速完善。但汤普森和里奇的野心远不止于此。

早年所有操作系统全是纯汇编写死的,只为榨干单台机器的极限性能。汤普森和里奇是最早看清这件事的人:硬件、编译器技术已经成熟,整套操作系统完全能用高级语言 C 来编写。到 1978 年,完整的 Unix 环境已经成功移植到多款完全不同架构的设备上。

这件事在当时史无前例,带来的影响更是颠覆性的。如果 Unix 不管在哪种机器上跑,界面、功能全都是统一的,那它就能成为通用的软件环境。用户不再需要为每台过时的机器为全新的软件设计付费;有了 Unix 之后,开发者能把整套工具库在不同设备间直接迁移,不用每次都钻木取火、重复造轮子,白白浪费精力。

除了可移植性,Unix 与 C 还有一个重要优势:二者都严格遵循“保持简单,直白”的 KISS 极简设计原则。C 语言逻辑简洁干净,降低了程序员的心智负担(不像之前之后的多数其他语言),不用频繁查阅手册;而 Unix 本身由一堆小巧独立的工具程序构成,工具之间能自由拼接组合,灵活实现各类需求。

这套 C+Unix 的组合,适配的业务场景覆盖极广,很多当年设计者完全没预料到的用途它都能搞定。哪怕 AT&T 没有推出官方技术支持服务,这套系统还是在公司内部快速传开。到 1980 年,全美大量高校、科研机房都部署了 Unix,成千上万黑客都把它当成自己的“老家”。

早期 Unix 圈子最常用的中坚机型是 PDP‑11,以及它的后续机型 VAX。Unix 的可移植性好,不用大幅修改代码就能跑在各式各样的硬件上,它的兼容范围比当年整个阿帕网所有机器加起来还要大。大家也不再碰汇编,用 C 写的程序可以轻松在不同设备间迁移。

Unix 还有一套专属的网络通信方案——UUCP。虽然它网速慢、稳定性一般,但好在成本极低。两台 Unix 主机只要接上普通电话线,就能点对点收发邮件,这个能力是系统原生自带的,不用额外加装组件。1980 年,首批 Usenet 站点开始互相推送各类资讯帖子,搭建起一套巨型分布式论坛,规模很快就超越了阿帕网。各地运行 Unix 的服务器,围绕 Usenet 形成了独属于自己的网络国度。

也有一小部分 Unix 节点同时接入了阿帕网。PDP‑10 一派和 Unix/Usenet 两群人开始有了交集,但最开始两边互相看不顺眼。玩 PDP‑10 的老黑客总觉得 Unix 这帮人后来居上却牛气哄哄,和 ITS 和 LISP 那种精巧繁复、设计华丽的体系相比,Unix 的工具简陋得可笑,于是他们在私底下吐槽:“这帮人还在用石刀兽皮过日子呢!”

当时第三股技术浪潮也正在兴起。1975 年首款个人电脑正式发售,1977 年苹果公司成立,之后硬件迭代速度快得超乎想象。微型计算机巨大的潜力吸引了新一代年轻极客。他们主要用 BASIC 编程,语法简陋粗糙,不管是坚守 PDP‑10 的老牌玩家还是深耕 Unix 的开发者,都觉得连鄙视它都多余。

译者注

a. 白象工程(white elephant):指维护成本远高于实用价值、最终沦为负担累赘的工程。