【乐者为王】读书笔记

我们曾经所做的一切事情,似乎最终都是为了我们自己的乐趣


更新历史

  • 2017.02.23: 完成初稿

乐者为王

  • 李纳斯:我对生命的意义有种理论。我们可以在第一章里对人们解释生命的意义何在。这样可以吸引住他们。一旦他们被吸引住,并且付钱买了书,剩下的章节里我们就可以胡扯了。 大卫:哦,是的。这倒像个计划。有人对我说,人类自从诞生起就一直有两个悬而未决的问题。第一个是:“生命的意义何在?”第二个是:“在一天结束时,我攒下的所有零花钱能干些什么?
  • 李纳斯:我有对第一个问题的回答。 大卫:答案是什么? 李纳斯:这个答案基本上简单而漂亮。它不会给你的生活以任何意义,但可以告诉你将发生什么。有三件事具有生命的意义。它们是你生活当中所有事情的动机,包括你所做的任何事情和一个生命体该做的所有事情。第一是生存,第二是社会秩序,第三是娱乐。生活中所有的事情都是按这个顺序发展的。娱乐之后便一无所的。因此从某种意义上说,这意味着生活的意义就是要达到第三个阶段。你一旦达到了第三个阶段,就算成功了。但首先要越过前两个阶段。
  • 李纳斯:我们还是来谈谈战争吧。很明显,它最初起源于生存,因为在你和水源之间有一个高个子家伙挡道。再后来,你必须和那个家伙为争夺一个妻子而搏斗。之后,就成了一种社会秩序。中世纪之前很长一段时间里战争就是这个样子。 大卫:战争是建立社会秩序的手段。 李纳斯:没错。但它也是把人自己塑造成社会秩序中一部分的手段 大卫:如今战争已成为娱乐? 李纳斯:对。 大卫:也许那些在电视上观看战争节目的人,会觉得战争非常有意思。 李纳斯:电脑游戏。战争游戏。有线电视新闻网。战争的原因也常常很有意思。对战争的看法也是娱乐。对性的需求其原因也常常是娱乐。当然,生存的功能没有泯灭,尤其是当你是一个天主教徒的时候,对不对?但即使你是一个天主教徒,有时你想到性的时候也包含享乐的需要。所以这并非只是纯粹的娱乐。在所有的事物中,一部分动机可能是生存,另一部分可能是社会秩序,剩下的就是娱乐。好,我说说技术。技术最初也是生存。生存的意思并非只是生存而已,而是为了生存得更好。为了从井里打水人类才发明了风车…… 大卫:火的发明也是这样。 李纳斯:对。这仍是为了生存,还没有达到社会秩序和娱乐的阶段。
  • 李纳斯:对。过去所有技术都是为了使生活更容易一些。是为了快点达到一个地点,货品更便宜一些,住进更好的房子等等。那么信息技术与过去的技术有何区别呢?人人都建立起联系后又会怎样呢,还有什么可做的?当然人们之间的联系可以建立得很好,但从根本上说与过去没什么区别。因此技术将把我们引向何处?依我看,下一个巨大的步伐就是迈向娱乐。 大卫:你的意思是,一切的一切最终都将演变成娱乐…… 李纳斯:这就是为什么Linux在某种程度上如此成功的原因。想一下那三个动机。第一个是生存,拥有计算机的人把这个视为理所当然。坦白地说,假如你有一台电脑,就意味着你已经不会再为基本的生计问题发愁了。第二个是社会秩序,建立社会秩序的动机显然是为了使各种各样的人能够各安其位。 大卫:你在Comdex电脑业会议上说的话非常不错,当时你说Linux的开发是一个全球性团队的体育项目。这一点基本上是由你创立的,伙计。 李纳斯:Linux表明了人们为什么喜欢团队体育项目,尤其是想成为团队中的一员。 大卫:是的,每天坐在电脑前,你大概希望觉得你是一个大团体中的一分子,任何事情中的一分子。 李纳斯:这就是社会层面,和其他团队体育项目一样。想象一下一支足球队里面的人,特别是高中的足球队。Linux的社会层面是非常非常重要的。但 Linux也是娱乐,这种娱乐是金钱很难买到的。当你处在生存阶段时,金钱是一个非常强大的动机,因为用金钱换取生存是件容易的事情。换取生存之类的东西是很容易的,但突然之间你进入了娱乐阶段,金钱就…… 大卫:金钱就没用了? 李纳斯:不是,并不是没用,因为显然你可以用钱买电影影碟、速度更快的汽车、更豪华的假期。还有许多东西你也可以买,从而改善你的处境。
  • 李纳斯:我们所说的都非常宏观,但我们指的不光是人,而且是生活。和熵的定律相似。根据“生活的熵定律”,一切事物都将从生存走向娱乐,但这并不意味着在某个局部地区没有倒退的现象,而且毫无疑问许多地方都有这种情况。有时事物往往会分裂开来。 大卫:但作为一个体系,一切事物都朝着一个方向发展…… 李纳斯:一切事物都朝着一个方向发展,但并不是同步的。所以从根本上说,性已经达到了娱乐阶段,战争已经快接近娱乐阶段了,技术也已经达到了这一阶段。新生的事物开始是为了生存,比如太空旅行,它在某个阶段是为了生存,然后成为一种社会秩序,最后达到娱乐的目的。可以用膜拜的角度看一下文明。我是说,文明也是以同样的格局出现的。文明最早是为了生存,比如大家聚在一起就会生存得更好,于是建立起了社会结构。最后,文明的存在是为了纯粹的娱乐,当然也并非完全纯粹,而且这种娱乐也并非有什么不好。古希腊人是以强大的社会秩序而著称的,他们也有不少娱乐。人人都知道那个时代产生了不少一流的哲学家。 大卫:那么这些和生活的意义有什么联系呢? 李纳斯:并非有何联系……只是说……存在着这类问题。 大卫:这其间的小小联系你还得想一想。 帕特里夏:妈妈,瞧那些牛。 李纳斯:所以,要是你知道生活的走向是这样的,那么毫无疑问,你的生活目标就中促成这一走向。而且这种走向并非是一个单一的行程。你做的一切都是许多走向中的一部分。你也可以问自己:“我做些什么才能使社会变得更好?”你知道你是这个社会的一部分。你知道社会正在朝这个方向发展,你也能帮助它朝这个方向走。 塔芙 (扬起鼻子):什么味?真难闻。 李纳斯:所以归根结底,我们都是为了开心。我们也可以坐在这里,完全放松,享受着汽车旅行。 大卫:仅仅为了开心? Just for Fun
  • VIC-20是最早的家用计算机之一。它不需要自己组装。你只须把它和电视连接上,打开,它便开始工作了,电视屏幕的上方会显示出大写字母“已准备好”的字样,然后是一个一闪一闪的光标,在等着你开始操作。 最大的问题是,当时在个人计算机上你没什么可做的事情。尤其是在早期,开发商业程序的条件在当时并不具备,你能做的唯一的事情就是在它上面用 BASIC语言编程序。我外公当时就是这么干的。 我外公把这个新家伙仅仅看作是个玩具而已,同时也是一台升级的计算器。它不仅在求正弦值等方面比老式的电子计算器快得多,而且你还可以让它自动地反复执行同一条指令。这样,我外公可以用它在家里完成一些过去只能在大学的大型机上完成的事情。
  • 。只要你做,你就可以做到。 这种感觉棒极了。 然后,我开始自己写程序。 但是,我编写的第一个程序与其他人编写的第一个程序没什么不同。 10 PRINT “HELLO” 20 GOTO 10 它将严格按照你所期待的那样去做。屏幕上显示出一行又一行的“HELLO”,并且无休无止,除非你因为厌烦而中止它。 然而这仅仅是在计算机上的第一步,也是许多人的最后一步。在这些人眼里,这样的程序非常愚蠢,因为你为什么要把“HELLO”显示上一百万次呢?但这个程序也是许多早期家用计算机的用户操作手册里面必然会有的第一个示范程序。 但让人惊奇的是,你可以改变程序的内容。我妹妹萨拉让我对这个程序作了修改,从而产生了这个程序的第二个版本,屏幕上显示的不再是“HELLO”的字样,而是无休无止的“SARA IS THE BEST” (萨拉是最棒的)这行字。其实在平时,我并非是一个拥有如此爱心的哥哥。很显然这种显示方式 (满屏滚动的一行行字)给她留下了深刻的印象。 然而此事我却记不真切了。因为每当我写完一个程序后就会把它忘记,然后再去编写下一个。
  • 我也用我的零花钱购买电脑杂志,其中有一本写着关于莫尔斯电码 (Morse Code)的程序。而这个特殊程序的特别之处在于,它并非用BASIC语言写成,而是由一组数字写成,这些数字可以用手工方式将其转变为计算机可以读懂的许多0和1。 这样,我便发现了电子计算机并非真的讲BASIC语言,它所赖以操作的是一种更加简单的语言。赫尔辛基的孩子们都和他们的父母在树林子里玩曲棍球和滑雪,而我却在琢磨一台电脑在怎样工作。当时有一些程序,能把人们可读和数码转换成电脑看得懂的0和1,但我并不晓得有这样的程序,于是我就开始用数字形式编写程序,然后再用手工进行转换。这就是用机器语言编程序,这样做时,我便开始做起了我过去以为是完全不可能的事情。我已经能够驱使电脑做事情,对一切细节我都能够加以控制。我开始思索,如何能在更小的空间里让事情做得更快一些。由于在我和电脑之间没有抽象的屏障,我很快地就能接受目标,这便是和一台机器变得亲密的感受
  • 只要屋里摆着电脑,晚上不睡觉都没关系。每个男孩子晚上都睡得很晚,以便躲在被窝里“阅读”《花花公子》。但我却不是这样,而是佯装睡着,等我妈妈走了以后便跳将起来,一屁股坐在电脑跟前。那个时候可还没有网上聊天这回事呢。“李纳斯,该吃饭了!”有时妈妈这么叫我时我不愿意出去,于是妈妈就对她的一些记者朋友们说,我是个非常好养的孩子,以至她只要把我放在一个黑咕隆咚的储藏柜里,再配上一台电脑,偶尔朝里扔一些意大利面条,我就会感到格外高兴了。她的话不无道理。谁也不会担心这个孩子出外时遭到绑架 (你听说过这样的事吗?)。个人计算机在变得像今天这样复杂之前,尤其是在像我这样呆头呆脑的青少年还可以打开电脑的盖子自己动手修理的时候,其实对孩子们很有好处。今天的电脑所面临的问题和汽车一样:它们变得越来越复杂,于是人们很难将他们拆开再自己组装在一起,所以也就很难弄清那里面究竟是回事。过去人们可以简单地换掉汽车上的桐油过滤器,但你最后一次修车肯定要比那个活儿复杂得多吧?
  • 总的来讲,我在学校里比萨拉的功课要好。萨拉更爱社交,看上去很随和,对别人特别友好。我还得说一句,这本书就是别人雇她翻译成瑞典语的。但最后她在学习上超过了我,因为她考的科目比我多。我的兴趣比她窄。别人都知道我只是个偏爱数学的家伙。 其实,我能把女生带回家的唯一原因就是她们希望得到我的辅导。即使这样她们来的也不多,而且每次都不是我的主意。我爸爸总觉得那些女生感兴趣的并非仅仅是补习数学 (在他看来,她们都认同他伟人般的鼻子,好像这等于认同他是个伟人)。假如她们在寻找一个数学尖子,她们肯定没有一个固定的男友。我的意思是,我从未弄明白他们说的“深度爱抚”是什么意思。我曾经花了不少时间照顾邻居家一只十五磅重的猫,就是不明白这有什么了不起的。 不错,我绝对是一个呆傻之徒,这一点毫无疑问。那个时候呆傻尚有性感的含义;不过我猜并不是真正的性感。你们所看到的是一个既呆傻又腼腆的学生,他是不是有点多余?于是我便坐在电脑旁,感到无限的快乐。 中学毕业时,我头上戴着一顶白色毛茸茸的挂着黑穗的帽子。毕业典礼上,他们把文凭发给我,然后我就回家。所有的亲戚都在那里等着你,到处都是香槟、花卉和蛋糕。此外,全年级还要在当地的一家餐厅里举行庆贺聚会。这些我们都做了,而且我猜我很开心,不过具体的细节全忘了。然而你要是问我那台68008 芯片的电脑的规格,我却记得非常清楚。
  • 我上大学第一年的成绩斐然,需要拿到的学分我都拿到了。然而我仅仅在第一年收获颇丰,也许是新的环境让我感到特别兴奋,或是因为突然拥有了深入学习某些学科的机会,再不然就是读书使我感到很舒服,这总比隔三差五地进行社交活动、把酒吐在朋友们身上好得多。第一年我表现得非常好,实在无可挑剔。然而你放心,这种表现从此再没有发生过。我的学术生涯来了个一百八十度的大转弯。 那时还没有选择专业,最后计算机成了我的主修课,物理和数学是副修。我的问题之一是,在整个赫尔辛基大学,除我之外,希望主修电脑的讲瑞典语的学生只有一个,他名叫拉尔斯·韦尔泽尼斯。我们俩参加了一个为讲瑞典语的理科学生举办的组织,在那里觉得非常开心。这个俱乐部的盛况都是由学“硬科学”的学生们组成的,比如物理和化学。顺便提一句,成员都是男生。
  • 我已经选好我的秋季课程,其中最让我期待的是C程序语言和UNIX操作系统。在等待着上课期间,我还买了一本上面提到的教科书,希望能先读一下。在这本书中,住在阿姆斯特丹的大学教授安德鲁·塔南鲍姆讨论了MINIX,那是他为UNIX撰写的教学辅助软件。MINIX也是UNIX的小型翻版。一旦读完了介绍,了解到UNIX背后的理念以及那个强大、利索、漂亮的操作系统所能做到的事情后,我便决定弄一台机器来操作UNIX。我将操作MINIX,那是我所能找到的惟一版本。 通过阅读和对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的人有很大的,尤其在为大学服务方面没遇到什么阻碍。
  • 住在阿姆斯特丹的、撰写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,用它进行编程。 对此我感到非常骄傲。
  • 我实在是没有钱。我一向认为不应该向别人要钱或乞求钱,这一点非常重要,但事实上我却得到了钱,所以……让我激动得无话可说。 Linux操作系统就是这样开始的
  • 我真不知道该如何阐释自己对编程的狂热,但我可以试试。 对于任何编程的人来说,编程是世界上最有趣的事。它比下棋之类的游戏更有乐趣得多,因为它可以由你自己来制订游戏规则。而你制定什么样的规则,也就会导出与此规则相符合的结果。 然而,对于编程外行的人来说,它却似乎是世上最枯燥的事。 编程给人带来的最初兴奋的原因有部分是显而易见的,那就是:通过编程你可以支配一台计算机,你叫计算机做什么,它就做什么,永远准确无误,而且毫无怨言。 这本身就很有意思。 但是计算机在一开始让你入迷的盲从性,显然不得它成为招人喜爱的伙伴。事实上,这种特性很快就让人厌烦了。真正使编程令人欲罢不能的是:你能让电脑做你想做的事,但是你还必须想出怎样做到的办法。 我个人认为,计算机科学和物理科学有很多相似之处。两门学科都是在一个相当基础的层面上探讨一个体系是怎样运行的。当然,区别在于,在物理学中,你探究的是一个已经存在的客观世界的构成。而在计算机科学中,你却是在创造一个前所未有的体系。 在电脑世界中,你就是创世者,你对所发生的一切拥有最终的控制。如果你功力深厚,你可以是上帝――在一个较小的层面上
  • 编程是对创造的训练。 探究计算机工作原理的过程,是吸引我走进编程世界的最初原因。在这其中获得的最大的乐趣在于,我认识到了计算机科学与数学的类似:你必须从该体系自身的规则出发,推演出整个世界,在物理科学中,你被客观规律所束缚。但是在数学和编程中,只要能合乎逻辑地推演,就可以成立。思考数学问题,不会受到客观世界的逻辑的限制,数学只是逻辑自洽的符号体系。正如任何一名数学家都明白的,人完全可以建构出一套数学等式,以证明三加三等于二。事实上,你想有什么样的体系就可以什么样的体系。但是,随着复杂程度的提高,你必须多加小心,不要弄出什么与你创造的体系不一致的东西。 好的体系容不得任何错误。编程也与数学一样是这么回事儿。
  • 在大部分时间中你却不能欣赏自己创造的美妙世界。你只不过是在编写执行某一任务的程序。这时你就不是在创造一个新世界,而是在电脑世界中解决一个具体的问题。问题通过将思考结果应用到问题中而得到解决。而能够坐下来,盯着电脑屏幕,将一个问题彻头彻尾地贯穿思考,就需要某种特定的人。 比如,需要像我这种书呆子气十足的人。 操作系统是计算机的所有功能的基础。而创造一个操作系统则是最终的挑战。
  • 创造操作系统,就是去创造一个所有应用程序赖以运行的基础环境――从根本上来说,就是在制定规则:什么可以接受,什么可以做,什么不可以做。事实上,所有的程序都是在制定规则,只不过操作系统是在制定最根本的规则。 创造操作系统就像在为你创造的这片土地制订宪法,而其他在电脑上运行的程序则是为宪法所允许的普通法律。 有时,这些法律根本讲不能,但这正是你要面对的问题。你需要找到解决办法,并能够意识到自己以正确的方法找到了正确的答案
  • 一个伟大的数学家不会采用平庸而繁琐的方法,因为他能看到隐藏在问题背后的真正内涵,并应用这一理解去找到更为简便的方法。 在计算机科学中也绝对如此。 没错,你能写一个程序来求出总数。这对于今天的电脑来说不过小事一桩。但是一个伟大的编程者能凭借其聪明的头脑就知道答案是什么。他知道怎样写出漂亮的程序,知道怎样采用一种全新的但最终会被证明是正确的方法。 不过还是很难说清楚,闭门冥思苦想地要找到解决某个问题的漂亮答案,为什么竟然有如此巨大的魅力?但是,你要是曾经有过找到更好方法的经历,你就会明白,这简直是无与伦比的感觉。
  • 我写了一个磁盘驱动程序。因为我想把文件保存在我的MINIX文件系统中,也因为MINIX文件系统本身整理得很好,于是我让自己的文件系统可以和MINIX文件系统兼容。这样,我就可以在MINIX系统下阅读我建立的文件并将它们存入同一张磁盘,以便MINIX系统也可以通过我的终端仿真器阅读到我建立的文件。 这花费了我大量的精力:编程――睡觉――编程――睡觉――编程――吃饭(饼干)――编程――睡觉――编程――洗澡(冲冲了事)――编程。随着工作的进展,这个项目很明显正在成长为一个操作系统。所以我转变了看法,不再把它看成一个终端仿真器,而是一个操作系统。这个转变出现在我马拉松似的编程过程中的哪个时间段,是在白天还是晚上,我已经想不起来了。也许在这一刻之前我还穿着破旧的睡袍奋力敲击着键盘,在为终端仿真器更多的功能;而转瞬之前我拥有的功能是如此之多,以至于整个体系已经变成了一个。
  • 不过我发的那个邮件并没有石沉大海。任何一个有相应知识的人 (只有具备相应知识的人才会上MINIX的网站)都能看出我的计划是要开发一个操作系统,否则,我会需要POSIX规则呢?我的邮件引起了赫尔辛基工学院 (我若不是对研究理论这么感兴趣,可能会在这儿求学)一个助教阿里·莱姆克 (Ari Lemke)的好奇。阿里善意地给我回信说,他愿意为我在他们学校的FTP地址上建一个子目录,这样到时我可以把自己的操作系统发布上去,让感兴趣的人们下载
  • 阿里·莱姆克一定是一个相当乐观的人。在我能拿出什么可以发布的东西之前,他就为我建立了一个子目录:ftp.funel.fi。我有了密码,一切都准备就绪,就等着我去登录然后上传内容了。但是我要再花上四个月才能找到一点我愿与世人分离的东西,或者至少与阿里或几个与我保持邮件往来的热衷于操作系统的狂热分子分离的东西。 我最初的目录是想开发出一个最终可以取代MINIX的操作系统。 这个系统不必比MINIX能干,但必须能胜任我最喜欢用MINIX做的事,以及其他我想做的事。比如,MINIX的终端仿真不仅太不方便,而且也不能进行任务控制――即把暂不用的程序放入背景中,同时内存管理也太简化。顺便说一下,它还是以苹果的操作系统 (Mac OS)而不是以DOS为支持的。 开发操作系统就是搞明白系统呼叫应该做什么,然后以你自己的方式编出能使系统呼叫得以执行的程序。总有来说,共有几百个系统呼叫。有些是多功能的,其余的则很单一。有些更基本的系统呼叫确实是十分复杂的,并需要有大量的基础作为支持。比如,为完成“写”和“读”这两种系统呼叫,你就必须建立一个磁盘驱动程序,以便能够在磁盘里读或写东西。又比如“打开文件”的系统呼叫,你就必须创建一整套文件系统层,以便分析文件名和在磁盘上查找文件。要编写“找开文件”的系统呼叫,更需要几个月的工作。但这个程序一旦编写出来,用于别的功能的程序都可以借鉴。 早期的创建工作就是这样。我不但从Sun服务器的操作系统手册中查找标准,也从其他书中查到可用的标准,挑出一个一个的系统呼叫,然后为它们再编出可行的软件。 这工作很容易让人感到灰心丧气。 原因是:表面上一切如故,你看不到任何进展。你可以做几个试验性的程序,检验自己刚刚加上的东西是否可行。但这并不真的有什么用。在有的阶段你不得不放弃刚才的想法,那一长串的系统呼叫都白干了。一个真正的程序在运行之前,必须已经接近完成。你必须首先运行的程序是外壳 (shell)程序,而在有这个外壳程序之前,要运行什么很难的。而且,这个外壳程序包括了很多你所需的系统呼叫。它运行起来之后,你才会从中找到一长串你尚需完成的功能
  • 在UNIX中,外壳程序是一切程序之母。它的作用是引发以后的一系列二进制语言程序 (二进制程序是以计算机可识别的1和0为符号编写的程序。以机器语言编程,就是将二进制的源代码组合起来),这个外壳程序使你首先能登录 (当然在真正的UNIX系统中,你运行的第一个程序传统上被称为init,而init的确需要很多基础的支持才能运行。它是一种对正在运行着的程序的控制工具。当没有任何程序运行时,init就没有用了)。 因此,我做的第一件事不是创建init,而是建一个外壳程序。我执行了约二十五个系统呼叫,正如我所说,这也是我要运行的第一个真正的程序。这个外壳程序不是我自己编的。我下载了一个叫Borne Shell的外壳程序。它是UNIX的初始外壳程序之一,可以从互联网上免费下载,名字来源于一个难听的双关语。编写该外壳程序的家伙名叫波恩,所以这个程序就叫做“Borne Again Shell”,或一般被称为BASH
  • 我的外壳程序可以运行后,我马上开始着手其他几个程序,比如拷贝程序和列表程序,这些都比外壳程序简单得多。你所需的一发,外壳程序早就具备好了,所以一旦外壳程序完成,就好像是从0飞跃到100一样,因为一切都已就绪。这时,我已经拥有了一切必要的条件,感觉就像上帝创世纪那样,执掌一切地说:“让那里有光”,那里就真的有了光。在此之前,的确是一无所有。 是的,我深感满意。 这种满意很重要,因为那个夏天我除了伏在电脑面前,其他什么都没做。这么说一点也不夸张。芬兰四月到八月的日子是一年中最美好的时光。人们到布满小岛的海上航船,去海滩上晒日光浴,到夏日小木屋中消闲。但是我却在没日没夜地工作,不知哪一天是周末,哪一天是工作日。学生的黑色窗帘遮蔽了几乎昼夜灿烂的阳光,也遮蔽了整修世界。有些天――或夜晚?――我会从床上爬起来后直接坐到离床仅几英尺远的电脑旁。 爸爸显然在不断催促妈妈让我在暑假找份工作,但妈妈却不在乎:我并没有打搅她。萨拉会因为我有时上网使电话战线而有点恼火。她也许会写些毫不客气的话。毫不夸张地说,我和电脑之外的世界几乎没有任何联系。 当然,也许每周有一次,一个朋友会敲敲我的窗户,而我如果没在捣腾什么重要的编码时,会请他进来。我们会喝杯茶,也许还会挤在窄小的厨房里看一小时的MTV。现在回想起来,对了,有时乔科会来敲我的窗户,我们会出去喝点啤酒或玩司诺克台球。但是,诚实地说,那时我的生活也就这么简单了。 而我一点儿都不感觉自己是那种面色苍白、可怜兮兮的失败者。 外壳程序成功了。这意味着,我事实上已经建立起了可行的操作系统的基础,而我自己则乐趣无穷
  • 外壳程序能运行时,我已为操作系统初步编了几个程序。其实还不能做什么,但你能看出和UNIX很相似。事实上,它运行起来像一个有点残疾的UNIX。 所以我决定将其发布出去。但我不会公开地告诉任何人,而是通过私人邮件告诉几个人――也许总共只有五到十个人吧――告诉他们我已将其上传到FTP地址上。其中包括阿里·莱姆克,布鲁斯·伊文斯,以及其他几个人。我还上传了Linux的源代码和几个用于初始运行的小程序。我告诉人们要运行这个系统应该怎样做。人们还是MINIX386版本――还必须有GCC编译器,事实上是我自己版本的GCC。所以我把这些也传了上去。 我们有了一个给发布的内容编号的协议。它其实只有心理意义。如果我认为自己的东西已经完善,我愿意将其定为1.0版本,而在此之前,我给出的编号就表示出距离1.0版本还有多远的距离。所以,我将上传发布的那个版本的操作系统定为0.01版,让大家知道它离最后完善还有很大的距离。 对了,我想起了上传那天的日期:1991年9月17日。
  • 你是否渴望回到那样的时代,当男人像男子汉并且能自己编写驱动程序? ――Linux0.02版本的上载宣言 十月初我发布了0.02版,包括了几个对瑕疵做的补丁程序和一些增加的新程序。十一月我又发布了0.03版。 我本来可能会在1991年底之前就洗手不干了。我已经做了很多自认为有意思的事。并非一切都绝对圆满,但在软件世界中,一旦你已解决了最根本的问题,兴趣就容易很快地消失。我也是那样。解决软件中存在的小问题并不是什么吸引人的工作。但接下来发生了两件让我继续下去的事,第一:由于失误,我破坏了我的MINIX分区;第二,人们不停地传给我反馈的意见。 那时,我在导入Linux时仍要把MINIX作为主要的开发环境。我在Linux系统下做的大部分事只是这我写的终端仿真器从学校的电脑上读邮件和新闻
  • 学校的电脑总是很难登录,所以我编了个可以自动拨号的程序。但是在十二月时,我本想自动拨devtty1――这是系列电话线,但却错误地拨成了devhda1,既硬盘分区,结果是我无意中覆盖了保存的MINIX中最重要东西的空间。是的,这也就意味着我不能再进入MINIX的环境了。 那就是我要做出抉择的一刻。 我可以重新装入MINIX系统,或者也可以将错就错,自认Linux已是足够的好,以至不再需要MINIX了。我将通过在Linux下编程来编译Linux,而只要我觉得需要MINIX中好的功能,我就把这些MINIX的优点编到Linux中。无疑,这是观念上重要的一步,因为你要摆脱原有的系统环境,使新的系统真的能够自我包容。这一步十分重大,因此我将十一月底发布的版本命名为0.10版。几个星期之后,就升级到了0.11版。 正是从那时起,开始有人使用这个系统并可以用它来做一些事了。 到那时为止,我已经修补了一系列的漏洞。但没有人向我提出新的建议。我记得为了满足更多存储的需要,我曾出过门,并将机器的内存从4兆升级到8兆。我还出去买了个浮点协同处理器 (floating point co-processor),因为人们开始问我Linux是否能支持他们的浮点协同处理器。 这个附加硬件使我的电脑能执行浮点运算 (floating point math)
  • Page-to-disk是一个相当庞大的程序,因为它是MINIX没有涉及到的东西。该程序出现在0.12版中,于1992年1月的第一个星期发布。人们马上开始不仅仅把Linux和MINIX相比较,而且开始和Coherent相比。后者是由TK开发的小型UNIXclone。从一开始,增加page-to-disk就使Linux在竞争中脱颖而出。 那是Linux起飞的开始。 突然间,人们纷纷从MINIX转向Linux。那时Linux尚不能胜任MINIX的所有工作,但是它还是可以做人们真正需要的大部分重要的工作。而它拥有一项人们特别喜欢的功能:有了page-to-disk,你可以运行超过你内存的巨大程序。这意味着,当超出内存之后,你可以将一块旧的内存存到磁盘上,要记存到了哪儿,仍然使用那块内存来解决你的问题。这在1992年的第一个星期是一件不寻常的事。 正是那个月,Linux的用户从我知道名字并与其有邮件往来的五到十个人,增加到了成百上千我不知是谁的人。我并不认识每一个Linux的用户,这多有意思。
  • 无论如何,我不想把Linux卖掉,我也不想失去对它的控制权。也就是说,我不想别人把它买掉。早在九月上传每一个版本时,我就在有关复制的文件中表明了这个版权声明。根据十九世纪的波恩公约,除非你将其出卖,你拥有自己所创造的一切东西的版权。作为版权所有者,我开始定下了以下关于Linux的规则: 1、人们可以免费使用该操作系统,但不得将它作为商品。 2、 对其所作的改动和改进,必须以源代码的形式将其公开(而不是二进制,这是不公开的。) 3、如果不同意以上规定,则无权对它进行复制或从事任何行为。 你不妨自己设想一下。你为这个程序倾注了六个月的心血,你希望它是有用的,并且自己也能从中有所收获,但你肯定不想让它白白被人占去便宜。我想让大家都能够看到它和使用它,同时也可以随意对其进行改动和改进。但是,我也希望能确保我自己可以及时了解他们做过哪些改动。我希望自己有权使用源程序,这样,假如别人做了什么改进,我也可以利用它。我认为,要使Linux发展成最完美的技术就必须保持它的纯洁性。如果有铜臭渗透进来,事情就要变黑暗了。所以,如果不让钱的问题掺和进来,就不会有贪欲的参与
  • 在1992年,Linux从一个更像是游戏的玩意变成了一些人生活中不可或缺的一部分,成为他们的生计和生意。 变化发生在1992年春天。过了大约一年半后,当第一个X视窗系统在Linux条件下运行时,我开始着手进行终端仿真。它意味着这个操作系统将有能力支持一个图形用户的界面,而用户也可以在多视窗条件下工作。这个工作应该归功于麻省理工学院的X视窗项目 (X Windowing Project)。这个工作的完成将带来一个很大的改变。我还记得在此之前的大约一年半,我还和拉尔斯开玩笑,说总有一天我们会完成一个在Linux下运行的X系统。但我绝没想到这一天这么快地来到。一个名叫奥瑞斯特·扎布罗斯基 (Orest Zborowski)的黑客能够把X视窗装载到Linux上去。 对于我们有了图形用户界面的事实,我有一个短暂的适应过程。在最初的一年里我甚至都没有把它作为通常的运行环境,但是现在我简直不能没有它了,在我工作时总是同时开着许多窗口。 奥瑞斯特的贡献不仅使我们有了窗口,同时它还打开了通向未来的大门。Domain Socket可以用于能够支持X视窗系统运行的本地网络,但我们可以指望这些同样的套接字 (Socket)能让Linux有能力跳出本地网络,而可以异地连接计算机。没有网络化的功能,Linux只能对那些从不上网或只是在家拨号上网的人还有点用。 靠着极大的乐观主义精神,我们开始在这些新颖的套接字上开发Linux的网络工作功能,哪怕这些套接字本来完全不是为网络工作而设计的。 我相信这很容易做到。我们有一个关于版本发表的编号进度表,原计划是在1992年5月发表0.13版,由于有了恰当的图形用户界面,我感到我们对一个完整、可靠并且支持网络工作的操作系统这一既定目标有了95%的把握,所以我把将要发表的新版重新命名为0.95版。
  • 我过分乐观地将新版本定名为0.95版,而不甚乐观的实际情况却将这种乐观变成了一种束缚。又花了我们将近两年的时间,1.0版才得以问世。在此期间,我们仍然需要不停地发布各种有关瑕疵修和添加功能的新版本。但在0.95和1.0之间,却没有那么多的数字可以作为序号,这让我们着实有些疯狂。等到0.99也用过之后,我们只好在它后面加上数字以简要表示附加的序列,接着又开始依靠字母来表示,比如0.99版第15A次后面紧接着0.99版第15B次,0.99第15Z次是最后一个以此方式命名的版本,因为,原本应该命名为0.99版第16A次的版本正是我们已经完成了的Linux 1.0版。
  • 当然,你首先要建立别人之所以信任你的基础。对我而言,我猜想主要不是因为我发明了Linux的核心部分,而是因为我最终做出了将它放到互联网上、并且对所有希望使用或改进它的人公开源代码的决定。 多从未想过自己在计算机之外的现实生活因为Linux而有所改变,我也从未想过要做一位领导者。这一切的发生完全是一种偶然。 在一些关键性的发展阶段中,一个五人核心开发小组开始担当大多数的开发任务,他们由此觉得自己好像是一个筛子,有责任维持这个领域的工作。 我很早就明白,最好的领导者不是让手下做他要求他们做的事情,而是让手下做他们自己想要做的事。同时,最好的领导者也明白,当手下犯错时,要让他们自己有能力纠正而不要总是自己出面纠正。最佳的领导者是能够让手下自作主张的人。
  • 让我换一个表述。 Linux所取得的许多成功,其实可以归结为我的缺点所致: 1、 我很懒散。 2、 我喜欢授权给其他人。
  • 美国之行对我还是有所触动的。 第一件让我有所感触的事情是,这里的一切相比旧大陆来说都是那么新鲜。我所参观的摩门教堂已有一百五十年的历史,但却经过清洗,显出亮丽的白色。要是在欧洲,所有的教堂都是老旧不堪的,并蒙上了一层岁月的斑痕。看着这洁白亮丽的教堂,我脑海里产生的唯一联想竟然是迪斯尼乐园。因为它看起来太像是童话故事中的城堡,而不太像是一个教堂了
  • 真正影响那些公司决定层的是这样一个技术上的事实:Linux比它的那些包括Windows NT和各种不同版本的UNIX的竞争对手们都要强大。而更重要的是,人们不愿意严丝合缝地依照微软或其他什么人所制定出的规则行事。你可以随心所欲地使用Linux,这一点是别的操作系统完全做不到的。那些富于独创性的人使用Linux的理由是:他们可以自由进入Linux的源代码,而其他的商业软件却从没有提供过这种方便。 从这个角度讲,这一点从我在我的卧室里发布了Linux0.01版以来还没有改变过。Linux就是比世界上的其他系统更灵活。你可以是自己的老板。而且,至少从网络服务器的解雇讲,它不包含那些“肿块”(bloat)或其他不成功的设计。 Linux系统的另一个优点是:尽管作为网络服务器的操作系统Linux已经越来越知名了,但它从来不是一个为赚钱而生的产物。这一点对于理解Linux的成功非常重要。 主流电子计算机是一个能赚钱的东西,UNIX一般来讲能产生一系列可以赚钱的方向:服务于国防部的超级电子计算机,或应用于银行系统。人们通过向主流机器或其他大型系统销售操作系统赚了大钱,因为收费奇高。接着微软进场了,只卖九十美元一套的操作系统。它不向银行或其他大型系统之类的市场进军。但是突然间,到处都是微软的产品了,就像市场被蝗虫入侵了似的。你知道,那样的入侵是很难抵抗的。 我并不是说蝗虫是坏蛋。我喜欢所有的动物和昆虫。 到处都是并且占领赚钱的机会简直太好了,微软就是这么干的。想想看,一种流动的生物流进每一处它能找到的地方是什么情景。如果它推动一个地方,并不是什么大不了的事,它充斥着全世界,流进喜欢让它进去的地方。 同样的事情正在Linux事上发生。它正流进每一处喜欢它的地方。 但Linux没有赚钱的方向。Linux小而灵活,总会找到它应该占领的地方。你可以在超级市场里、在重要的地方如美国政府的费米实验室或国家航天局里发现Linux。不过在那些地方它只是一种服务器空间的流出物,或一种桌面空间里的流出物,那里就是我开始创造Linux的地方。同时,你也能在植入式的装置里面找到Linux,比如防抱死刹车系统或手表里。
  • 请注意Linux的流动。 Linux给大众带来了巨大的好处。年轻一代中最聪明、最卓越的那些人都在使用Linux的产品,因为正是Linux才激起了这一代人的狂热。而在早一辈人当中,激起人们狂热的与其说是微软和DOS倒不如说是PC。如果你要操作PC,就一定要用到DOS系统,在当时这是没什么选择的。所以,这种情况对微软操作系统的传播非常有利。 如果你环顾一下你周围最聪颖的那些孩子们,你会发现他们中的绝大多数都在参与对Linux的开发。有一个很明显的现象是,无论是开放源代码的理念还是Linux操作系统都在各大学里赢得了最广泛的支持,其原因之一是:青年学子们大多都抱有对主流与权威的逆反心理(正是这样一种心理曾经极大地影响了我父亲的生活)。 在这场操作系统之争中,一方是庞大而邪恶的微软公司与刻毒、贪婪却他妈富得流油的比尔·盖茨,另一方则是以无私的爱心致力于自由软件的谦逊的民间英雄李纳斯·托沃兹。这些学生们毕业后到各大公司谋职,同时也把在大学期间培养出来的对Linux的喜爱带了过去。
  • Linux没有官方版本,有我的版本也有任何人的版本。事情是大多数人都相信我的版本,并把它看作事实上的官方版本,因为我为之工作了九年。我是发起人,人们都认为我的工作十分出色。但我们可以说,即使我刮成光头冲他们大喊“向我鞠躬,否则,我打死你们”,他们也不会搭理我的。 人们相信我,而他们相信我的唯一原因就是我曾经值得信任。 那不意味着我愿意去听语音邮件,或者愿意我在办公室里时人们正好打电话进来。 我并不认为人们应该把我看成是一个所谓的好人,任何给我打电话或发电子邮件的人回话。想来这事的确奇怪,到底是哪些廉洁把我描给成了一个不爱钱财的谦恭的和尚或圣人。几年来,我一直想驱散这个神话,我不想成为新闻界所希望的那种人。 事实是,我从来憎恨那个谦恭的和尚形象,因为那个形象实在太不酷了。那是个沉闷的形象,而且,那不是事实。
  • 成功不是试着去控制人们。 麻烦之处在于,人们经常会被纯粹的贪婪所驱使,而这一点从长期来看最终会导致失败。贪婪导致了决定被偏执和控制欲所统治。那些错误的、短视的决策,导致了最终的灾难。一个简单例子就是以美国公司的失败为代价的欧洲无线技术的初期成功。当美国公司还在试图利用他们的所有权独自控制市场时,欧洲公司已经围绕着一个单一标准,即GMS而联合在一起了,并且选择了竞争。竞争的结果促使公司提供最好的产品和最佳的服务。美国公司被抛在了后面,他们为自己的竞争标准而困扰着。在一个有着共同标准的市场里,欧洲公司都拥有了自己的一席之地。这也就是为什么布拉格的孩子们要比美国的孩子们早几年就已开始用手机来交换文本信息了。 如果你想通过控制某一资源来赚钱的话,那么你终将发现自己会被市场淘汰。 这是一种专制的形式,历史上曾经有过大量的例子,它们的影响是负面的。比如说1800年在美国西部你控制了当地农民的水源。你对于用水很吝啬,因而要价很高。于是某一天,其他人设计出从其他地方引入水源的方法,而这种方法在你的高价水政策下不可避免地会变成是有利可图的事业,这时你的市场就会崩溃。技术在进步,可以被利用来将远方的水输送过来,或者促使环境发生改变。不管是哪种方式,你的垄断局面将会被打破,而你将会一无所有。这样的事情随时都在发生着。然而可笑的是,人们却依然没有看到。
  • 技术是我们所藉以利用的东西,不管是商业还是技术,都不可能改变人类的基本需求与向往。与其他事情一样,进货是缓慢的,但却不可避免地会导致技术越来越进步,从简单生存到基于交流的社会,直至最终进入娱乐社会 (似曾相识的提醒:是的,此前在这些页中你已经见识过这个理论了,假如你坚持看完本书末尾的话,你将会再一次遇到这一理论)。 人类注定是社会动物,技术也注定要进步。 因此毋须再去想有关十年内技术能够做些什么之类的种种预言。从根本上说,这些是无关痛痒的事情。三十年前我们就能将人送到月球上,但从那以后我们却再也没有送人去过月球了。我个人以为,这只不过是因为月球被证实了是一个很单调的地方,基本上没有夜生活,这有点像圣何塞。于是人们并不想再回到月球 上去了。与此同时,我们所聚集的大量技术都对其不起任何作用。月球依然是空空如也。当你谈及技术的未来时,真正有意义的是人们起要什么?一旦能够描绘出这一点,剩下的事情就是如何大规模地生产它,并使它足够便宜,以便人们能够在不牺牲另外也想要的东西的同时获得它。除此而外,没有任何事情真正有意义。 这里再说一些小插曲。真正的卖点当然是洞察力而不是现实。豪华游轮所出售的是对于自由的感知,对于盐海的感受,对于佳肴的观感和爱舟的浪漫。如果你感觉自己像小鸟般自由的话,有谁会在意船舱是否狭窄呢?
  • 公开源代码的理论基础就是:简单化。在操作系统这一情形里,源代码――即那些构成系统的程序指令――是自由的,任何人都可以改进它、改变它和利用它。但这些改进、改变和利用后的源代码也必须是可以自由获得的。项目不属于任何个人,而是属于每一个人。通过将其开放,会产生迅速和边疆的改进。比之于封闭起来开发,其结果会出得更快、更成功。 那正是我们开发Linux时所经历的。想像一下:你旁边是一个庞大的开发队伍,而不是一个以秘密小组形式组成的开发团队。潜在地拥有数百万更加聪明的头脑来参与同一项目,并且有同行评论过程的支持,啊,这力量简直是无以匹敌的。 人们第一次听说公开源代码的方式,听起来有些滑稽。这也就是为什么经过了这么多年以后它的优点才被人们所了解。开放源代码的“思想观念”并不是传播这一模式的动力,而是因为人们开始注意到一个显然的事实,那就是公开源代码是开发和提高最佳质量技术的最好方法。现在这种方式也在逐渐赢得市场,而市场的成功才使公开源代码获得了最为广泛的接受。围绕着无数的增值服务已经创建了许多公司。当钱财滚滚而来时,人们开始相信公开源代码的魅力了
  • 那么,社会为什么要进化?其驱动因素是什么?技术的发展驱动着社会前进这一观点大家能够达到共识吗?是否真的是蒸汽机的发明使欧洲开始进入工业社会,并最终通过诺基亚和移动电话将我们带入了信息社会?看起来那就是哲学家的看法,他们的兴趣主要集中于技术是如何改变社会的。 而我,作为一名技术专家,知道技术是不能够驱动任何事物的。是社会在改变着技术而不是相反。技术仅仅是限定了我们所能够做的事物的边界,以及能够以多大的成本来做。 技术,就像它所创造的设备一样,至少迄今为止是天生愚蠢的。它之所以令人感兴趣的是仰仗着你所能够用它来实现的东西,它背后的驱动力实际上是人类的需求和兴趣。 如今我们沟通和交流得到更多不是因为我们有了这样做的手段,而是因为人们从来就喜欢喋喋不休,他们想要交流,如果不存在通讯的手段,则人类就把它们创造出来。于是,便有了诺基亚。 因此,我的论点是,为了理解社会将向何处进化,你就必须去理解是什么东西真正驱动着人们。是金钱?是性?是什么在根本上使人们正从事着他们的工作? 有一个很显然的激励因素,这个因素可能没有人会持有异议,那就是:生存。生存于是确定了生命的含义,毕竟――人是要生存的。这并不仅仅是盲目地跟从热力学第二定律,而是要在一个看起来对于构成生命基础的复杂与秩序充满了敌意的宇宙中生存。因此生存可谓是一号激励因素。 为了给其他的激励因素排序,我不得不考虑它们将如何与那简单的生存意愿相比较。问题不能是“你是否会为了钱财去杀人?”而是“你是否会为了钱财去死?”答案显然是不会。因此我们可以很有把握地将“金钱”从根本的激励因素列表中排除。 然而显然有些事情人们是愿意为之付出生命的。有许多关于人们――甚至是关于动物――的英雄故事,这些人们或者动物事实上愿意为了更大的事业而献出自己的生命。因此,仅仅生存这一因素并不能够解释推动我们社会发展的激励要素。 我
  • 那么,社会为什么要进化?其驱动因素是什么?技术的发展驱动着社会前进这一观点大家能够达到共识吗?是否真的是蒸汽机的发明使欧洲开始进入工业社会,并最终通过诺基亚和移动电话将我们带入了信息社会?看起来那就是哲学家的看法,他们的兴趣主要集中于技术是如何改变社会的。 而我,作为一名技术专家,知道技术是不能够驱动任何事物的。是社会在改变着技术而不是相反。技术仅仅是限定了我们所能够做的事物的边界,以及能够以多大的成本来做。 技术,就像它所创造的设备一样,至少迄今为止是天生愚蠢的。它之所以令人感兴趣的是仰仗着你所能够用它来实现的东西,它背后的驱动力实际上是人类的需求和兴趣。 如今我们沟通和交流得到更多不是因为我们有了这样做的手段,而是因为人们从来就喜欢喋喋不休,他们想要交流,如果不存在通讯的手段,则人类就把它们创造出来。于是,便有了诺基亚。 因此,我的论点是,为了理解社会将向何处进化,你就必须去理解是什么东西真正驱动着人们。是金钱?是性?是什么在根本上使人们正从事着他们的工作? 有一个很显然的激励因素,这个因素可能没有人会持有异议,那就是:生存。生存于是确定了生命的含义,毕竟――人是要生存的。这并不仅仅是盲目地跟从热力学第二定律,而是要在一个看起来对于构成生命基础的复杂与秩序充满了敌意的宇宙中生存。因此生存可谓是一号激励因素。 为了给其他的激励因素排序,我不得不考虑它们将如何与那简单的生存意愿相比较。问题不能是“你是否会为了钱财去杀人?”而是“你是否会为了钱财去死?”答案显然是不会。因此我们可以很有把握地将“金钱”从根本的激励因素列表中排除。 然而显然有些事情人们是愿意为之付出生命的。有许多关于人们――甚至是关于动物――的英雄故事,这些人们或者动物事实上愿意为了更大的事业而献出自己的生命。因此,仅仅生存这一因素并不能够解释推动我们社会发展的激励要素。 我在伯克莱的那次座谈会上提出的其他因素都是简单明白的,因此并不是非常有说服力。但至少有人对此表示赞同(哦,出于对芬兰领事馆的尊敬,他们还是很有礼貌的)。事实上,能让人们为之付出自己生命的东西并不多,但人的社会关系显然是其中之一。 足以让人们奉献生命的社会激励实例数不胜数,从文学中的罗密欧与朱丽叶(他们之所以死亡,并非由于他们想要诸如性这般愚蠢的事情,而是因为如果失去他们的特殊社会关系,他们宁愿死亡),到愿意为了自己的国家和家庭而付出生命的爱国战士。因此,我记下“社会关系”作为第二号激励因素。 第三个也是最后一个激励因素是“快乐”。这听起来有些陈腐,不过它毫无疑问地是一股非常强劲的力量。人们每天需要快乐,做仅仅是出于乐趣才做的各种事情。 快乐并不必然是陈腐的。它可以是下棋,或者是试图想出世界实际是如何运转的。它可以是对于新世界的好奇和探索。能够使一个人坐在末端捆有数千万磅计的烈性爆炸物质的火箭上的动机,仅仅是为了能从太空中看到地球。 对了,就是这三件事:生存、你在社会中的位置、还有快乐。 这三件事就是我们正在做着的事情。任何其他的事物,都是社会学家可能会称之为“突发行为”的东西,它们源于那些规则更为简单的行为模式。
  • 令人感兴趣的,这三种激励因素有着内在的次序,而这一次序表明了生命的所在。事情并不仅仅是,我们人类被这三种事物所驱使――对于人类以外的其他生命行为也是如此。 这一次序是:生存;社会交往;寻找乐趣。 它也是进化的次序。这就是我们选择了“Just for Fun”作为本书名称的原因。 因为我们曾经所做的一切事情,似乎最终都是为了我们自己的乐趣。
捧个钱场?