3、从 UNIX 开始
赫尔辛基大学第一次拥有 UNIX 是在 1990 年秋季开学的时候。 那个强大的操作系统是美国电话电报公司的贝尔实验室于六十年代发明的,然而它的开发却是在别的地方。前一年,也就是我上大学的第一年,我们有一台操作 VMS 的 VAX。这个操作系统糟糕透顶,你决不会说出:“嘿,我在农时也想装一个 VAM”这样的话,它只能让你说:“你怎么会使用这个破玩意?”它用起来极不方便,没有多少工具,也不适合轻松容易地进入因特网,而因特网是在 UNIX 上面操作的。你甚至都无法轻易地估算出文件到底有多大。坦白地说,VAM 可能很适合某些操作,比如数据库。但这种操作系统无法让你为之感到兴奋。
赫尔辛基大学当时意识到应该淘汰诸如 VMS 类的软件。学术界已经对 UNIX 产生了越来越大的兴趣,于是我所在的大学购买了一台操作 Ultrix 的微型 VAX,Ultrix 是 DEC 公司生产的一种 UNIX 版本。
我特别渴望操作 UNIX,将我从安德鲁?塔南鲍姆书上所学到的东西进行试验。要是我有一台 386,它肯定会对我能进行的一切探索感到兴奋不已。但是,我无法凑齐一万八千芬兰马克买一台 386。我知道一旦秋季学期开始后,我就能使用我的 Sinclair QL 进入大学新的UNIX 电脑,直到我自己凑齐了钱买一台 PC 机,再在上面操作 UNIX。 因此,那年夏天我做了两件事。第一件是什么都没做。第二件事是读完了七百一十九页的《操作系统:设计和执行》。那本红色的简装本教科书差不多等于睡在了我的床上。 赫尔辛基大学为微型 VAX 电脑购买了十六个客户执照。这意味着“C 语言和 UNIX”课程的选修学生人数被控制在了三十二名--我想学校的想法是十六个学生白天使用机器,另外十六个学生晚上使用。教师和我们一样,对 UNIX 也不太熟悉。他对此公开承认,因此也没构成什么问题。但他每次都比学生先读一个章节。有时学生也会提前跳读三个章节,因而上课成了一种游戏,学生们问的问题都是在三个章节之后才能学到的,目的是为了难住教师,看他是否已经读了那么多。
我们在 UNIX 的大世界中都是婴儿,一边学习一边完善这门课程。然而关于这门课最明显的是,在 UNIX 背后有一个非常独特的理念。你在这门课的第一个小时就抓住了这一点,剩下来就是解释细节了。
UNIX 的独到之处在于它所追求的基本理想。它是一个干净利索、非常漂亮的操作系统 。
UNIX 具有程序的观点,凡是做任何事情都是一个过程。这里有一个简单的例子。shellcommand 是为进入操作系统而键入的一种指令,在 UNIX 中,它并不像在 DOS 中似的被装在操作系统里。它只是一个任务,同其他的任务相同。这个任务是从你的键盘中读出的,然后再写回到显示器。任何能做的事情的东西在 UNIX 里面都是一个程序,此外还有文件。 吸引我的就是这个简单的设计,它也吸引着大多数对 UNIX 感兴趣的人(至少对我们电脑迷们颇有吸引力)。你在 UNIX 上完成的大部分任务都是通过六个基本操作完成的,它们被称作“系统呼叫”(system call),因为它们是你对操作系统的呼叫,你便让它为你完成任务。通过这六个基本的系统呼叫,任何事情你都可以完成。 此外还有“创建子进程”(fork)的概念,它是 UNIX 的基本操作之一。当一个程序创建子进程时,它便把自身完全复制出来。这样你就有了两个相同的拷贝。复制拷贝多数情况下再去执行另一个程序--用一个新项目替换自己。这便是第二个基本操作。其他四个基本系统呼叫--打开、关闭、读和写--都是为了访问文件的。这六个系统呼叫便组成了 UNIX 的简单操作。
当然,从细节方面讲,还有数不清的其他系统呼叫。然而一旦你明白了这六个基本系统呼叫,你就了 UNIX。UNIX 的好处之一是,你并不需要拥有复杂的连接去创立复杂的事物。你可以通过简单事情的互动来建立任何程度的复杂任务。你只需在简单的程序之间创造出交流渠道,在 UNIX 中叫做“管道”(pipes),就能解决复杂的问题。 一个差劲的系统在做任何你想做的事情时都需要有特殊的连接。UNIX 则恰相反。它提供给你执行任务的材料,这些材料足以让你完成任何事情。这就是所谓的干净利索的设计。 语言其实也是如此。英语有二十六个字母,你可以用这些字母创造出任何单字。另一种语言是汉语。在汉语中,你所想到的任何一件事都由一个字来代替。你一开始用的就是复杂的形态,然后在有限的方式中将复杂的形态组合起来。VMS 的大体上也是这种思路,Windows的方法也是如此。而 UNIX 的理念是越小越漂亮。一小堆简单基本的建筑材料,结合起来就能创造出无限的复杂表述。
物理的规则亦是如此。你努力找出基本的规则,而这些规则都是相对简单的。从那些简单的规则中,通过相互作用产生令人不可思议的复杂性。 那种简单的设计并非是自然产生的。UNIX 是美国电报电话公司贝尔实验室的丹尼斯?里奇(Dennis Richie)和肯?汤普森(Ken Thompson)花了很大力气设计完成的。你也不能认为简单就是容易。简单需要特别的设计和很高的品味。 让我们再回到人类语言的例子上。像图画似的中国象形文字是最先产生的,然后再追求“简化”。而建筑材料似的做法则需要更多的抽象思维。同样,你不能将 UNIX 的简洁同上不了档次混淆起来--事情正好相反。 但这并不是说,创造 UNIX 的最初原因有多么复杂。它和计算机的许多其他事情一样,都是以游戏开始的。最初有人想在等离子显示器上玩电脑游戏,那就是 UNIX 发展起来的原因。
正因为当时人们觉得这个操作系统不是一个严肃的项目,美国电话电报公司才认为它并非是商业上的冒险尝试。事实上,美国电话电报公司的垄断受到制约,对其限制之一是不能推销电子计算机。所以创造 UNIX 的人有很大的,尤其在为大学服务方面没遇到什么阻碍。 于是乎,UNIX 在学术界就演变成了一个大项目。到 1984 年美国电报电话公司分家后,它已被允许进入电脑业,那时大学里的计算机专家们--尤其是加州大学伯克利分校的专家们--已经在比尔?乔(Bill Joy)和马歇尔?克拉克?迈克库塞克(Marshall Kirk McKusid)的指导下,把开发和改进 UNIX 的工作进行了许多年了。 但到了 1996 年初,UNIX 已经成为所有超级计算机和服务器的头号操作系统。它的市场非常大。但当时的问题之一是,已经出现了数不清的操作系统的竞争版本。有一些是从控制得比较严密的美国电报电话公司代码库里创造出来的(即所谓的“V 系统”),另一些人则是从加州大学伯克利分校的代码库衍生而来(即 BSD--伯克利软件分布),还有的则是这两者的结合体。
其中一个 BSD 的衍生版本特别值得一提。那是 386BSD 项目,是比尔?乔利兹(Bill Jolitz)在代码库的基础上做成的,分布在因特网上。后来它又进一步分裂,成为人人都可以获得的BSD--Net BSD,Free BSD 和 Open BSD,在使用 UNIX 的群体中引起广泛的注意。 于是美国电报电话公司突然觉醒了,将加州大学伯克利分校告上了法庭。最初的代码是电报电话公司的,但绝大多数后期工作都是在伯克利完成的。加州大学的校务委员们声称他们有权传播和销售他们的 UNIX 版本,而且还可收取象征性的费用。而且他们还向人证明,他们已为此做了大量工作,基本上把电报电话公司的软件进行了重写。官司的结果是,Novell 公司从电话电报公司买断了 UNIX,一部分体系不得不从电报电话公司中分离出去。 同时,那场无休止的官司却让一个儿童赢得了一些时间,使自己成熟和发展起来。具体地说,Linux 获得了时间去占领市场。我自己走在了我的前面。 坦白地讲,在使用 UNIX 的人当中,有许多是几乎发疯的人。他们不是集邮疯子,不是把邻居的狗毒死的疯子,而是一些生活方式很另类的人。 别忘了,UNIX 最初的主要发展是在六十年代和七十年代,我当时正在祖父公寓里的一个洗衣筐子里睡觉。当时正是美国嬉皮士的时代,而那些人也都懂技术。有关 UNIX 应共享的理念和当时的社会环境有关,而并不应简单地归功于其开放源代码的系统本身。那是一个了各种理想的时代。革命、解放、自由爱情(自由爱情我可没赶上,即使赶上也不知该怎么做)……于是 UNIX 的相对开放性对这类人就特别有吸引力,尽管在当时它还缺乏商业上的价值。
我第一次了解到 UNIX 可开发性的一面大概是 1991 年前后,当时拉尔斯?沃兹尼亚斯(LarsWizenius)拉着我去赫尔辛基理工大学参加一个集会。人人都知道,这所大学根本不在赫尔辛基,而是在城市边界线以外的艾斯普。学校的人想和豪华的赫尔辛基联系起来,哪怕只是在名义上。
当时的演讲者是理查德?斯多曼(Richard Stallman)。此人是自由软件的鼓吹者。 1983 年,他开始研究 UNIX 的一个替代物,将其称作 GNU 系统,其含义是“GUN 不是UNIX”(GNU 是“GNU is Not UNIX”的字首缩略语--译注)。这些只有在电脑界内部开的玩笑,常人是很难听懂的。电脑迷之间流传的文学游戏实在是数都数不清。 更重要的是,RMS(理查德?斯多曼希望别人这样称呼他)还撰写了《自由软件宣言》和自由软件产权证书,即 GPL。他首先提出的关于开放源代码的概念完全是有意的,而并非出于偶然,和 UNIX 最初的开放发展理念是相吻合的。 我得承认,我对社会政治方面的问题了解得不多,而这些问题过去和现在对 RMS 都非常重要。我对他所创立的开放软件基金会的宗旨也知之甚少。事实是,我对 1991 年人们谈论的话题也没有多少记忆,这说明当时它对我的生活并没有产生多大的影响。我当时所关心的是技术,而不是政治--我们家里的政治已经够多的了。但拉尔斯是个思想理论家,于是我便跟在他身后去听听。
我在生活中第一次见到了典型的留着长发、蓄着长胡子的黑客形象,其代表就是理查德。这样的人在赫尔辛基为数不多。
我当时可能没有看到眼前的光芒,但我猜他说的一些话也多少给了我一些锾。毕竟,我后来为 Linux 使用的就是 GPL。就这样,我再一次走在了自己的前面。
本书评论