第二章 一种操作系统的诞生
有些人记忆时间的方法是通过他们曾经驾驶过什么样的车子,干过什么样的工作,或在什么地方住过,以及追求过什么样的情人。而我的生涯却是由电脑来划分的。
我成长期间只有过三台电脑。上面提到过的VIC-20,是我外祖父留给我的遗产。它是“家用”电脑中的一种,是当今PC机的前身。般长64电脑后来成了VIC-20的老大哥,接踵而至的是Amiga,这种机器在欧洲特别受欢迎。这些电脑从来未像PC机甚至苹果II那样流行过,我在玩VIC的时候,苹果II已经很流行了。
在那个年代,PC机普及之前,家用电脑的多数程序使用的都是汇编语言。它们都有自身的操作系统,等同于PC机里的DOS。由于机器不同,操作系统很可能是一种简单的格式,或是增强的格式。那时没有什么技术标准,许多公司都想控制市场。最有名的公司之一就是Amiga。我现在句子的开头都要用上“在那个年代……”,真是不可思议。
等我对VIC-20玩得已经很精通后,我便开始攒钱想买一台下一代的电脑。这在我生活中是一件大事。前面我已经提到过,我对我的家人在某个特定的时间住在什么地方,以及其他许多事情都记不清了,但我购买第二台电脑的过程却很难忘记。
我攒了一些圣诞节和生日的压岁钱(我生于12月28日,那两个节日基本上凑在了一起)。有一年夏天我还参加了赫尔辛基公司清洁队,挣了一些钱。赫尔辛基的许多花园没有美化,保养得不太好,更像是一些娱乐场所和绿地,长着高高的树林。我们所做的就是锯掉长高的灌木丛并把死掉的残枝拾走--这种活儿还挺有意思。我一贯喜欢室外运动。曾经一度,我还当过邮差,但送的不是报纸而是垃圾邮件。细想起来,我在夏天基本不怎么打工。但在那些日子里还是干了一些活。总体来讲,我的钱基本都是学校发给的奖学金。
在芬兰,给学校捐款是很普遍的事情,连公立小学也有人赞助。所以从小学四年级开始学生就能得钱,发放的方式完全由建立基金的人决定。我记得有一种捐款是奖给班里最受人爱戴的学生的。当时我们六年级,全班还真的举手投票表决,看谁能得到那笔钱。顺便说一下,我当时未被选中。奖金仅有两百芬兰马克,当时只值四十美元,但对一个最受欢迎的六年级学生来说似乎已不是个小数目了。
通常情况下,在某一个学科或体育项目中有突出表现的学生都能得到奖学金。许多奖项都是由具体的学校发放或由州政府赞助的。有些奖学金随着时间的推移数目越来越少。我记得有一种奖项最后只值一毛钱。发生这种情况时,学校也会出些钱补进去,但是尽管如此数目仍然不多。这样做的目的仅仅是在每年当中把发放奖学金的传统继续下去。芬兰对学术传统非常认真,这当然不失为一件好事。
于是我作为优秀的数学学生,每年都能得到奖学金。上高中后,奖金的数目越来越大,最多的时候可以达到五百美元左右。因此我买第二台电脑的钱基本上是这么来的,我每月的生活费肯定付不起电脑钱。此外我还从我爸爸那里借了一些钱。
当时是1986或1987年。我十六或十七岁。那个时候我已不再打蓝球。决定买何种电脑之前,我花了大量时间进行了一番调查。当时的PC质量还不太好,我便决定不买PC机。
我选择的是Sinclair QL,你们当中的许多人大概太年轻,对这种机子没有记忆。
下面是QL的简单历史:当时,Sinclair是市场上32比特的机器之一,主要用于家庭。那家公司的创始人克里夫·辛克莱尔(Clive Sinclair)在英国等同于史蒂夫·沃斯尼亚克(Steve Wosniak)。他制作出这些电脑的配套元件,然后以Timex的品牌在美国销售。没错,一家制造钟表的公司进口Sinclair的元件,然后再打着Times品牌在这里卖出。早期销售的也是配套元件,他后来开始销售组装好的机器。
Sinclair的操作系统叫做Q-DOS。这种操作系统是专门为那种电脑写的。按照当时的情况,它的BASIC语言非常先进,而且有着不错的图形显示。那种操作系统最令我兴奋的一个特点是它能进行多重任务处理。你可以同时操作多个程序。然而其BASIC部分却不是多重任务处理,所以同一时间之内你不能操作超过一个以上的BASIC程序。但如果你用汇编语言编写自己的程序,就能让操作系统列出时间表,把时间分隔开来,这样你就可以在同一时间操作多个程序。
这种电脑有一个8兆赫的68008芯片,它是摩托罗拉68000芯片的第二代,是个更加便宜的版本。在内部,第一代68000芯片是32比特,但在外部,却以16比特与CPU之外的设备进行连接,例如存储器和硬件附加装置。由于它只能在一个时间内从存储器上载16比特,因此16比特的操作常常比32比特的操作要快。这种结构非常受欢迎,今天在许多嵌入装置和轿车里仍然有人使用。虽然芯片已经不同,但却是基于相同的结构生产的。
我的电脑中的68000芯片在与CPU之外的设备连接时使用的是8比特,而不是16比特。但虽然它与外部设备互动的是8比特,其内部却是32比特的。这就使它在编程方面显得非常不错。
它的内存是128千字节,不是兆字节,这在当时对家用电脑来说已经非常大了,而被它所取代的VIC-20仅仅有3.5千字节的内存。因为它是一台32比特的机器,所以能毫无困难地读取所有的内存,这在当时是前所未闻的。我之所以要买这种电脑便是出于这个原因。它的技术非常有意思,我喜欢它的CPU。
我的一位朋友认识一家商店的老板,于是我希望能在他那里打折买这种电脑。但等货的时间太长,于是我便前往赫尔辛基一家最大的书店,因为那里有一个电脑柜台。我的电脑就是在那里购买的。
那台电脑花费了我差不多两千美元。当时的情况是,低档电脑的价格总是在两千美元上下。只是在最近两年这种情况才有所变化,现在你只需花五百美元就能买一台PC机。这种情况和造汽车一样,没有人愿意生产低于一万美元的汽车。在某一段时间,低于一万美元就不值得制造。不错,公司完全可以造出销售价格为七千美元的汽车,但汽车制造商们认为,凡是能出得起七千美元的人,如果能买到附加的标准设备,比如空调,花上一万美元他们也高兴。假如你把今年出产的低档轿车同十五年前的同类轿车相比较,就会发现,它们的价格大体一致。其实,将通货膨胀的因素去除,它们的价格或许稍微便宜一点,然而质量却好得多。
过去的电脑就是这样。当电脑还不是人人都买的商品时,你就只能忍受两千美元的昂贵价格。假如一台成本很低的电脑价格非常昂贵,公司就无法大量地进行销售。但生产商制造电脑的成本并非很低,所以公司若是卖得很便宜就不合算。人们总是希望多花二百美元买台更好的机器。
最近两年,制造电脑的成本已经大幅度降价。甚至低档的电脑质量也非常好。公司已经失去了许多愿意多付二百美元买一台稍好一点机器的客户,它们就只好依赖价格进行推销了。
我得承认,QL的卖点之一就是它的样子非常酷。
整个机身是无光泽的黑色,带着一个黑色键盘。整个样子有棱有角,而不是那种圆圆的漂亮的机型。它的造型有点走极端。键盘有一英尺厚,因为它与电脑联为一个整体。当时许多家用电脑就是那样设计的。在键盘的右端,即应该是小键盘的地方,有两个具有革新意义的Sinclair微型驱动器,它用的是只能在Sinclair上使用的无限循环磁带。它们的作用就等于软驱。因为它是一个长长的圆圈,你可以进行旋转,直到点到你需要的东西为止。实践证明这个创意并不是理想,因为它不像软驱那样可靠。
于是我花两千美元买了一台Sinclair QL。我用它所做的就是不断地编写程序。我总是在寻找有意思的事情做。我有一个Forth语言解释程序和编译程序,纯粹是为了用着玩。Forth是一种很怪的语言,现在已经没有人使用。它是一种挺好玩而且在市场上有利可图的语言,因为可以做许多事情而在八十年代被广泛运用,但从来没有特别普及过。它对不懂技术的人来说非常难于掌握。其实这种语言也没有什么太大用处。
我开始自己编写工具性程序。我最初为这台机器买的东西之一是一个携带EEPROM(电子可读及可编程序只读存储)卡的扩展底座。这是利用特殊模件自己编写的内存,关机后它仍存在。这样一来,需要时我就能随时获得那些工具,没必要将它们写入内存,于是就能占用珍贵的内存进行编程了。
使我对系统感兴趣的是,我买了一个软盘控制器,因为已不必再使用微型驱动器了。但软盘驱动器上的驱动程序不好使,于是我自己又写了一个。在编写过程中,我在操作系统里发现了一些病毒。我之所以能发现病毒,是因为我编写的一些东西无法操作。
我的编码总是很完美的。所以我知道肯定是别的地方出了差错。
于是我把整个操作系统都卸掉了。
你可以列出一推关于操作系统的书籍,这些书能帮上忙。你还需要一个反汇编程序,这种工具能把机器语言变成汇编语言。这一点非常重要,因为你要是只有机器语言的版本,执行指令时就非常困难。你会发现一个指令跳到一个数字的地址,读起来非常困难。一个好的反汇编程序可以为数字起名字,也可以让你起名字。你还可以使用它帮助你寻找特殊的相关指令。我自己有一个反汇编程序,可以用它创立相当不错的目录。一旦出现差错,我就可以进入反汇编程序,让它从特殊的地点找出目录,而且我还能看到操作系统将要执行的任何任务。
有时我使用反汇编程序并非是因为出了故障,而是想弄明白它到底能做些什么。
QL令我讨厌的一个地方是,它只有一个只读操作系统,对于一切都无法改变。它在某些地方的确有HOOKS(是一种消息处理机制,它使程序员可以使用子过程来监视系统消息,并在消息达到目标过程前得到处理--译注)。HOOKS就是你能切入你自己的编码接管某些功能的地方。但HOOKS只出现在某些特定的地方。要是能完全替换你的操作系统就会好得多。在只读存储器中运行一个操作系统是一种非常糟糕的想法。
虽然我说过,芬兰是一个非常乐于接受新技术的国家,但Sinclair QL在这个欧洲第七大国却没有站住脚跟。由于QL在芬兰的市场非常之小,每当你想为反传统的尖端机器购买升级设备时,只能通过邮寄的方式从英国购买。你必须翻阅许多产品目录,直到找到一家销售你所需要的设备的厂家为止。然后你还得准备好保付支票,再等上几个星期的送货时间。那个时候还没有网上购物和在网上使用信用卡。在我很希望把我的内存从128千字节扩展到640千字节时,我只能通过邮购的方式获得。我买了一个新的汇编程序,将汇编语言转换成机器码(数字1和0),又买了一个编辑器,后者主要是为编程使用的文字处理程序。
新的汇编程序和编辑器都不错,但是它们是在微型驱动器上,无法放入EEPROM。于是我自己编写了汇编程序和编辑器,应用于我所有的编程之中。编辑器和汇编程序都是用汇编语言写的,按照今天的标准看上去非常愚笨。这种语言又复杂又费时,我想用汇编语言解决一个问题要比用C语言解决一个问题多出一百倍的时间,而当时C语言已经存在了。
我给我的机器带着的基本处理程序增加了好几个指令,所以只要我想编辑任何东西,机器就会自动操作我的编辑器,它立刻就会显现出来。我的编辑器比机器本身带的编辑器速度要快。我可以在显示器上以极快的速度书写文字,我为此而感到骄傲。通常用这样的机器,在显示器上写满字需要很长的时间,你可以看到屏幕在慢慢地滚动。但是用我的编辑器在书写时速度非常之快,屏幕滚动能给人造成一种模糊的感觉,这让我很得意。这一点对我非常重要。它使我的机器显得性能惊人,而且我知道为了让我的操作更迅速,自己已做了大量的工作。
那时,在我所认识的人当中,像我那样沉迷于计算机的人微乎其微。学校里有一个电脑俱乐部,但我几乎不怎么去。那个俱乐部主要是为那些想了解电脑的孩子们创立的。我们的高中只有二进五十名学生,但我想他们在十岁以后就再没有一个人玩电脑了。
通常我用我的Sinclair QL电脑做的事情是复制游戏。我曾用VIC-20电脑为我喜欢的游戏作过翻版。有时我还让游戏升级。但多数情况下它们都得不到改进。机器更高级了,但概念并无改进。我最喜欢的游戏大概是“小行星”,但我怎么也不能很好地将其复制下来。原因是那个时期所有游戏机中心的“小行星”游戏都是用真正的矢量图形显示进行的。那些游戏的图形不是靠小粒(即像素)显示的,而实际与阴极射线管的原理相同:电子是从阴极射线管的后面通过电子枪发射出来,然后用磁铁进行转向,这样便可以高清晰度地显示图像,但如想复制过来就不那么容易了。你当然可以复制,但假如你的电脑没有特殊的图形显示能力,复制出来的东西便与原本的“小行星”相去甚远。
我记得曾经采用汇编语言对“穿靴人”做过翻版。第一个步骤是,你必须记住穿靴人里的人物是什么样子。然后你把它们画在一张16*16平方厘米的坐标纸上,再涂上颜色。你若有艺术细胞,就可以画得很逼真。然而若像我似的完全不懂艺术,画出来的人物就会像是穿靴人的生了病的小表弟。
所以这个复制做得并不理想。然而我却为此感到自豪。做出来的那个游戏是可以玩的,于是我把它寄给了一家发表电脑编码的杂志。我曾经把其他的程序寄给一些杂志,所以我以为我这次被他们接纳应是理所当然的事。
事实却恰恰相反。
其中的一个问题是,无论你在什么地方出现一个极为微小的错误,它就会运转不灵。
我自己也写过一些游戏。然而创作需要某种心态。由于游戏需要大量的表演,就需要你对电脑的硬件十分精通。这我做得到。但我却不具备玩游戏的感觉。一个出色的游戏通常并不是它的速度有多快,也不是它的图形显示得多么漂亮。它必须能让你感到玩得起来--能吸引人。游戏和电影颇为相似。特殊效果是一回事,然而你还是需要情节。我所有的游戏从来都没有情节。游戏还需要有发展,有想法。发展常常就是让游戏速度越来越快。穿靴人就是这种模式。进展时也产生变化,或是让你能够更紧密地跟踪里面的怪物。
我对“穿靴人”感兴趣的另一个原因是,它能够解决图形显示闪烁不定的问题。这在老式的电脑游戏中是一个比较普遍的问题,因为没有特殊的硬件,你的人物就会闪烁不定。你采用的办法就是去掉老拷贝,重写一个新拷贝。假如你的时间恰巧处理得不好,人们就能看到没有拷贝时的状况,于是就更会出现闪烁的情况。解决这一难题有许多种方式。你可以先画一个新人物,然后再把以前的人物去掉来避免这一问题。但你必须小心谨慎,不要把老人物被新人物覆盖住的那部分也给去掉。这样你就能获得一个良好的效果,不会再看到烦人的闪烁现象。这一解决方案的问题是创作时相对昂贵,而且特别费时间。
游戏为何总是处于技术领先的地位,而且编制人员为什么总是先制作游戏程序,其中是有原因的。一方面是关在房间里玩电脑的聪明的程序编制人员都是十五岁左右的孩子(我十五年前就这么认为,至今对此仍深信不疑)。游戏之所以总处于领先地位还有另一个原因:它总能推动硬件的发展。
你若是看一下今天的电脑,就会发现它们速度快得可以做任何事情。但考验硬件极限的往往是动作感过强的游戏,如现在很流行的一些三维游戏。从根本上说,通过电脑上的游戏,你可以看出硬件是不是过关。进行文字处理时,速度慢上一二秒钟也不会在意,但玩游戏时,出现十分之一秒的误差也非常明显,游戏过去都比较简单,时至今日,编程只是任何游戏的一小部分,此外还有音乐和情节。假如你把制作游戏比做拍电影,编程者在一定程度上就等同于摄影师。
就这样,我使用了Sinclair QL电脑三年:从高中到赫尔辛基大学,再到芬兰部队服役。这个电脑不错,但我们肯定会分手。在最后的一两年里,我发现了它和短处。68008是个不错的CPU,但我在书上了解到了下一代的68020,得知了诸如内存管理和分页等种种功能,在使用低档电脑进行工作时,这种新的电脑可以完成非常重要的任务。
Sinclair QL令我讨厌的地方是,它的操作系统虽说能进行多重任务处理,但在任何时候都会出现死机,因为它没有保存措施。只要一个任务出现差错,就能让整个机子死机。Sinclair QL是克里夫·辛克莱尔爵士最后一次设计和制造的电脑,原因之一是这种电脑在商业上并不成功。它的技术非常有意思,但公司却存在着生产问题和质量保证问题,而且最终宣传上也很失败。此外,市场竞争也开始变得越来越激烈。
到了八十年代末期,你便开始想象,或许有那么一天,大街上的每一个人都可能拥有一台电脑,哪怕只是进行简单的文字处理。而且种种迹象表明,发展方向是PC机。不错,IBM最早制造的PC机尽管有许许多多的技术问题,但却开始摆满了商店的货架,销售得极为成功。PC机的另一个吸引人的地方是:外围设备非常标准,而且很容易就能搞到。
所有关于这种较新的CPU的文章我都阅读,它可以完成我想完成的任何任务。显而易见,看上去非常有意思的68020发展前景不佳。我完全可以为QL买一个升级的CPU。在那个年代,这便意味着重新组装一台机器。尽管如此,操作系统还是没有内内存管理,所以我不得不自己编写。于是我想:这将是很费力的一步,而且获得一个CPU过于昂贵。
此外,令我越发感到头疼的是:为电脑购买设备的问题依旧存在。Sinclair QL电脑的产品目录似乎根本就没有过,所以你不可能简单地抄起电话,像定购西尔斯百货商店的邮购商品那样定购内存设备。再说,通过邮局从英国订货的做法已经过时了。当时还没有用收缩封套包装的软件盘,这我倒不在乎,因为我都能自己编写。
这个头疼的问题却给我带来了一个好处。在我琢磨着把我的机器处理掉时,也决定把我的附加设备卖掉。我指的是我买的硬盘驱动器,因为要扩展内存,我一分钟也不能忍受了。当时没有人在大街上到处找这种东西,所以我只能在电脑杂志上登广告,然后就祈祷等待着。就这样,我认识了我的好朋友乔科·维亚鲁马奇(Jouko Vierumaki)。在整个芬兰,他大概是第二个拥有Sinclair QL电脑的人。他对我的广告做出了回应,骑着自行车来到我家,买走了我的一些外围设备。后来,他也让我学着打斯诺克台球。
我在上大学的第一年,住在彼得盖坦街,我的宿舍在一层,靠窗户的一张桌子上就摆着Sinclair QL电脑。但我没有编写多少程序,原因之一是我必须集中精力读书,原因之二是我也找不到什么项目去做。没有项目可做就会缺乏热情。你总是在寻找能够让你鼓起劲去做的事情。
当时似乎是参军的好时光,而且我也知道那是早晚的事。我当时十九岁,正因为自己的电脑毛病太多而心情沮丧。而且,当时也没有任何有意思的电脑项目,于是我就搭上了一辆开往拉普兰的火车。
前面我已经说过,关于军队在体力方面会对我们做出什么样的要求我是一无所知的。所以在那里手执武器上了一个月的“体育课”之后,我便觉得在我有生之年完全有资格从此一动不动,享受平静的生活了。惟一可做的事情就是把编码打入键盘,或者手里端着一瓶比尔森啤酒(说真的,在我复员整整十年后,才第一次参加一次剧烈的活动。当时大卫硬拉着我去冲浪。旧金山半月湾的强大海浪差点没把我淹死,我的腿一连酸了好几天)。
部队服役结束于1990年5月7日。塔芙会告诉你,我连我们的结婚纪念日都记不住,但我却不大可能忘记我离开部队的日子。
刚一离开部队就想弄只猫。
复员的几个星期前,我一个朋友的猫下了一窝崽,于是我把他剩下的唯一一只小猫买了下来。那是只白色的公猫,长得很漂亮。它生下来的头几个礼拜就在室外跑来跑去,所以在我妈妈公寓的室内和室外养活起来都很容易。我给它起了个名字,叫兰迪。它现在已经十岁了,和它的主人一样完全适应了加利福尼亚的生活方式。
那年整个夏天我没有干什么正事。我大学二年级的课程直到秋天才开始。我的电脑状态也很不佳。于是我就穿着一件破旧的睡衣,逗兰迪玩,偶尔和朋友们联欢会,让他们笑话我的保龄球和台球的拙劣技术。当然,我对我的下一部电脑也做了一些设想。
我面临的是一个电脑迷的困境。
我同其他随着68008芯片一起长大的电脑迷一样,特别讨厌PC机。但在1986年386芯片出台后,PC突然看上去有了魅力,凡是68020能做的事情它们都能做。到了1990年,大规模的生产使这种机器的价格急剧下跌。我对钱很在乎,因为我手拮据。于是我就希望拥有一台这样的电脑。正因为PC非常红火,升级材料和装置很容易就能弄到。在硬件方面,我特别希望有一台标准的机器。
我决定来个大跳跃,超越界限,而且弄一个新的CPU这事的确让人兴奋。于是我便开始把我的Sinclair QL的零件一点点地卖掉。
每个人都会一本改变其一生的书籍,比如《圣经》、《资本论》、《星期二和莫瑞在一起》、《我想知道我在幼儿园里学到的一切》等等(我真诚地希望,在你读过了本书序言和我的关于生命意义的理论之后,这本书也能对你产生影响)。把我推向生命高峰的是安德鲁·S·塔南鲍姆(Andrew S. Tanenbaum)写的《操作系统:设计和执行》。
我已经选好我的秋季课程,其中最让我期待的是C程序语言和UNIX操作系统。在等待着上课期间,我还买了一本上面提到的教科书,希望能先读一下。在这本书中,住在阿姆斯特丹的大学教授安德鲁·塔南鲍姆讨论了MINIX,那是他为UNIX撰写的教学辅助软件。MINIX也是UNIX的小型翻版。一旦读完了介绍,了解到UNIX背后的理念以及那个强大、利索、漂亮的操作系统所能做到的事情后,我便决定弄一台机器来操作UNIX。我将操作MINIX,那是我所能找到的惟一版本。
通过阅读和对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具有程序的观点,凡是做任何事情都是一个过程。这里有一个简单的例子。shell command是为进入操作系统而键入的一种指令,在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年前后,当时拉尔斯·沃兹尼亚斯(Lars Wizenius)拉着我去赫尔辛基理工大学参加一个集会。人人都知道,这所大学根本不在赫尔辛基,而是在城市边界线以外的艾斯普。学校的人想和豪华的赫尔辛基联系起来,哪怕只是在名义上。当时的演讲者是理查德·斯多曼(Richard Stallman)。
此人是自由软件的鼓吹者。
1983年,他开始研究UNIX的一个替代物,将其称作GNU系统,其含义是“GUN不是UNIX”(GUN是“GUN is Not UNIX”的字首缩略语--译注)。这些只有在电脑界内部开的玩笑,常人是很难听懂的。电脑迷之间流传的文学游戏实在是数都数不清。
更重要的是,RMS(理查德·斯多曼希望别人这样称呼他)还撰写了《自由软件宣言》和自由软件产权证书,即GPL。他首先提出的关于开放源代码的概念完全是有意的,而并非出于偶然,和UNIX最初的开放发展理念是相吻合的。
我得承认,我对社会政治方面的问题了解得不多,而这些问题过去和现在对RMS都非常重要。我对他所创立的开放软件基金会的宗旨也知之甚少。事实是,我对1991年人们谈论的话题也没有多少记忆,这说明当时它对我的生活并没有产生多大的影响。我当时所关心的是技术,而不是政治--我们家里的政治已经够多的了。但拉尔斯是个思想理论家,于是我便跟在他身后去听听。
我在生活中第一次见到了典型的留着长发、蓄着长胡子的黑客形象,其代表就是理查德。这样的人在赫尔辛基为数不多。
我当时可能没有看到眼前的光芒,但我猜他说的一些话也多少给了我一些锾。毕竟,我后来为linux使用的就是GPL。就这样,我再一次走在了自己的前面。
1991年1月2日。
在我的日历上,圣诞节和我的二十一岁生日是两个最重要的能让我得到金钱的日子,而这一天是这两个日子之后商店开门的第一天。
我手里攥着在圣诞节和生日得到的钱,做出了一个重大的财政决定:准备买一台价格一万八千芬兰马克的计算机。这差不多等于三千五百美元。我没有这么多钱,所以打算首付三分之一,剩下的用赊账方式来付。其实那种电脑的价格是一万五千芬兰马克,其余的三千马克税款可在三年之内付清。
我去的是一家小店,也就是那种夫妻店,只是我去的这家只有丈夫,没有妻子。我对生产厂商不太在乎,所以决定买一台杂牌的,装在一个白色大箱子里的电脑。老板把一张价格表递给你,上面有你想要的CPU、价格以及硬盘的大小。我想要大功率的。我希望内存是4兆,而不是2兆。我希望我的CPU是33兆赫的,当然,要是16兆赫也能凑合。不,我要买就买最好的。
我把自己希望的规格告诉他们,他们就给你组装好。如今在因特网和快递的年代,这听起来似乎很怪。三天以后你去提货,但那三天就像过了一个礼拜。1月5日,我让爸爸开车帮我把新电脑运回了家。
这台电脑不仅是杂牌,而且其貌不扬。它的颜色灰蒙蒙的。我买这台电脑并不是因为它看上去很酷。它的样子极不好看,有一个14英寸的显示器,是我所看到的价格最便宜也最笨重的机器。我用“笨重”这个词,意思是说很少有人拥有这么大功率的电脑。我不想将其描绘成样子难看、但功能齐全的电脑--就像是一辆沃尔沃轿车。但事实是,我希望这台电脑靠得住,而且最终我需要升级时,它也能轻易地做到这一点。
这台电脑有一个DOS操作系统。我想使用UNIX的变体MINIX,所以我订了货,然而这个操作系统需要等一个多月的时间才能到达芬兰。当然,你也可以在一家电脑商店买一本关于MINIX的书,但人们对这种操作系统的需求非常之少,所以你必须事先向书店订购。操作系统的价格是一百六十九美元,再加上税,还有别的什么费用。当时我觉得这简直太不可思议了。坦白地说,我今天仍旧这样认为。当时那一个月让我觉得就像度过了六年。在我等待买我的PC机时,也没有经受过那样大的烦躁不安。
当时正值隆冬。你若从寝室里出来,就可能会遇到被老太太们撞倒在雪地上的危险。这些老太太们实在应该呆在家里为她们的家人煮煮白菜汤,或一边织毛衣一边在电视上看冰球,而不是应该出来趔趔趄趄地瞎溜达。
那个月里,我基本上是在用新电脑玩“普鲁士王子”游戏。不玩时就看书,以便弄明白我买的电脑的功能。
MINIX软件终于在一个星期五的下午到了,当天晚上我便将其装了上去。你得用十六张软盘才能把这个软件装入计算机。然后整个周末就都花在了熟悉这个新系统上。我学会了这个操作系统的好的一面,但更重要的是,也了解到了我不喜欢的一面。我从大学的电脑上把我熟悉的程序下载下来,来弥补它的不足之处。总之,我用了将近一个月左右的时间,才使这个系统完全变成了我自己需要的系统。
住在阿姆斯特丹的、撰写MINIX的安德鲁·塔南鲍姆想把这个操作系统作为教学工具,于是在一些不利的方面它都被故意损坏了。MINIX也得到了一些改进,最出名的一个改进是一个叫布鲁斯·伊文斯(Bruce Evans)的澳大利亚人进行的,他使用的是MINIX386。他的改进使MINIX在386上运行起来更方便。在我购买这台电脑之前,我就一直在网上跟踪MINIX的消息,所以从一开始我就想使用它的升级版。但是,你不得不买MINIX的正版,然后再做大量的工作,引入伊文斯的改进--这是工作的主要任务之一。
MINIX有一些性能令我很不满意,其中最大的失望是终端仿真(terminal emulation)。仿真很重要,因为我只能依赖这个程序,才能让我家里的电脑模仿大学的电脑。每当我拨电话接通大学的电脑,使用强大的UNIX工作或仅仅是上网时,都使用终端仿真程序。
于是我开始做一个项目,制作自己的终端仿真程序。我不想在MINIX底下做这个项目,而是想在硬件水平上完成它。这个终端仿真项目也是一个很好的机会,可以让我了解386硬件的工作性能。我前面已经说过,这时正值赫尔辛基的冬天。我的电脑又笨又大。这个项目最重要的部分就是悟出这台机器都能做些什么,并从中获得乐趣。
我不得不从BIOS开始,BIOS是计算机启动的早期ROM编码。它可读软盘和硬盘。所以这次我在软盘上操作。它读出软盘的一个扇区并跳到那里。这是我的第一台PC,我不得不学着如何进行这种操作。386是以“常规模式”启动的。但为了充分利用全部的CPU和进入32比特模式,你只得进入“保护模式”。在此之前,你得进行大量的复杂的测试。
为了制作仿真程序,你需要了解CPU是怎样工作的。其实,我用汇编语言收发室的部分原因就是为了了解CPU。其他你还需要了解的事情包括:怎样写入显示器,怎样读键盘输入,怎样读写调制解调器--但愿我的这些文字不会把非电脑迷们吓跑。
我想出两条独立的线程。一条线程从调制解调器读出,然后在显示器上显示。另一条线程从键盘上读出,然后写入调制解调器,这样就会在两条线程上运行着两条管道。这叫做任务转换,386有支持这一程度的硬件。
我写的最早的试验程序是使用一个线程将字母A写到显示器上。另一个线程写B。我知道,这听起来没有什么奇怪的。我把此编入程序,让其在一秒钟之内出现若干次。在定时器的帮助下,我使这个程序这样运转:显示器上先出现一连串的字母A,然后突然之间,转变成一连串的字母B。从实际的角度看,这是一个完全没有任何用处的练习。但却是一个很好的方式,显示出我的任务转换是可行的。做到这一点大约花了我一个月左右的时间,因为我必须一边做一边学习。
于是,最终我便能改变由一连串A和一连串B组成的两个线程,从而使数据一个读自调制解调器,再写入显示器,另一个读自键盘,再写入调制解调器。我有了自己的终端仿真程序。
每当我想读新闻,我就运行自己的程序。我把自己的软盘插进,重新启动机器,就能从大学的计算机里读新闻了。倘若我想改进终端仿真组合程序,我就启动MINIX,用它进行编程。
对此我感到非常骄傲。
对于我的了不起的个人成就,萨拉是了解的。我显示给她看,她盯着显示器看了大约五秒钟,看着上面是一串A和一串B,说了声“很好”,便没什么感觉地走开了。我意识到我的成绩看上去并不辉煌。它虽然看上去平平,背后却包含了大量的工作,犹如你指给人看你铺设了一条长长的柏油马路,但想向别人解释这条马路的意义是完全不可能的。另一个目睹我成绩的人大概是拉尔斯--另一个讲瑞典的学生,他和我同一年主修的计算机专业。
当时是三月,也可能是四月,就算彼得盖坦街上的白雪已经化成了雪泥我也不知道。不过我也并不关心。大部分时间我都穿着睡衣,趴在我相貌平平的计算机前。窗户上的窗帘遮得严严密密,把我和阳光--更不用说外部世界--隔离开来。我每月都要为新电脑付款,预计在三年之内付清。当时我不知道的是,我的款项在第二年的就不用再付了。那时我已经写出了linux,它将被许多人见到,而不仅仅只是萨拉和拉尔斯。当时,现在跟我一起在Transmeta公司工作的彼德·安文(Peter Anvin),为了帮我偿付我的电脑钱,开始在因特网上为我募捐。
钱就这样来了。别人都知道linux并没有让我获利,于是人们便觉得,让我们大家凑点钱,替李纳斯把电脑钱还清。
这实在太好了。
我实在是没有钱。我一向认为不应该向别人要钱或乞求钱,这一点非常重要,但事实上我却得到了钱,所以……让我激动得无话可说。
linux操作系统就是这样开始的。
我的实验程序变成了终端仿真组合程序。
《熏鲱》杂志将我派往芬兰,去采写报道奥卢的文章。奥卢是一个新崛起的高科技中心,虽然它的位置十分可怕:离北极圈开车只有几个小时的距离,里面却有一百四十一家新成立的公司。这是一次极好的机会,我可以在赫尔辛基见到李纳斯的父母和他的妹妹萨拉。
李纳斯父亲尼尔斯的绰号叫尼基,他在赫尔辛基火车站广场对面一家饭店的大堂里见到我,饭店的名字叫瓦库那。他身材瘦长,戴着厚厚的眼镜,留着列宁式的胡子。他刚刚结束了芬兰新闻社派他在莫斯科长达十年的工作,目前正在写一本关于俄国的书,并正在考虑是否去华盛顿任职。他觉得那个地方没有什么意思。几个月前,他荣获了著名的全国新闻奖,他的前妻安娜后来说那个奖项“使他变得温和了许多”。
黄昏时分,他开着他的沃尔沃S70轿车,拉着我去看被白雪覆盖的、李纳斯成长的地方。他指给我看一幢结实的建筑物,说那是父子俩都曾就读过的小学。然后我们又驱车路过了李纳斯生下来后度过的最初三个月的他祖父母的公寓,接着又来到了那栋俯瞰花园的楼房,他们全家在那里过了七年。其中的一年尼基曾前往莫斯科,成为一名共产主义者。当时李纳斯五岁。而后他又指给我看那座黄色的建筑物,尼基与安娜离婚后,李纳斯和他妹妹就住在那里。李纳斯年轻时的电子商店已经不存在,在街头原来的地方现在是一座成人录影带小铺。最后我们驱车路过了最重要的一幢物,即五层楼高的李纳斯外祖父母居住的公寓,也就是linux系统的诞生地。安娜至今仍住在那里。它看上去就像是十二月底曼哈顿的东区。
尼基很滑稽,又聪明,善于自嘲,而且许多动作和他儿子一样,比如在说话时喜欢用一只手握住自己的下巴。他们俩笑起来也很相似。然而这位社会主义的忠实信徒和他儿子不同的是,他终生热爱体育。他在篮球队打球,天天跑五英里,每天早晨在结冰的河里冬泳。虽然他已经五十五岁,但走起路来却精神抖擞,看上去只有他三分之二的年龄。他和李纳斯的另一个区别是:尼基似乎过着一种非常复杂的浪漫生活。
我们在赫尔辛基市中心的一家拥挤的餐厅里吃晚饭,尼基谈起了李纳斯作为一个激进的共产党人的儿子成长起来所面临的困难。他说他自己常常出外演讲,一度还做过一个小官。他说李纳斯由于父亲的激进政治观点,常常受到同学们的挪揄,有些父母甚至不让他们的孩子和他一起玩。正因为如此,尼基解释说,李纳斯的童年生活虽然被左倾的政治思想所包围,他却努力使自己从这种氛围中脱离开来。尼基说:“他不让我谈论我的观点,我一开口讲他就会离开房间。要么他说话时就总跟我对着干。我知道,由于他有这样一个父亲,在学校里总是受到嘲弄。他对我的态度是:‘别让我陷入这种尴尬的境地。’”
尼基把带到他家,他说我们可以在他的厨房里喝两杯啤酒。他的家坐落在中央商业区的北部,那里一排排的楼房是二十年代为工人阶层建造的。我们爬上楼梯到了他的公寓,在门口把鞋子脱掉。他的房间让人回想起六十年代末期反对工业文明的景象:灯罩是用手织的篮子做的,墙上挂着第三世界的图片,屋子的角落里还垂吊着各种植物。我们在厨房的餐桌前落座。尼基一边斟啤酒一边谈起了他当父亲的感受:
“一个当父母的人不应该从他养育了自己孩子的角度去想问题。”他说。这时他用手机给和他同居的一个女人打电话。他说李纳斯现在刚刚开始阅读他多少年来一直敦促他读的历史书籍,但李纳斯大概还从来没有读过他自己爷爷写的诗歌。
我问尼基他是否对电脑程序表示过任何兴趣,或让李纳斯教给他一些最基本的电脑常识。他回答说从来没有。他说父子完全是不同的个体,而深入探究李纳斯的激情就等于“侵犯他的灵魂”。看起来,他作为一个名人的父亲似乎不觉得有什么让人不舒服的地方。他获得全国新闻奖后,有一家报纸发表了一篇关于他的小传,其中引用他的原话说,在李纳斯还很小的时候,每当他去外面的操场接李纳斯时,别的孩子就会指着他说:“瞧,那是李纳斯的爸爸。”
李纳斯的妹妹萨拉?托沃兹是乘火车从她的家赶过来的,她的家在一座小城市里,位于赫尔辛基以西,那里街道的牌子首先是瑞典语,其次才是芬兰语。在那里,她买得起带澡盆和桑拿浴的公寓,而且那里的人们在大街上讲的是瑞典语,而不是芬兰语,这让她感到很高兴。正如她本人解释的那样,她是少数民族中的少数民族:在少年时期,她就皈依了天主教,将自己划归到不到百分之十的芬兰公民之中。她不信教的父亲为此曾在几个礼拜的时间里气愤地不认这个女儿。
今天她来到赫尔辛基,是实施一项政府资助的项目,给年轻人教授《教理问答》。她为人爽快乐观,虽然已经二十九岁,却像一个诚恳热心的高中生似的有着真诚的精神。她皮肤白晰,圆圆的脸,和她的哥哥有点相似。但显而易见,和她哥哥相比,她更爱与人接触。她总是不停地按手机上的号码,给她的朋友发出信息,约他们当天晚上见面,然后又不停地查看他们的回答。她所做的翻译生意非常成功。
当时是中午,萨拉带着我去见她的母亲,并一起吃午饭。在路上,她时不时停下来指给我看童年呆过的地方,比如猫园和小学。“我父母是地地道道的共产主义者,我们就是在这种环境下长大的,认为苏联是最好的。我们还去过莫斯科,”她解释说,“我记得最清楚的是那里的一家特大的玩具店,赫尔辛基所有的玩具店都不如那家大。”她父母在她六岁时离了婚。“我刻他们对我说,爸爸 永远搬出去住了。我当时觉得这很好。这样一来就不会再吵架了。其实他是去莫斯科长驻,于是我们慢慢习惯了他不在身边。”她说。萨拉十岁时,决定搬到她父亲那里去住,不再和她妈妈和哥哥一起住。她父亲当时搬到了邻近的城市艾斯普。“这并非因为我不想和妈妈一起住。我是不想和李纳斯住在一起。这样一来,除了周末,我们俩就不用吵架了。我们俩总是吵个没完没了。随着我们渐渐地长大,我们俩吵的也少了。”
我们来到她妈妈位于一层的公寓。安娜?托沃兹见到我们后非常高兴。她的绰号叫米基。她拒绝让我遵循芬兰人的习惯,把鞋子脱掉。“别傻了。我这地方本来就脏得一塌糊涂。不脱鞋子也无所谓。”她个子不高,黑头发,反应敏感,非常机智。我们刚刚到达,电话铃就响了。一个地产商想让我去年看一个空着的公寓,这样我就可以将它描绘给米基在美国的儿子,并把房子的所有材料亲自交给他,因为李纳斯有可能要买下这个房子,作为在赫尔辛基的临时住所。于是我们进入了那幢庞大的公寓楼。那个房地产商长得怪怪的,有点像《美国美人》影片中的一个人物。他让我们在观看房子之前,先在鞋子上套一个蓝色布鞋套。过了一会儿,房地产商自鸣得意地说:“你们瞧这栋房子,要是你们有不希望被太阳损坏的古董的话,这里是最理想不过的了。”米基狡黠地朝我瞟了一眼,然后不无嘲讽地说:“哦,你说话真风趣,干吗不直说这个房子没有阳光?”
我们又回到了她不大的厨房。米基坐在一个长方形的餐桌旁,餐桌上铺着一张五颜六色的桌面,米基将咖啡倒入一个非常大的杯子里。她的公寓和她前夫的一样,到处都是书籍和民间艺术品。挂着的窗帘是黑白相间的。这个公寓本来有三个卧室和一个厨房。她的孩子们搬出去后,米基便搬进了过去由萨拉占着的最大的卧室。她后来把李纳斯的卧室和她从前卧室的墙壁都拆了,创造出一个巨大的带厨房的客厅。她指指一个空着的地方说:“他过去的电脑就放在那里。我想我应该在那里挂上一个牌子什么的。你觉得呢?”她一根接一根地抽着烟,讲起话来滔滔不绝,而且英语说得很漂亮,说话时几乎没有什么停顿。“李纳斯可不是你在大街上遇到的那种笨孩子”,她说。在她卧室的墙上挂着一面巨大的苏联国旗。那是乔科在一次国际跳台滑雪比赛中买的,作为礼物送给了李纳斯。李纳斯把它放在一个抽屉里,一放就是好几年,但米基把它挂在了她的床头上。
米基拿出了一个相册,里面有一些全家的照片。有一张是李纳斯两三岁时,赤身裸体地站在海滩上。还有一张也是他,也是那个年龄,在月光下瞎跑着,地点是赫尔辛基附近的一所著名的城堡。另一张是他少年时代,看上去又瘦又笨。还有一张是米基,参加她父亲的六十岁大寿。她指着她的姐姐和哥哥说:“她是个心理学家,在纽约。他是个核物理学家。而我,是我们家的败家子。对不对?可我是第一个抱孙子的。”她说完又点起一根烟。
我们去一家叫张伯伦的餐厅吃中饭。萨拉又查看她的手机,米基要了几种不同的咖啡。米基回忆说,她和尼基曾争论过是否要强迫李纳斯放弃橡皮奶头。他们争论的方式很有意思:相互写纸条,然后把纸条放在茶几上。她们还谈起了李纳斯的记忆力非常之差,常常记不住别人的相貌。萨拉说:“要是你和他一起看电影,主人公本来穿一件红色衬衫,但后来换了件黄色的,他就会问:‘这人是谁?’”他们全家还骑自行车去瑞典野营度假,晚上就睡在摆渡船上。第一天萨拉的自行车就被人偷走了,于是不得不花钱又买了一辆新的。他们的帐篷就搭在一个悬崖上。母女俩去游泳和钓鱼,李纳斯就一个人呆在帐篷里读了一整天的书。后来来了一场暴风雨,一直睡在帐篷里的李纳斯对突如其来的气候变化竟全然不知,但正是因为他在帐篷里,才没使帐篷被风吹到波罗的海里去。
米基回忆起李纳斯整天躲在他的房间里玩电脑的岁月时,不禁大笑起来。“尼基常对我说:‘把他踢出去,让他去找个工作。’但李纳斯对我不是什么负担。他的要求不多,他所要求的一切就是他的电脑。那是他的事情,他的王国,他有权那样做。我对他所作的事情一无所知。”
如今她和其他人一样,对她儿子的活动非常熟悉。各种媒体不断地寻找米基和她的家人搜集材料。有一些问题他们都转给了李纳斯,但他告诉他妈妈、爸爸和妹妹运用他们自己的判断力回答那些问题。可每当他们写好回答后,一般又都寄给李纳斯,在交给记者之前都希望得到他的同意。
几个月前,我曾给米基发过电子邮件,请求她写点关于李纳斯童年生活的东西,米基的回信非常长,而且写得非常用心。她文章题目是“从一个电脑迷中培养出李纳斯”。在文章中,她描述了对她蹒跚学步儿子的早期观察,说在他身上看到了她父亲和她哥哥身上所具有的对科学执着的迹象。
“当一个问题出现并始终困扰一个人时,你就会看到他的眼睛变得发直,他再也听不到你在说什么,也不回答你简单的问题,而是完全陷入眼前的问题之中,在解决方案的过程中废寝忘食,而且从不放弃。当然,他在日常生活中会被琐事打断,但事后还会继续单枪匹马地思索,这时你便知道他是什么样的人了。”
她还写了李纳斯和萨拉这两个兄妹之间的争执和不可调和的不一致(比如,萨拉:“我不喜欢蘑菇、猪肝之类的味道。”李纳斯:“你必须喜欢。”)他俩偶尔也会流露出尊重对方的态度。“李纳斯在很小的时候,有一次对我袒露出对他妹妹的佩服。他那时大概是五岁或七岁,突然严肃地对我说:‘你瞧,我脑子里从来没有新的思想,我想的事都是别人先想出来的,我再把它们重新组织起来。但萨拉想的事都是别人从没有想过的。’”
“这些回忆让我觉得,我至今仍认为他没有什么‘特殊的’才华,肯定没有在‘计算机’方面的才华--假如他没有这方面的才华,断然会把精力放在其他方面。在某一天或某个年代,他就会集中于应付另一个不同的挑战。我想他会的(我的意思是说,我希望他不要永远陷在linux软件上)。因为我认为他的动力并非是‘计算机’,也决不是名声和财富,而是诚实的好奇心和征服所面临的困难的愿望,以及用最好的办法去克服困难。因为事情就是如此,他决不会后退。
“我想我已经回答了李纳斯是一个什么的孩子的问题--不错,他是非常好养的。他惟一需要的就是一个挑战,剩下来的事情就由他自己去解决了。就像我和萨拉过去常说的,只要给他一间斗室,里面放上一台电脑,再给他一些面条吃,他就会觉得无比幸福。
“除了……自他打小起我就一直揪着心:照他这样怎么可能找到一个像样的女孩?我只得再次求助于父母们屡试不爽的办法--祈祷。你们瞧,还真灵验了!他是在大学教书时遇到塔芙的,她让他在几天之内忘记了他的猫和他的电脑,这毋庸讳言是上天的胜利,正如其一贯获胜那样。
“我唯一的希望是名声不要让他分心太多。他的出名并没有改变他,但他变得温和多了,人们接近他时他也愿意和别人说话了。拒绝别人也让他感到比较为难了。但我想让他改变的与其说是所有媒体的喧嚣,还不如说主要是由于他成为了一个丈夫和一名父亲。”
显而易见,母亲和女儿都对媒体的喧嚣了如指掌。Transmeta公司郑重宣布他们的决定的第二天,我们在吃中午饭时,米基就问萨拉:“今天的报纸上有什么消息吗?”
当天晚上,在她去上班的路上,她让出租汽车司机在我住在旅馆门口停下,她送来了一只松木儿童椅子,让我亲自交给帕特里夏。同时还有一张一处公寓的楼层平面图。
下面我谈谈第一次见识李纳斯那出色发明的情景。
记得那是1992年上半年的一天。我骑着自行车,随便溜达到了李纳斯乱七八糟的家里。和往常一样,我一边看着音乐电视节目,一边询问李纳斯有关他那操作系统的发展状况。要是平常,他会咕哝一些毫无意义的东西。这次,他却径直领着我穿过脏乱的厨房,来到他那一团糟的房间里的电脑旁。
李纳斯将用户名和密码输入了电脑,接着出现的是command prompt命令提显符。他展示了命令处理程序(command interpreter)的一些基本功能--但是没什么特别的。稍许,他回过头,脸上带着李纳斯式的微笑,问道:“看起来像DOS,是吗?”
我点点头。我一点也不吃惊,因为那看起来真的像DOS--没什么新意,真的。我真该知道,如果不是有什么特别的话,李纳斯绝不会那么笑。他转向电脑,又敲了几个功能键--出现了另一个登录屏,一个崭新的登录屏和崭新的命令提显符。李纳斯给我看了四个不同的提显符,告诉我这四个命令提显符可由四名不同的用户使用。
就在那时,我知道李纳斯创造了一种奇妙的东西。毫无疑问。
乔科。沃鲁马吉
“对我而言,那意味着电话一直占线,没有人能给我们打电话……后来,明信片开始从四面八方寄来。我想就是在那时,我意识到现实世界的人们确实在使用他所创造的东西。”
萨拉。托沃兹ÿ