只是为了好玩:Linux之父林纳斯自传
有三件事对生活是有意义的,它们是生活中所有事情的动机—一包括你做的所有事和任何一个生命体会做的事:第一是生存,第二是社会秩序,第三是娱乐。生活中所有的事都遵循着这个顺序,娱乐之后就再无其他。所以从某种意义上说,生活的意义就是要你达到第三个阶段。一旦达到了第三阶段,这辈子你就算成功了。但是你得先超越前两个阶段。
就在我差不多三个月大的时候,爸爸应征入了伍。我猜他大概是不愿服兵役的,但没办法,要么去服十一个月的兵役,要么坚持拒服兵役最后去坐牢。后来他成了一个优秀的军人,而且还是个杰出的神枪手,所以他常得到嘉奖,可以享受周末回家的特权。
以前的电脑对孩子还是挺有好处的,结构比较简单,像我这种呆子都能打开后盖来鼓捣。现在的电脑可就不一样了,复杂得跟汽车似的,想把它们卸了再组装回去变得越来越难了.所以,要搞清楚这里头究竟怎么一回事也越来越难了。你想想看,你对自己的汽车做过比更换滤油器更复杂的活儿吗?
我们坐在汽车后座,我手上摆弄着录音器,随口问了第一个问题 你的家人都是搞技术工作的吗? 不是,他们大多都是记者,”他回答,并补充道:“所以我知道你们就是一帮无赖。 他知道说了这句话后,我肯定不会让他就这么一带页过。哦,那你就是从无赖堆里混出来的咯?”我回应道。 这位世界上最出色的程序员放声大笑,一不小也将嘴里的可乐喷到摄影师的后颈上,他的脸唰的一下变红了。那个难忘的下午就这么开始了。
绝大多数受欢迎的技术人员,甚至大多不那么受人欢迎的技术人员都有一股强烈的愿望,就是想让人知道他们有多么优秀。不仅如此,他们还觉淂自己肩负着重大的使命,甚至比维护世界和平还来得重要。但林纳斯却不是这样。事实上,他并不以自我为中心,和他相处无需一丝防备。这让他在硅谷那帮夸夸其谈的精英中显淂分外可爱。他似乎超越了一切,超越了新新人类,也超越了凭借科技发家致富的亿万富翁。与其说他像是在世界聚光灯下的驯鹿,倒不如说他像是个快乐的外星人,到地球上来告诉我们这群自私鬼的生活方式有多么荒诞。
我就读的高中和美国大多数城市的高中不同,不会为那些天赋异禀或野心勃勃的学生专门设置课程。那种学校并不适合芬兰,芬兰的学校不会专门把优等生挑出来,也不会这样对待差等生。不过,每个学校倒是都设有一门特色课程,这门课程不是必修课,但却是这个学校特有的,在其他学校学不到。在我们诺尔森高中,这门课就是拉丁语。学拉丁语很有意思,比学芬兰语和英语好玩多了。
就算是辅导数学,我带女孩回家的次数也不多,而且还都不是我主动提出的。但我爸爸就是心怀幻想,老觉得她们来我家不只是为了补习数学。(在他看来,她们都认同他的“硕鼻=硕人”等式,所以觉得她们大概都是对我感兴趣才来的。)要是她们真的想找一个“数学男”来玩点刺激的,找我肯定找错人了,我都没有好好配合过她们。本来就是嘛,我就没听懂过她们说的“养大型宠物”到底还有什么意思。我试过花很长时间照顾隔壁邻居家那只7公斤重的宠物猫,还是没弄明白这有什么大不了的。
在芬兰,每个成年男性都要应征入伍。不少男生都是高中一毕业立马就服兵役,而我觉得我得先完成一年的大学学业,然后才去服兵役更靠在芬兰服兵役,其实是有得选择的:要么入伍服役八个月,要么做十二个月的社会服务。要是你有特殊的宗教原因或者其他重要的理由,两样都可不干。
要是你选了兵役的话,还得面临两个选择:要么按要求做满八个月的普通士兵,要么入读军官培训学校做十一个月的军官谈资。说真的,有些人甚至还觉得芬兰要求所有男性服兵役,最主要的原因是为了让他们在余生中,喝啤酒侃大山的时候都有共同话题可聊。大家都经历过一些相同的奇事,所有人都痛恨军队,但也都乐意谈起在军队里的日子。
有人把芬兰人对科技的领悟力归功于其强大的教育体系——芬兰人的受教育率是全世界之最,而且上大学还不用缴学费,所以有些学生会在大学里待上六七年,像我就待了八年。一个人花大量的时间待在大学里,再怎么不济也能学点东西。
游戏之所以一直引领着技术的潮流,而且通常程序员之所以最先写的程可机问序都是游戏,这都是有原因的。有一部分原因是这样的:最聪明的程序员都是些躲在自己房间里玩的十五岁的孩子(十六年前我是这么认为的,现在我还是这样想的)。此外,其实还有一个原因:游戏总是能够促进硬件的发展。在众多电脑程序中,游戏是少有的能办到这点的。处理文字的时候,慢上个一两秒你也许不会在意。但是在游戏里,即使是十分之一秒的延迟也会非常明显。
我在1990年5月7日退伍。虽然朵芙可能会告诉你,我连结婚周年纪念日也记不住。不过呢,我不可能忘记离开军队的日子离开军队后我想做的第一件事,就是弄一只猫来养
每个人都会遇到一本改变自己一生的书吧。比如说《圣经》《资本论》《相约星期二》《在幼儿园学会需要知道的一切》,诸如此类的。(如果你们读了这本书的引言和我写在序言《生活的意义》里的理论,我诚挚期望,你们会认为这本书也有同样的功效。)而安德鲁·坦尼鲍姆所著的书《操作系统:设计与实现》让我脱胎换骨,达到了一个全新的高度,改变了我的一生。
于是,整个夏天我就做了两件事。其一是把719页的《操作系统:设计与实现》读了多遍;其二,除了第一件事以外什么都没做。可以这样说,那本红色软封皮的教科书住到了我的床上。
赫尔辛基大学给这台 MicrovaX电脑配了16个授权用户。也就是说这门课只能招32个学生—我想他们是这样考虑的,白天16个学生使用,晚上给另外16个使用。老师跟我们一样,对Unix也不熟悉。他一开始就很坦率地告诉了我们这点,所以这也不是什么大问题。不过他只会提前预习下一章,但有时候我们会提前跳着读后面三个章节。于是上课就变成了一种师生比赛,学生们向老师提一些三章后才学到的问题,看能不能把老师问倒,看他是不是已经读到了那里
几乎所有你在Unix系统上做的事情都是由6个基本操作完成的(这6个操作叫做“系统调用”,因为这些操作就是你对操作系统的调用,从而令操作系统为你完成任务。通过这6个基本的系统调用,你几乎可以在Unix上完成所有事情。Unix系统有一个fork(创建子进程)的概念,这也是 Unix系统的基本操作之一。当一个进程调用fork指令的时候,它就把自己给复制下来了。这样你就有了两个一样的进程,新建的子进程一般用来执行另一个进程—用一个新的程序替换掉它自己。这就成了系统的第二个基本操作。接着就是另外的四个系统调用—打开(open)、关闭( close)、读取(read)、写入(wite),都是用来访问文件的。这6个系统调用组成了Unix的基本操作,从而构成了unix系统
萨拉10岁的时候,她选择了搬去和父亲住在一起,不再和妈妈还有林纳斯住在一起。那时她父亲巳经搬到了邻近的埃斯波城。我并不是不想和妈妈一起住,我只是不想和林纳斯一起住。那样一来除了周末,我们就不用以架了。否则我们平时总是吵个不停。后来幔幔长大,也就渐渐不再吵架了。
如果你见过一个人,遇到问题并久久被其困扰的时候,他两眼发直,听不见你说话,甚至连一个简单的问题都答不上来,其实他是在会神贯注思考眼前的问题,为了解决问题,他废寝忘食也要想出办法,页且从不轻易言败;当然,他可能会受到干扰,日常生活里这种事不可免,但是排除干扰后,他还能愉快且固执专一地继续思索——这时候,你就知道林纳斯是什么样的人了
伟大的数学家不会采用既繁琐又无趣的方法解决问题,因为他们能理解问题背后的真正内涵,并且利用这个内涵找到更为简便的方法,从而得出答案。这个道理放到计算机科学上绝对也是一样的。
12月时,德国有个家伙在尝试编译内核时无法运行GCC编译器,因为他的电脑内存只有2MB,而当时启动GCC需要占用1MB以上的内存。他问我能否作一点改进,让 Linux可以用一个比较小的编译器来进行编译,节约内存。虽然我自己觉得增加这个特性没什么必要,但还是愿意为他做这个改进。这个程序叫做“分页到磁盘”( page-to-disk),有了这个改进,哪怕用户的电脑只有2MB的内存,也能利用磁盘增加内存的空间,而不会占用过多内存空间。这个改进是在1991年的圣诞节前后做的。我记得挺清楚,12月23日,我还在尝试着让分页到磁盘程序运行起来。12月24日,程序好像能运行了,但是隔段时间就会让系统崩溃。到了12月25日,程序终于做好了。这可以算是我专门为满足别人需求而定制的首个功能。我对此非常自豪。
事实上,我之所以拒绝别人的捐赠,也经过一定的深思熟虑。最初发布Linux时,我觉得自己是在循着几个世纪以来的科学家和学者们的脚步前进,而他们的成就也是建立在前人努力的基础上。借用艾萨克·牛顿爵士的话来说就是,“我站在了巨人的肩膀上”。我不仅要将我的软件与他人共享,让他们觉得我的工作是有用处的,而且还想收到他们的反馈啊(好吧,当然也要赞美啦)。他们的反馈意见让我有机会改良系统,要是我反而问他们索取报酬的话,就显得太不知好歹了。我想,要不是在芬兰长大,我可能就不会这么想。在我们老家芬兰,只要有谁显露出一丝贪婪,人们就会猜疑他,如果不算是嫉妒的话(诺基亚当初在我们国内也受到这样的礼遇,直到它在全球赚了大钱,让很多芬兰人富起来之后,这种猜疑鄙视的态度才开始有所改观)当然了,若不是我有一个顽固的学院派祖父和一个坚定信仰共产主义的父亲在他们的潜移默化中成长,我肯定也不会干这种不要钱的活儿了。
linux系统图形界面的诞生 (X视窗系统是依赖Ⅹ服务器运行的,X服务器提供了图形用户界面的环境。服务器与客户端进行对话,就好像客户端说:“我要一个视窗,就要这么大的。”这个交互过程通过一个套接字层来完成,或者更正式地说,通过Unix域套接字来完成。这样就能实现Unix系统的内部对话,套接字其实也能用来进行网络对话。就是这样,奥瑞斯特给 Linux系统编写了第一个套接字层,以此把Ⅹ系统植入 Linux。奥瑞斯特的这个套接字接口只相当于插件,并未整合其他代码。虽然它还很不成熟,但是我非常欣赏这个插件,因为 Linux分需要这样的插件。)
朵芙vs电脑: 刚住进朵芙公寓里时,我的电脑等了两个星期才拿过去,我竟然没觉得不习惯。从我11岁那年坐在外公的膝头上摆弄计算机开始,忽略掉服兵役那段时间不计,这两周可是我离开计算机最长的一段时间了。别说我唠叨,反正除去兵役期间,这是我此生离开电脑时间的最长记录了。不管怎么说,我就做到了(我再说一遍,细节没那么有趣啦,就不细说了)。那时候我和妈妈见过几次,听到她喃喃地说些什么“上天真是显灵了”。相比之下,我觉得爸爸和妹妹只是觉得有点儿惊讶而已。
林对睡觉的喜爱: 有些人喜欢加班加点干活,非得轮上两班、三班甚至四班的活儿不可。我不是那种人。不管是全美达的项目还是 Linux的任务,我都不会牺牲睡眠时间。好吧,如果你非要听真话,其实是我非常爱睡觉。有些人觉得这只是懒惰的接口,我只想一把抓起枕头朝他们扔过去。我有一个超级高明的借口而且坚信不疑—一如果你多花一点时间睡觉,比如说,睡足十个小时,你可能会损失一些工作时间,但是一旦睡足了觉,那么在醒着的几个小时里,思维就会一直保持敏捷,大脑的状态就会像六缸引擎火力全开那样的—或者就四缸吧,差不多这样。
我和乔布斯的世界观存在根本分歧。史蒂夫就是史蒂夫,跟媒体描述的没什么两样。他只对自己的目标感兴趣,尤其市场这一块,他极为看重。而我则对技术有兴趣,所以他的目标和言论打动不了我。他一直在强调,要是我想进入台式机市场,就应该与苹果联手。但我心想:我不在乎啊!为什么我就应该对苹果的事情感兴趣?我就是不感兴趣,我就是觉得苹果没意思。我的人生目标可不是为了抢占台式机市场啊(当然,这种情况总有一天会发生)
持自己的立场,我感到挺有压力的(对我来说,在互相竞争的 Linux公司中保持不偏不倚的立场是很重要的。红帽公司为了表示感激而十分好心地给了我一些期权,我也并不因此出卖自己,绝对不。不过,当伦敦的一个企业家要给我一千万美元,要我做他们那家羽翼未丰的 Linux公司的董事会挂名成员,我拒绝他就有我的道理。他没能理解,不费吹灰之力就能得到那么大笔钱,为什么我会拒绝。他仿佛在这样质问我:“这可是一千万美元,难道你不明白吗?”
我要讲讲我人生的金科玉律。第一条是“己之所欲,施之于人”,要是能恪守这一条,在任何情况下你都懂得该怎么行事。第二条是“以自己做的事为荣”。第三条是“还要乐在其中”。
知识产权最根本的问题已经开始显露出来了:作为版权所有人,你可以将作品卖给别人,而自己毫无损失。这买卖对你来说没有一点风险,事实上,在这一点上,争论变得越来越别扭了,那些强烈支持知识产权法的观点大多集中于给创造者及艺术家更多的“保护”。人们好像从来就没有意识到给予某些人这么强大的权利意味着同时剥夺了其他人的权利。
以前人们就是这么做的,这其实也是后来引入专利的相关法规的原因。为了鼓励个人和公司公开自己的秘密,专利法规会在商业市场上给予你定期限的保护。当然了,你得把你成功的秘诀公开才行。这是一种“投桃报李”的基本形式:你告诉大家你是怎么做到某事的,我们就给你一定年限的专有权。
这也形成了一个有力的正反馈循环。因为知识产权是一项极好的收人来源,为了创造更多的知识产权,大量的钱就会被投入进去。这件事是至关紧要的。历史上不少战争成为了许多伟大发明和工程的进步源泉(当初人们也是为了军事目的才研发计算机的),同样的道理也适用于知识产权的虚拟战争,它也促进了工程的进步,还为科技发展带来了前所未见的资源。这是好事。
开源运动如此神奇,其中最令人费解的一点,就是为什么会有这么多聪明绝顶的程序员愿意在完全无报酬的情况下去屈尊工作。用一个动机来概括这一切,最合适不过了。在生存已经或多或少得到保障的社会里,金钱不是最大的动机。众所周知,人们被热情驱使的时候,就能把工作做到最好。要是他们能享受工作的乐趣,更是如此。对软件工程师来说是如此,对剧作家雕塑家和企业家来说也是如此。开源运动不仅给人们提供了一个在生活中释放热情的机会,还能使他们获得乐趣。在开源环境中,软件工程师不再只能与公司里雇来的那几个同行一起工作,而是能够与世界上最优秀的程序员一起工作。他们必须使出浑身解数才能赢得同行的敬重。这难道不是一种高效的激励方式吗?
Linus和Git: 2002年, Linux内核开发团队开始采用 BitKeeper作为代码版本管理工具。BitKeeper是一套分布式的版本管理工具,它满足了 Linux内核开发的技术需求。但是 BitKeeper只是暂时对 Linux等开源软件团队免费,并不是自由软件。2005年Bitmover公司不再免费赞助 Linux开发团队。对此林纳斯表示非常遗憾,但遗憾之后他并没有自怨自艾伤心落泪,而是愤怒地与其他几个小伙伴花了几个星期完成了一套新的分布式代码管理工具,命名为Git两个月之后,Git发布了官方版本,并在不同的项目中应用,自由软件社区给予了Git广泛的支持。