Linus与陈庆
Linus
1969年末,李纳斯出生于芬兰的赫尔辛基市,算是赶上了60后的尾巴。小时候他是个其貌不扬的孩子,除了一个鼻子长的「富丽堂皇」之外乏善可陈。他为了让鼻子看上去小一些,经常戴上眼镜就不愿意摘下来,这个策略和现在的很多大脸女生购买三星的 Galaxy Note 手机有异曲同工之妙。幼时的李纳斯不修边幅邋里邋遢,不怎么费劲数学和物理就学得极好,社交圈却一塌糊涂,他母亲经常和别人说,这孩子非常好养,只要把他放到一个有电脑的小黑屋里,然后再往里扔点薯条和意大利面,就行了。李纳斯对此表示认同。
李纳斯把年幼的自己定位成 Nerd(书呆子),但是从他的自传里我却感受到了这位天才的有趣之处。他在书的前言里写到:
我对生命的意义有种理论。我们可以在第一章里对读者解释生命的意义何在,这样就可以吸引住他们。一旦他们被吸引,并且付钱买了书,剩下的章节里我们就可以胡扯了。
关于生命的意义,李纳斯的解释是,有三件事具有生命的意义。它们是你生活当中所有事情的动机。第一是生存,第二是社会秩序,第三是娱乐。生活中所有的事情都是按这个顺序发展的,娱乐之后便一无所有。因此,从某种意义上来说,生活的意义就是要达到第三个阶段。你一旦达到了第三个阶段,就算成功了。但首先要越过前两个阶段。
为什么李纳斯会这么说呢,我摘段原文给大家看看,非常有趣:
李纳斯:我给你举个例子来说明这一观点。最明显的是性,它开始只是一种延续生命的手段,后来变成了一种社会性的行为,比如你要结婚才能得到性。再后来,它成了一种娱乐。
大卫:性为什么是娱乐?
李纳斯:好吧,我是在对牛弹琴。我举一个别的例子。
大卫:别别,还是说说性吧
李纳斯:它是在另一个层次上的blablabla……
大卫(自言自语):哦,参与就是娱乐,而不是在一旁观看。好,我明白了。
那生存、社会秩序和娱乐又是如何与技术扯上关系的呢?李纳斯是这么解释的,技术的诞生同样是为了人类的生存,而且是为了让人生活的更好。汽车让人跑的更快,飞机让人飞得更高,互联网让人懂得更多,手机让人通信更快,一旦这些技术成了规模,就要并入社会秩序,然后下一个阶段就是娱乐,别看手机现在就是个打电话的工具,但是很快会进入娱乐阶段……(12年后的今天,手机已经彻头彻尾变成了一个娱乐工具,打电话反而成了附属功能)。李纳斯说:「一切事物都将从生存走向娱乐,但这并不意味着在某个局部地区没有倒退的现象,而且毫无疑问许多地方都有这种情况。有时事物的发展往往分裂的。」
从这些内容我们可以看出,李纳斯有自己的一套理论,而且能自圆其说,其实每个人都有自己的理论,一件事做或者不做,都是自己说服自己,每一次进步,要么是推翻自己的理论,要么是完善自己的理论。李纳斯在很小的时候就建立了自己的理论领地,那就是数学、物理、逻辑,最后是计算机,所以他绝不是自己描述的 Nerd,而是一个大智若愚的牛娃,就像射雕里的郭靖一样,看着傻,其实比谁都精,脑子里装的都是十年二十年后的事儿。而且李纳斯比郭靖牛的地方是,就一个启蒙老师,还是自己的外公,和郭靖一比,高下立判!李纳斯基本上就是个自学成才的典范。
李纳斯的外公是赫尔辛基大学的一位统计学教授,数学家。他有一台Commodore VIC-20计算机(Commodore 是与苹果公司同时期的个人电脑公司,曾经创造过一系列辉煌,1994年破产),这台电脑的主要功能就是没有功能,你唯一能做的事情就是用 Basic 语言在上面编写自己的程序,老爷子当年就是这么做的,比如做一些数学运算和公式计算等。但是老爷子年老眼花,也不愿意打字,于是就把自己的外孙李纳斯放在腿上,让他帮助录入写在纸片上的程序。这种很有场面感的场景一再出现后,李纳斯除了对数学有了初步的认识,同时也把计算机玩的娴熟,很快他就在外公的指导下开始编写自己的程序。
李纳斯用外公的计算机学会了 Basic 语言,并开始编写各种简单有趣的游戏,然后他又发现了 Basic 并不是计算机唯一能理解的语言,在它的下面,还有一种语言是由0和1组成,可以直接被计算机识别,于是李纳斯又开始用机器码编程,这次他可以控制更多计算机的细节,他与机器变得更加亲密。然后李纳斯就开始上中学了,中学的几年于他而言,其实没有太大变化,因为那些年他几乎都是坐在电脑前面度过的,在这个阶段,他熟练的掌握了汇编语言。
终于有一天,李纳斯向编程世界挺进的步伐变得缓慢下来,因为他上大学了,原因之一是他必须集中精力读书,原因之二是找不到什么项目去做。还有一件事,李纳斯开始服兵役了,那段时光对他来说是如此特殊:
在手执武器上了一个月的「体育课」之后,我便觉得在我有生之年完全有资格从此一动不动,享受平静的生活了。惟一可做的事情就是把编码打入键盘,或者手里端着一瓶比尔森啤酒!
终于,让李纳斯痛苦不堪的兵役终于结束了,除了敲锣打鼓欢庆重生之外,他开始继续拓展自己的编程之路,这时候,生命中最重要的一本书出现了,书的名字叫做《操作系统:设计和实现》,作者是 Andrew S. Tanenbaum。用李纳斯的原话表述就是「这本书把我推上了生命的高峰」。
那个时代 Unix 已经开发出来了。最早 Unix 是用汇编写的,开发过程中 Unix 的两位创始人Ken Thompson 和 Dennis Ritchie觉得用汇编写程序实在是太苦逼了,男人应该对自己好一点!于是老哥俩决定用高级语言来完成下一个版本,他们首先尝试了Fortran,失败!然后又基于BCPL(Basic Combined Programming Lanugage)创建了 B 语言,B 语言可以被认为是那个时代的解释型语言,不能直接生成机器码,效率上完全没法满足系统的需求,再次失败!我们都知道,一再失败的情况下总会有一位英雄人物挺身而出,这次是 Dennis Ritchie,他从失败的大坑中爬起来拍拍土抹抹泪,继续对 B 语言进行改造。这次 Dennis 为 B 增加了数据类型,并让 B 语言能够直接编译为机器码,然后又为这门语言起了个极其响亮的名字:「New B」,读一读神清气爽,念一念气冲云霄,从此一代语言巨星冉冉升起,40年后依然排在兵器排名榜第一位,怎一个牛字了得!当然,Dennis可能考虑了十几年后中国人民的感受,把「New B」改为了 C 语言,并用 C 语言重新编写了 Unix 的内核,Unix 与 C 从此珠联璧合,长相思守,再也无法分离。
操作系统、Unix 和 C 语言可以说是李纳斯心目中神山上的三座圣杯,为了至高无上的荣耀,他首先要攀上峰顶,把这三座圣杯捧在手中,然后再琢磨建造自己的宫殿的事儿。在那一年的夏天,李纳斯开始了高强度的阅读和学习,用他的话说就是做了两件事,「一件事是什么都没做,另一件事是读完了719页的《操作系统:设计和执行》。那本红色的简装本教科书差不多等于睡在了我的床上」。
李纳斯认为,Unix 是一个简洁、干净的操作系统,在 Unix 上的大部分任务都是通过一些基本操作完成的,这些操作被成为「System Call」,顾名思义,这些操作就是你对系统的呼叫,系统通过响应你的呼叫完成工作。比如 fork、clone(创建子进程),比如 open、close、read、write(文件访问)。这些基本的系统调用通过组合可以完成大部分功能。同时,Unix 还提供了极为强大的IPC(进程间通信)方式:pipe(管道)。很多工作在GUI(图形界面)软件环境下的读者,最常用的IPC操作可能是复制、粘贴、鼠标拖拽,这些操作虽然简单,但是必须由人来完成,想要自动化就很困难。而这些在 Unix 上实现起来就像大自然一样自然,你只需要在程序之间开辟出一段缓冲区作为管道,然后父进程和子进程就可以通过这个管道实现进程间通信了。举个例子,以前给大家介绍的查找历史命令的脚本,就利用了管道的功能,如下:history | grep apache
这行命令的含义就是查找包含 apache 的历史命令,其中特殊字符【 | 】用来告诉命令行解释器(Shell)将前一个命令的输出通过「管道」作为接下来的一行命令的输入,就这样,一个简单的进程间通信就完成了。
总之,李纳斯在读完这本书之后,就像郭靖修习了九阴真经全本一样,对机器和代码的世界有了更为透彻的认知,接下来的事情就是等待一个打造传奇的机会。等待的过程中,李纳斯也没闲着,他又开始编程了。好的程序员对编程的喜爱是溢于言表的,以下摘录一些李纳斯的编程感想:
对于喜爱编程的人来说,编程是世界上最有趣的事,比下棋有趣得多!因为你可以自己制订游戏规则,而你制定什么样的规则,也就会随之出现与此规则相符合的结果。
在电脑世界中,你就是创世者,你对所发生的一切拥有最终的控制。如果你功力深厚,你可以是上帝――在一个较小的层面上。
你可以建筑一个这样的房子,有一个活板门,既稳固又实用。但是每个人都可以看出一个仅仅以坚固实用为目的的树上小屋和一个巧妙地利用树本身特点的美妙小屋之间的差异。这是一个将艺术和工程融为一体的工作。编程与造树上小屋有相似之外……在编程中,实用的考虑往往被置于有意思、美观优雅或有震撼力的考虑之后。
在代码的世界里,李纳斯就是一个诗人!
Unix 始于上个世纪60年代,在70年代得到了迅猛的发展,这时候的李纳斯还躺在祖父公寓里的摇篮里睡大觉,如果不是后来 Unix 王国自乱阵脚,出现阵营分裂和法律纠纷,可能 Linux 系统根本都不会出现。真实的情况是,Unix 浪费了大把的时间和机会,似乎就是为了等待这个大鼻子、头发纷乱的芬兰小子长大,然后一决高下。李纳斯赢得了自己的时间,他一刻不停的磨练自己的技艺,在清晨的微光中练习算法,在赫尔辛基的雪山上编译代码,随时随地补充的粮草和武器。二十一年之后,李纳斯抚着雪亮的刀锋上路了,他要去追寻属于程序员的最高荣耀。
1991年一月,李纳斯花费了三千五百美元,分期付款购买了一台杂牌组装电脑,内存4兆,CPU 33兆赫,还有一台14英寸的显示器,然后又买了 MINIX 操作系统,用十六张软盘把这个操作系统装到了计算机里。之后,李纳斯又用了一个月的时间,了解了 MINIX 的好和不好,并把这个系统改装成了自己得心应手的「战斗机」,开始了战斗的人生。就是在这台电脑上,催生了 Linux 的初始版本。
Linux 的诞生离不开 MINIX,MINIX 是 Mini Unix 的缩写,是 Andy Tanenbaum 教授编写的迷你版的 Unix 操作系统,源代码可以提供给大学和学生,用于操作系统教学,采用了微内核设计。李纳斯使用了 MINIX 之后,发现这个系统有很多缺陷,比如性能问题、内核问题、文件系统问题,最大的问题是终端仿真器,也就是我之前总提到的 Terminal,登录学校里的 Unix Server 和上网时,李纳斯都需要终端,但是 MINIX 无法满足这个需求。如果普通人遇到这种问题,估计就是发会呆然后洗洗睡了,或者说「你行你上啊」,李纳斯不是普通人!
他决定抛开 MINIX,从硬件层面开始,重新设计一个终端仿真器。牛人就是不同凡响,这个决定表明了李纳斯需要从 BIOS、CPU等硬件层面重新开发出一套系统,除此之外,还需要了解如何把信息写入显示器,如何读取键盘输入,如何读写调制解调器,早期储备的汇编语言和 C 语言能力终于派上了用场……
两个月之后,终端仿真器完成,对此李纳斯非常骄傲:
对于我了不起的成就,萨拉(妹妹)是了解的。我把终端显示给她看,她盯着显示器看了大约五秒钟,看着上面是一串A和一串B,说了声「很好」,然后就没有然后了。我意识到我的成就并不辉煌,这犹如你指给人看你铺设的一条长长的柏油马路,但想向别人解释这条马路的意义是完全不可能的。
当时是三月,也可能是四月,就算彼得盖坦街上的白雪已经化成了雪泥我也不知道,当然我也并不关心。大部分时间我都穿着睡衣趴在相貌平平的计算机前面噼噼啪啪的敲打键盘,窗户上的窗帘遮得严严实实,把阳光和外部世界与我隔离开来。
Linux 操作系统就这样开始了,一发不可收拾。李纳斯的当时编程状态是这样的:编程――睡觉――编程――睡觉――编程――吃饭――编程――睡觉――编程――洗澡――编程……
实现了终端仿真器之后,李纳斯马不停蹄,开始添加磁盘驱动和文件系统,那一年李纳斯还在上课,但是课程很简单,他唯一的课外活动就是参加每周三晚的同学聚会,这个长着大鼻子的技术天才,常常会因为担心自己缺乏社交能力和容貌丑陋而失眠,对那时的他来说,唯一有趣的事情就是把驱动程序写出来。于是他咬咬牙对自己说,还得干下去。(看来没有女神的好处就是可以写个操作系统出来,然后把自己叫做 上帝)。
随着工作的进展,终端仿真器正在开始向一个操作系统的方向发展,李纳斯显然也看清楚了这一点。
在整个创造 Linux 的过程中,我们没有看到李纳斯使用了什么样高级工具,估计那时也没有,整个系统基本上是一行行代码敲出来的,纯手工打造,这些先贤的编程功底和效率让我们叹为观止,所以,现在,我决定打开终端,输入 vi,然后键入:to be continued,感受一下李纳斯当年编程的风采……
随着李纳斯不断的敲击键盘,他的终端仿真程序也不停的扩张,从刚开始的小树苗长成了一株盘根错节的大树,树根牢牢的抓住土地,枝丫努力的伸向天空,花朵和果实开始在高远的天空中烁烁发光,所有的细节都在李纳斯的掌控之中。懂行的技术人员都看得出来,这个大鼻子的芬兰小子是准备开发一个操作系统啊。
是年6月份,李纳斯基本确定了要开发一个操作系统内核的计划,并开始着手搜集 Unix 操作系统标准的相关资料。1991年7月3日,格林威治时间上午10点钟,李纳斯在 MINIX 新闻组发出了一封求助邮件,寻求有关 Posix 标准的帮助,他在邮件中写道:
目前我正在 MINIX 系统下做一个项目,对 POSIX 标准很感兴趣。有谁能向我提供一个机器可读的最新的 POSIX 规则?如果能有个 FTP 地址就更好了。
这份公开的邮件是标识 Linux 问世的最早证据。邮件发出后不久,有人就寄来了厚厚的 POSIX 标准,同时赫尔辛基工学院的 Ari Lemke 也对李纳斯的邮件做出了响应,为李纳斯提供了一个 FTP 地址,用来上传他即将完成的操作系统。
标准和 FTP 地址都有了眉目,李纳斯开始实现各种 System Call,以便让 Shell 运行起来。这段时间的工作让李纳斯时常感到灰心丧气,看着增加的代码量,工作似乎前进了一大步,但是检验一下功能又仿佛没有任何进展。有时候他还不得不放弃之前的想法和已经完成的代码实现,另辟蹊径重头再来,即使是在天才面前,代码也能让人欢喜让人忧。
终于 Shell 已经可以在新的操作系统上工作了,李纳斯开始编写拷贝(cp)和列表(ls)等程序。Shell 程序一旦完成,就好像完成了从0到1的飞跃,一切都变得无比顺利,李纳斯面前仿佛出现了一条阳关大道,一切都豁然开朗了,他说,要有光,于是就有了光。对于这种状态,李纳斯表示:「我很满意」,并且开始用「Linux」称呼这个操作系统。
这种满意非常重要,因为那个夏天李纳斯除了伏在电脑面前噼噼啪啪的敲击键盘,什么都没做。芬兰四月到八月的日子是一年中最美好的时光。人们到布满小岛的海上航行,去海滩上晒日光浴,到夏日小木屋中消遣时光。但是李纳斯,他只是在永无休止的编写程序,忘记了白天和黑夜,黑色的窗帘遮蔽了灿烂的阳光,也遮蔽了外面的世界。他唯一的想法就是,得赶紧把这该死的系统做出来!
1991年8月25日,李纳斯在MINIX 新闻组上发邮件做了一个调查,想知道大家希望这个新的操作系统具备什么特征。
1991年9月17日,李纳斯把已经完成的新操作系统上传到了Ari Lemke提供的 FTP 服务器上,并准备用「Freax」作为操作系统的最终代号,结果遭到了Ari Lemke的激烈反对。Ari Lemke对李纳斯说:
「李哥,您咋会想到用这么变态的名字命名操作系统呢?原来的Linux不挺好的嘛」
「那样不会显得自恋么?」
「您这样就不对了,操作系统是开天辟地的大事,人民群众都等着用您的名字命名呢,看看他们的眼神,您能辜负他们的期望吗?Linux 天生不就是用来了 Unix 遥相呼应的么?这是命,得认!」
「这……那我就不推辞了啊」
Linux 内核0.01版本终于发布了,虽然漫长的开发过程才刚刚开始.
创造操作系统,就是去创造一个所有应用程序赖以生存的基础环境――从根本上来说,就是在制定规则:什么可以接受,什么可以做,什么不可以做。事实上,所有的程序都是在制定规则,只不过操作系统是在制定最根本的规则。——李纳斯
Linux 从一诞生就被打上了开源的烙印,这一点对 Linux 的后续发展起到了至关重要的作用。从1991年内核0.01版本发布,到1994年1.0版本闪亮登场,世界各地无数的开发者为 Linux 提交了代码,李纳斯为 Linux 建立了讨论组 comp.os.linux,全世界爱好开源和 Linux 的程序员与黑客都在上面讨论问题,他们就像群蜂筑巢一样,不断的通过个体和群体的力量交替推进 Linux 的飞速发展。
李纳斯对自己说:嗯,没有任何东西可以阻挡 Linux 的普及!
这种感觉估计很多程序员都体会过,当你设计的算法得出了正确结果的时候,当你自以为解决了一个海森堡 bug(Heisenbug,表示不可重现)的时候,当你完成了一段精妙代码的时候,你摘下厚重的眼镜,推开铺满灰尘的书桌,打开办公室唯一的窗户,迎着夕阳把一只废弃的圆珠笔扔出窗外,然后冲着天空大喊:还有谁~~~?这是一种拔剑四顾心茫然的情怀。
李纳斯还不止于此。他不仅单枪匹马写出了 Linux 的内核,而且做出了开源的决定。他把 Linux 放到了互联网上,并且允许那些希望使用和改进它的人们根据开源协议修改和提交源代码。这两点对互联网的影响是极其深远的,估计李纳斯当年也没有想到,当时的两个小小的涟漪,经过时间和空间的放大,十几年后形成了一股互联网巨浪,到现在 Linux 依然处于风口浪尖。
对于 Linux 取得的成功,李纳斯将其归结为是由自己的缺点导致的:
1、 我很懒散
2、 我喜欢授权给其他人
其实这两个所谓的缺点,正是优秀程序员和领导者必备的要素,它们让 Linux 成为世界上最大的开源协作项目,为喜爱 Linux 的人们带来了最美好的技术和应用,现代的互联网几乎是运行在 Linux 之上的,可以说,李纳斯改变了世界,你每一次伐开心后在淘宝上买包包,都有李纳斯贡献的力量!
1996年的春天,Linux 顺利发布了2.0版本。是年李纳斯27岁,这个芬兰小子已经慢慢厌倦了芬兰平淡无奇的日子和不眠不休的编程生活。对于一个技术天才来说,创造一套新的技术体系就像艺术家完成一个雕像一样,当一块粗砺的岩石在他的亲手打磨下逐渐显山露水,展现出其完美容颜的时候,后续的修修补补会让这些天才产生倦怠的感觉。他们需要更快的剑,更高的山和更强大的对手。尤其是期间李纳斯访问过两次美国之后,这种感觉变得愈发不可阻挡了。
说起来美国确实是个神奇的国度,这样一个移民国家中,居住了各种从不同国度不远万里跨海而来的种族,每个种族无论在基因上还是文化上都具有原来国家的特质,这些特质相互融合与对抗,让这块大陆上的人民更锐意进取,更开放,更自由,他们愿意去追求和接纳美好的事物,最终一不留神把美国搞成了世界文化的大熔炉,而开放的文化和环境又极大的激发了人们的想象力和创造力,近代和现代的科技成果几乎全部源于美国,要么是美国人搞的,要么是外国人在美国搞的。所以有时候我们也不用顾影自怜,嘲笑自己没有国产的操作系统和编程语言,因为其他国家也没有,或很少有,芬兰好不容易出了个天才少年,也没好好珍惜,最终落了个「流落」异国他乡的下场。
李纳斯一到美国就被这块新大陆吸引了,一切都是那么的新鲜和美好,他的感受与你第一次出国后在微信朋友圈发的「天是那么的蓝,云是那么的白」是一样一样的。李纳斯在自传中写道:
我所参观的摩门教堂已有一百五十年的历史,却被照顾的很好,清洗后的教堂显示出亮丽的白色。要是在欧洲,所有的教堂都显得老旧不堪,像是蒙上了一层岁月的斑痕。看着这洁白亮丽的教堂,我脑海里产生的唯一联想竟然是迪斯尼乐园。因为它看起来太像是童话故事中的城堡,而不太是一个教堂了。
我记得自己徒步走过了金门大桥。在桥的这头时,我望着对岸的马林海岬,恨不得立刻就到对岸去徜徉在那美丽的群山之间。但等我真走到那边时,我几乎不愿意再挪动双腿……那时的我绝对想不到,在时隔六年以后的今天,我会坐在海风吹拂的海岬峰顶,一面俯瞰太平洋、旧金山湾、金门大桥和笼罩在雾中的旧金山城,一面对着大卫的录音机讲述着这一切。
从美国回到芬兰之后,李纳斯对自己说,我要去美国。
当李纳斯透露出自己的就业计划之后,马上有多家公司递来橄榄枝,其中包括著名的 Linux 公司 Red Hat。这种感觉是如此美妙,就像你刚刚掏出一支香烟,面前已是千百个打火机舞动。但是李纳斯本着不加入任何一家 Linux 公司的原则,拒绝了 Red Hat,参加了另一个名不见经传的公司的面试,这家公司叫做 Transmeta,中译名「全美达」,你们可以从维基百科上查到这家公司,不过我打赌,知道这家公司的读者不会超过千分之一,这并不是咱们孤陋寡闻,因为美国人民刚开始也不知道这家公司在干嘛,全美达官网在1997年中上线,两年半后网站的建设情况是「This web page is not yet here」,又过了很久人们才从内部员工透露出的一点信息得知,这家公司似乎是搞处理器的。这是我所知道的唯一一家保密措施强过苹果的公司,如果不是李纳斯,这家公司就像是根本没有存在过。
就是这样一家公司,面试了在开源社区名满天下的技术天才、Linux 操作系统的缔造者李纳斯,并且将其招至麾下,一待就是六年。从某种程度上,这六年严重的影响了 Linux 操作系统前行的脚步,因为李纳斯没有足够的时间开发 Linux 了。
虽然根据 Transmeta 与李纳斯的协议,他可以继续从事 Linux 的开发,而且他确实也想这么做,比如白天为 Transmeta 工作,编写 X86 解释程序,晚上继续 Linux 的伟大事业。不过真实的情况是,晚上丫睡着了……
关于加班和睡眠,李纳斯是这么解释的:
很多人都认为加班加点的工作才算真正的工作。我可不这么想。无论是 Transmeta 的工作还是 Linux 的工作,都不是靠牺牲宝贵的睡眠时间换来的。事实上,如果你想听真话,我要说,我更喜欢睡觉。
总之,李纳斯第一次从互联网上消失了,很多悲观的开发者纷纷奔走相告,李纳斯这小子是不是被招安了?丫开始为商业公司干活了,Linux 作为自由软件是不是已经濒临死亡了?每当这时候李纳斯就会出来给大家打打气说,哥还在呢,只不过刚睡醒……
关于李纳斯的这段经历,曾经在硅谷工作过的一位朋友给我提供了如下文字,大意是这样的:
每次想起李纳斯这段经历,我都要感慨万千。第一次得知李纳斯虎落硅谷的事是在2002年夏天,当地的水星报记者先是把李纳斯大吹一通,然后说他从芬兰老家搬到美国,就职于 Transmeta 已五年有余,但 H1 移民仍然停留在劳工卡初级阶段,六年期满就要打道回府了。
当时这份报纸的读者大概有一半人有 H1 经历,然后这一半人里的一半都知道 Linux 是啥东东,但是从未听说过 Transmeta 是何方神圣,这货居然把一代技术英雄扣在那儿为一个名不见经传的小资本家作苦力,导制全球开源事业停滞不前,真是胆大包天啊!于是很多读者跑到水星报去说,象李纳斯这样的天才愿意移民到美国,布什亲自开飞机去接都不为过,怎么可以被移民局压了五年呢balabala……
还好,李纳斯在2003年离开了这个叫做「全美达」的公司,受聘于开放源代码开发实验室(OSDL : Open Source Development Labs, Inc),重新统领开源世界的各路英豪,全力开发 Linux 内核,Linux 再次焕发出勃勃生机,这一次,它要引领的是互联网的技术浪潮……
李纳斯对待财富的态度就是「视金钱为粪土」,是真的粪土。
那种默然的态度让人感觉非常可怕。当一个人随便动动手挂挂名签个字就能获取上千万美金的时候,他依然和自己的妻女一家人挤在圣克拉拉一栋两层楼的公寓套房里,过着一个普通程序员的生活,同时不断改进已经遍布全球的 Linux,这是什么精神?这是毫不利己专门利人的国际主义战士的精神。
写到这我不禁想起了绿茵场上的冰王子博格坎普,当他接到几十米外的长传,用标志性的慢速停球过掉扑上来的后卫,轻扣,过掉另一个后卫,颠球,闪过最后的防守,面对守门员的时候不是大力抽射和仰天长啸,而是把球搓出一道完美的抛物线,球越过门将,缓缓落入网窝,然后博格坎普,低着头慢慢的走开,留给对手的是优雅与实用并世无双的技艺,和令人绝望的背影!
默然的感觉,懂了撒?
很多程序员创业成功或跟随创业成功之后,自以为功成身退,最早扔掉的就是代码和编译器,然后购豪宅当天使满世界贴旅游照片,你们感受一下,这个境界是完全不可同日而语的。(请勿对号入座,如有误伤,必是友军所为)
事实上李纳斯在拿到第一笔真正的财富之前,一直处于日子紧巴巴的状态。当时另两位带头大哥比尔·盖茨和史蒂夫·乔布斯早已名满天下家私万贯,同时有大量的技术人员、商人和公司通过 Linux 及其相关技术获取了巨额财富,对此,李纳斯的态度是:「和我有毛关系」,他似乎对一大群才气不高的编程人员能够享受到大笔的财富并不在意。这种情况一直持续到所有的有识之士都坐不住了:李纳斯,你再也不能这样下去了!
伦敦的一位企业家希望李纳斯在他羽翼未丰的 Linux 公司做个董事会成员,报酬是一千万美金。李纳斯说,不用。企业家惊呆了,当他喃喃自语「卧槽你特么知道一千万美金是啥概念吗」的时候,李纳斯已默默走远。
Red Hat 公司为了感谢李纳斯的卓越贡献,为他提供了一些期权,李纳斯的回复同样是,不用了,我不会给你独家的授权许可的。Red Hat 的人差点疯掉:「李爷期权您就收着吧,我们什么都不要行了吧」「唔这样啊,那就放这吧」,这就是李纳斯!
正是这笔期权让李纳斯收获了第一笔巨额财富,因为 Red Hat 1999年8月11日在纳斯达克上市了。李纳斯先是意识到自己从身无分文突然变成了拥有五十万美元的土豪,然后是一百万,五百万,李纳斯终于变得亢奋起来,原来期权也是钱啊!终于不用再为生计发愁了,对着这个事情,李纳斯的定义是:我真是最幸运的家伙!
事实上李纳斯从来没有想过 Linux 能够获得如此巨大的成功。他只是为了自己方便写了一个操作系统内核并想借此获得一点回报而已,「假如我事先知道了要做到如 Linux 这般成功需要做多少基础和琐碎工作的话,那我肯定会相当沮丧的。这意味着你首先要非常优秀,并且你所做的大部分决定都导致了正确的结果。」
任何理智的人在登山之前凝望着高耸入云的山峰和崎岖艰险的山路时,都会陷于沮丧之中。解决办法就是先迈出第一步再说,然后,但行好事,莫问前程。
Linux 不仅给李纳斯带来了名声和财富,同时给大众带去了巨大的好处。年轻一代中最聪明的程序员和黑客都在使用 Linux 的产品,正是开放的 Linux 给这些天才的程序员带去了巨大的创作热情和喜悦,他们在 Linux 平台上完成了一个又一个杰出的作品,这些技术形成的生产力,对互联网的发展起到了巨大的推动作用,直到今天。
(本文主要作者为池建强,我偷偷复制来是为了完成作业)
陈庆
“小四”本名陈庆,是时下国内网络安全界的热门精英人物之一,继袁哥、WARNING3等人后“绿盟科技”又一技术骨干,UNIX/LINUX系统底层分析高手。在这众多赞誉与头衔的背后,生活中的陈庆非常低调,盛名之下,他只认可一个自我评价:“我只是一个普通的UNIX程序员。” 流火七月一个酷暑难耐的午后,我在“中联绿盟”的办公楼按约采访小四。面前的小四再次令我感到现实与想像的差距。中等瘦削的身材,白皙骨感的脸庞,树脂镜片后谦逊坦诚的目光。一件印有“绿盟”公司徽记的黑色工作T恤,一条“看似廉价”的米色西裤,一双“绝对廉价”的“千层底”布鞋。于高档Office里满目的名牌西装革履中突显一种洒脱与闲适。在握住他主动伸出的手彼此寒暄时,我感到一种自然随和的热情,一下子淡化了初次见面的陌生感。 随后,我们坐在静静的会客室里面,听小四讲那过去的事情……
“象牙塔”里的故事
故事从“小四”这个名字说起,没人想到“小四”与“MUD”有何相关。1997年在长沙铁道学院电子工程系计算机软件专业上“大四”的陈庆,通过中国教育科研网接触互联网,“MUD”也就是“泥巴”在网上是尽人皆知的经典游戏,陈庆也一度沉迷其中。联网玩“泥巴”的时候,他起了“小四”这么一个用他自己的话说“江湖味道比较浓且具东方色彩”的化名。网名常随着人的使用习惯沿袭下来,所以“小四”叫到今天从未更改。 “小四”高考填报的所有志愿都是与计算机相关专业,且注明不服从分配录取到其他专业。对计算机如此情有独钟,源于高中时接触BASIC语言课程后激发的浓厚兴趣。这兴趣使一度热衷参加各类数学竞赛的陈庆改变了高考报数学系的初衷。很巧合,从袁哥到小四,他们原本都在数学上有很强的天赋与浓厚的兴趣,看来有数学天赋的人更易在计算机技术领域取得突出成绩。
计算机专业的学生少不了天天与电脑为伍。那还是DOS3.1盛行的年代,小四与同学开始研究病毒。这似乎也是当时计算机技术里最能激发人兴趣的东西,成为现在很多高手最初入门的切入口,比如袁哥与黄鑫。研究病毒自然离不开汇编,学校在大二时才开设汇编课程,可小四和很多同学大一就已自学成了汇编的高手,搞汇编“成风”,同学间笑谈:“以后你编病毒,我编杀毒软件,大家各赚各的钱。”大伙写起汇编来,动辄就是成千上万行代码。小四自己则练习着用汇编写一些检查病毒的程序,针对当时病毒喜欢更改系统中断向量的特点,通过硬件编程绕过操作系统对其进行监视。他用这个土方法偶然间还发现了当时已风靡全国的江民KV100杀毒软件存在的一个小问题,那就是KV100每次杀毒,总在电脑内存地址中修改一些内容,但退出后不恢复。后来小四与3个同学又用汇编实现了一个比较“大胆”的设想——更换MSDOS操作系统中的COMMAND.COM执行文件,用自编的文件取而代之,而且做得很成功,加载Windows3.1一点问题也没有,这让他们小有成就感。正由于汇编和DOS掌握得太熟练了,以至于他们很难接受DOS向Windows3.1的过渡,使他在Windows编程方面出现了一个小小的断档,小四就是跳过Windows3.1/3.2而直接用Windows95的,好在计算机技术的快速更新使这一断档变得无足轻重。
大学四年,小四的大部分课余时间都用在图书馆和书店,翻阅了众多汇编书籍和资料,手抄了大量的代码。研究汇编达到了痴迷的程度,甚至有段时间整天琢磨软、硬盘控制器的参数手册,梦想可以实现在软盘有写保护的情况下也能进行写入操作,他试图从这些参数手册中找到可利用的问题,打开突破口,不过最终理智告诉自己,这在理论上是不可能的事情。在学校,小四还接触了一段曾在微机网络操作系统中独领风骚的NOVELL公司的NETWARE网络系统,并在该平台下进行基于IPX/SPX通讯协议的编程开发。不久后“JAVA热潮”席卷全球业界,正准备毕业论文设计的小四便选用JAVA编程作为课题。为实现在JAVA下的网络编程,就得构建基于TCP/IP协议的网络开发环境。在老师的帮助下,他用一台16M内存的电脑作NT服务器,与几台运行Win95的电脑组了一个简单局网,然后就开始研究TCP/IP协议和JAVA下的底层网络通讯以及SOCKET网络编程。与许多程序员不同的是,较之与UI(用户界面)相关的开发,他更喜欢与底层的东西打交道,这让他时刻保持一种探究事物终极秘密的好奇。不过,小四认为能在应用层上开发出优秀实用的程序也是很了不起的事情,自己也一度非常向往,无奈计算机技术发展到今天,学科门类越来越细,人的精力有限,只能集中到自己最感兴趣的地方。
回顾大学生活,小四丝毫未感韶华虚度。如海绵吸水般完成了知识的原始积累。正是这象牙塔里练就的一身扎实基本功,才使他日后的“笑傲江湖”成为一种可能。
1997年夏天,小四大学毕业。以他的“边疆省身份”,按照当年“从哪来,回哪去”的毕业分配原则,除了回大西北,小四似乎别无选择。在开始不知情的情况下,档案就被兰州铁路局调走,分配到了宁夏银川铁路分局所属的一个名叫银水桥的一级编组站,离银川市还有数百公里。这里生活环境很差,四周是戈壁荒漠。当时按规定,他的工资是每月425元,但种种原因,最后发到手里的仅剩区区245元!在1997年,这笔钱即使在物价水平很低的西北地区,吃饭也快成了问题。就算这样,他的想法还是只要能安排到站里的电算中心工作,可以接触计算机,也就不走了。但这么一个最低要求也没被满足,他最后被站里分到了“调车组”,而且连做一名“调度员”竟也成了一种奢望。具体工作是他来之前想都想不到的“扒火车”!也就是摘车厢、扳道岔。小四幽默地说:“自己从小想当‘铁道游击队员’,这下倒是梦想成真了。”不过凭着对这份工作的新奇,他开始工作热情还挺高,也没怎么觉得一个计算机专业的高材生那敲击键盘的手用来摘勾扳闸有何不妥。忆起当年,对于“摘勾、分车、制动”全过程的每个细节他还像对程序代码一样仍烂熟于心,从机械原理到具体操作步骤,讲述起来津津乐道。经他一描绘,粗重简单的重复劳动也是一种赏心悦目的“行为艺术”。看着眼前这位瘦弱斯文的白面书生,怎么也想像不出他在“大漠孤烟直”的西北戈壁铁道线上,引领和分解一条条钢铁巨龙的“铁汉雄姿”!也许这就是生活的误会,也许这就是他人生过程中一个小小的考验和历练。当了3个月的“铁道游击队员”,“粗犷豪迈”生活的新鲜感渐渐褪去,代之以枯燥乏味的本色,书生陈庆也开始认真思考自己作为程序员的前途与存在价值,他开始强烈意识到这样下去是一种生命的浪费,且经济上的拮据也濒临向原本就贫困的家里伸手的窘境。于是他给母校的老师和同学写了信,表达了想回校谋职的愿望。好在当时任母校网络中心主任的老师对陈庆这个获优秀毕业设计的学生印象很好,答应帮这个忙。由于铁路这边不放人,要走只有“开除”一条路,工作调动不可能。但开弓岂有回头箭,去意已决的小四背起简单的行囊,就踏上了东进的列车。
“在火车来之前1小时,我到站长办公室跟站长去辞行,同时还奢望他能网开一面给我办调动,但他说没有这个权利,需要兰州局批准,同时又对我进行说服挽留,甚至问我如果现在调我去站电算中心,我是不是就愿意留下?我知道自己已绝无回心转意的可能,所以也没有说任何抱怨的话,只强调了一下家庭困难,希望得到站里的理解。现在想起自己当年的念头都不敢相信,刚来站里的时候我就想,只要给我分到电算中心,只要让我摸电脑键盘,那么让我一辈子在这儿给站里编FOXPRO数据库程序也成!我在校就入了党,又受军人家庭环境的教育影响,到现在我也是个组织观念很强的人。”小四回忆说。
说到这里,有一个人令小四感怀不已,那就是临行唯一为他送行的站团委书记。
“团委书记是个26岁的转业军人,我们同宿舍,对我一直很好,工作生活上给了不少照顾,走那天只有他一人扛着行李送我。在车站他说了句话,我一辈子也忘不了,他说:‘我会在这儿等你一个小时,如果一个小时后等不到你,我才回去。’因为火车开出半个小时有一个小站,可以在那儿下车再乘别的车返回他是真心希望我留下,3个多月我们吃住在一起,友情很深。我当时很感动,但我还是对他说:‘你别等了,我肯定不会再回来了!’”最后,书记没再说什么,而是掏出1000元钱塞进小四的手里。
小四走了,真的再也没回头。
跳槽的故事
事隔3个月,小四再次回到长沙母校。老师安排他到学校网络中心工作。由于无法办工作调动,他只能以编外临时的身份工作,每月只有700余元的微薄收入,但小四干得很开心,因为终于又可以摸电脑键盘了,这比什么都重要。 因为小四当初以JAVA为课题获得优秀毕业设计,老师就安排他搞JAVA开发。其间,他参与为铁道部门开发了一套基于网络的无纸化办公系统。那段时间,小四对JAVA的研究热情空前高涨,搞开发的同时还担任水木清华JAVA版的版主。1998年4月,JAVA开发告一段落的同时,学校网络中心与湖南移动公司谈了一个合作开发项目,将小四调去搞基于UNIX的编程。上学时他在学校的SGI图形工作站上就接触过UNIX下的编程,正式做起开发来也不难。当时的电信通讯系统与串口及X.25分组交换协议关系密切,这段实践令小四的此类技术能力大增,并积累了丰富的开发经验。这中间他开发了一个与摸拟交换机通讯的程序,这也是他惟一用VC开发的带用户界面的程序。不久后他又被派去搞数字交换机,全部转入UNIX SOLARIS下的C语言编程。由于是通过中国教育科研网上网,在“教研网”内免费,如访问“教研网”以外的国内、外站点则以流量记费。为了“突破限制”,小四便找了一些“肉鸡”代理出国。现在说来,这算是小四做的第一次与网络安全有关的事情。后来从书刊中看到的有关国外“黑客”的内容也激发了他对网络安全技术的浓厚兴趣。1997年互联网在国内刚兴起,上网的人多数有一定计算机技术水准,且以计算机相关专业的高年级本科或研究生居多,与他们的网上交流加快了小四向网络安全领域的技术转向。1997至1998年间,他先后在网上接触了两位现在绿盟的同事DEEPIN和袁哥,经常光顾两人的个人主页。这段时间小四玩得最多的是Socket网络编程,有时把那些能致使Windows 95蓝屏死机的DOS攻击程序找来研究。有时他也为会一己之利搞一些小动作,比如在局网内与别人同时上网,急于下载网速又慢时,他就将别人“踢下去”,趁别人当机和重启系统之际独享带宽资源。
湖南移动的这个项目小四一直开发到1999年2月,这时他再次为家庭经济困难所累。900元的月薪,除了自己生活,还要负担刚上大学的妹妹的学习及生活费用。当年他本科毕业就想“考研”,准考证都办好了,也因家庭贫困,在考试前一天决定放弃,而这个愿望最终没有实现。经济困难的压力,使对学校很有感情的他无奈之中再次做出离开的决定,就像当初从那个西北小站的出走。临行前,校网络中心主任也是当初接收他来的老师给他支了1000元钱,还把他请到家里吃饭送行。面对一直厚待自己的恩师,小四说:“老师,什么时候您自己开个公司吧,我回来继续跟您干!”
一身简单不能再简单的行囊伴着小四第一次来到了北京。与上次回长沙母校不同,这次“迁移”的目的地并没有他预订好的“接收单位”,原本有一个在北京的同学帮他联系的单位因故告吹。面对未知的前途,小四仍带着今非昔比的自信与老师同学的鼓励上路了。个人能力以及北京在全国首屈一指的网络安全发展环境使他对自己的抉择坚信不已。果然,一到京城便顺利地在国内通讯巨人——深圳华为公司的北京研究所谋到一职,在协议软件部做研发。但世事难料,公司的特点以及岗位需要并不能充分发挥他的才华与特长,加之父亲的突然病故,3个月后,他离开了华为,转入了启明星辰这个真正的网络安全专业公司。可以说到启明星辰是小四正式介入网络安全工作的开始。面试他的公司网络安全部负责人是位中科院的博士,给他出的考题是开发一个“切断他人TCP/IP连接”的小程序,没几天小四就交上了令他满意的答卷。在启明星辰的日子里,小四专心于网络协议与系统安全漏洞的研究,完成公司交给的开发任务,间或做些技术资料翻译和文档整理工作。因对网络协议分析浓厚的兴趣,他喜欢用协议分析软件“抓抓(数据)包”来研究。感觉别人开发的SNIFFER(嗅探器)不够“傻瓜化”,就自己动手写。长时间的网络编程,不但使他的网络协议与漏洞分析技术日臻纯熟,更练就了一手C语言的硬功,他戏称用C语言久了,“老本行”JAVA都不会用了。就这样,他在启明星辰一干就是半年。
1999年底,正是“绿盟”招兵买马、蓄势待发的时候。小四在网上遇到了故友,也是现在“绿盟”的工程部总监DEEPIN,后者了解到他的现状后,建议他去“绿盟”,理由是,“绿盟”已经或正在聚集一批圈内“牛人”,包括小四熟识的“WARNING3”、“Adam”都名列其中,公司未来的发展潜力巨大。当时适逢年底,小四想转过年再看看。春节后的一天DEEPIN打来电话,约小四一起去“绿盟”那边看看,小四只想着“正巧去看望一下好友TT(WARNING3)”就如约前往。去时,他还约上了自己在水木清华“黑客版”的好友,也是现在绿盟的同事IPXODI。到了“绿盟”,两人跟着DEEPIN一进门就惊讶地发现里面竟有10来个人,像个有些特别意义的聚会。他们见到了召集组织者——“眼圈”,“眼圈”说今天请大伙过来,一来吃顿饭相互认识一下,二来开个小会商议一些重要事情。这下小四意识到:这莫不是“绿盟”的“成立誓师大会”?马上有点不好意思,觉得自己是个“外人”。让他意外的事情还在后面,他随后得到一份事先打印好的“会议纪要”,发现“与会者名单”中自己和IPXODI的大名竟赫然在列,他这才明白DEEPIN今天约他们来这里的真实用意。后来知道,原来在DEEPIN的推荐下,自己早就被“眼圈”圈进了“绿盟”的“集训名单”了。有了这个“既成事实”,后面的事情自不必说,小四第二天一回启明星辰就交了辞职报告,然后就来“绿盟”上班。初到“绿盟”,小四与WARNING3、袁哥等同在“研发部”,具体工作是开发各种操作系统下的网络工具,主要是Sniffer,这要求开发者熟悉各种操作系统平台,再就是做一些网络工具程序的移植,同时他还写了不少诸如“缓冲区溢出漏洞”之类的普及性教程。缺人手的时候,他还客串一下跑外的“客户技术支持”。事无巨细,在“绿盟”这个良好的技术氛围中,小四干得很开心。
网上很多人都知道小四哥“发帖”很多,在很多技术论坛,特别是在“白云黄鹤”BBS上随处可见他的“精华帖”。提到这些帖子,小四一再谦虚地表示那都是为了与广大网友相互学习交流,其中不少是对他人理论与经验的整理总结,还有一些是翻译文章。同时他认为,不论就技术方向还是文档风格而言,自己的帖子更适合程序员阅读参考。不过令小四始料不及的是自己的名字也随着这些高技术含量的帖子的增多为越来越多的网友所熟知。文章开始提到的那篇《你尽力了吗?》虽未涉及具体技术问题,却被很多网友视作“经典”收藏,因为他们可以从中感悟到那种面对成绩和荣誉总是一笑而过的人生境界。
低调小四 采访扎记
“……一个程序员做到W.Richard.Stevens那个份上,做到逝世后还能叫全世界的顶级Hacker们专门著文怀念,但生前却不曾著文攻击,想想看,那是一种什么样的境界,那是一份什么样的淡然……”这是小四那篇《你尽力了吗》中的另一点睛之笔。
除了W.Richard.Stevens,陈庆的偶像还有贝尔实验室PLANE9的发明者与UNIX之父Ken Thompson和Dennis M.Ritchic,集“图灵奖”与“奥运银牌得主”于一身,这样的传奇已令人仰视,但更让小四感喟的则是其坐拥殊荣仍低调内敛的脱俗境界。 小四说庄子的哲学思想对自己影响很大,他很崇尚庄子淡漠名利的超然人生态度。他说自己一度脾气急躁,与别人讨论技术问题常会争个面红耳赤,语锋犀利,不留情面。虽是对事不对人,但常令对方很难接受。后来一位小四很尊敬的大师兄了解他这种情况,就建议他读读庄子。庄子“人不与天争”的观点使他很受触动,乍一看似有消极之嫌,但本质上是一种遵循客观规律的积极生活态度。现在的小四面对生活中的挫折、失意和过错都以乐观辨证的成熟态度对待,待人接物更加随和、友善。他已将顺其自然、平淡低调视作自己重要的生活准则。用他自己的话说就是:“做人不要跳来跳去!”
交淡中小四多次强调自己的“程序员”身份,他认为一个程序员的生活方式就应该是甘于寂寞,在代码行间默默耕耘。在浮躁烦恼的时候,他就会去翻一翻庄子的书,顿悟人生如梦,心境很快会平静下来。 小四至今为当年执意从银川铁路分局出走而中断的党组织关系而惋惜不已,这让我感到他身上很强烈的计划经济时代的传统组织观念,这在当今青年人里是少有的。而现在他的组织观念更多的表现为一种“团队精神”。他说“绿盟”给他提供了一个最佳的技术交流环境,一个人的能力总是有限,别人的长处往往正是自己的不足。“一根筷子很容易折断,但10根筷子在一起就很难折断”,这是他对个人与团队的理解,也是“绿盟人”的共识。
在“绿盟”那段发展困难的时期,面对其他公司的诚邀加盟,他这样答复对方:“我们当时十几个人一起来的,这会儿我要是离开他们一个人先走了,那以后我还‘混不混’了?”大白话,但很有份量。小四说抛开技术本身,他在“绿盟”比较佩服的人就是DEEPIN和“眼圈”沈总。前者的少年老成,后者的人格魅力,他说,“有‘眼圈’在,就感觉公司还有希望,有困难,大伙儿团结起来就能克服。”
小四家境很困难,父母去世又早,家庭生活的重负和责任都落在他的肩头。但给我留下更深印象的倒不是他苦撑家庭危局的艰辛经历,而是他叙述此事时平静的语气和轻松的神情。与其说这是人在苦难过后表现出的释然与超脱,我更相信是潜心研读“老庄”修得的正果。小四绝对是个性情中人,过去20年艰苦的人生经历,培养了他对家人与朋友的责任感。他视朋友为生活中不可缺少的财富。从长沙母校到银川小站,再到北京“绿盟”,如浮云游子般一路走走停停,但友情从来未曾丢弃。每当回忆起西北那戈壁小站上团委书记期盼的目光;回忆起湖南长沙至岳阳的列车上,同学在寒冷冬夜里“十八相送”的背影,小四的语气依旧平淡,但他目光的“缓冲区”中,却有明显的深情“溢出”。关于交友之道,小四的原则是,“朋友之间尽力互相帮助,帮对方的忙别记着,更不要想着有一天朋友还人情,把这个帮倒找回来,但别人帮自己的忙一定要记住。”
小四不是个生活兴趣单一的人,在计算机技术圈外还有一个“偶像”,那就是足球巨星马拉多纳。从小就爱踢球的他称自己是绝对的“阿迷”,马拉多纳忠实的拥趸。此外他还爱爬山、打乒乓球,喜欢听音乐,电脑里收集有大量的影视剧经典插曲及罗大佑老歌的MP3。不过兴趣归兴趣,他的一位师兄对他有最准确的定位:“你就是为电脑而生的,你有一天搞不好会死在键盘上!”此话后半句似有些不吉利,所以不宜作本文的结尾,那么还是再听一个小四讲的小故事吧 :“一条远航的船上,船长管理着维持船员生命的水,但有一个船员屡屡偷水喝,船长对其防不胜防。直到一天,船长生命垂危,死前他偏偏把管水的重任交给了这个‘惯偷’。可此后,该船员不但没再监守自盗,反而更珍惜每一滴水,且宁可自己少喝,以节省水的使用。他明白了水的重要与责任的重大。” 小四说这个故事让他懂得了责任在身意味着什么。
Linus与陈庆的更多相关文章
- 纯灌水Linus主义
卖桃君重新整理了Linus的相关故事,在此摘选对自己有触动的内容. 关于生命的意义,李纳斯的解释是,有三件事具有生命的意义.它们是你生活当中所有事情的动机.第一是生存,第二是社会秩序,第三是娱乐.生活 ...
- 只有文本编辑器才是王道, 什么ide都是evil的浮云, 看看linus linux的内核开发工具vim emacs
只有文本编辑器才是王道, 什么ide都是evil的浮云, 看看linus linux的内核开发工具vim emacs [ide is evil] (http://i.cnblogs.com/EditP ...
- Linus爱GPL 但不喜欢GPL诉讼
导读 在上周多伦多举行的LinuxCon NA会议上,Linus Torvalds 和 VMware 副总裁 Dirk Hohndel讨论了 GNU GPL 在 Linux 成功上所起的作用.Hohn ...
- Linus:利用二级指针删除单向链表
Linus大神在slashdot上回答一些编程爱好者的提问,其中一个人问他什么样的代码是他所喜好的,大婶表述了自己一些观点之后,举了一个指针的例子,解释了什么才是core low-level codi ...
- 【转】Linus:利用二级指针删除单向链表
原文作者:陈皓 原文链接:http://coolshell.cn/articles/8990.html 感谢网友full_of_bull投递此文(注:此文最初发表在这个这里,我对原文后半段修改了许多, ...
- Git 10 周年之际,创始人 Linus Torvalds 访谈
点这里 十年前的这一周,linux 内核社区面临一个根本性的挑战:他们不再能够使用他们的修复控制系统:BitKeeper,同时其他的软件配置管理遇到了对分布式系统的新需求.Linus Torvalds ...
- Linux之父Linus Torvalds:讨厌C++
"Linux内核的创始人Linus Torvalds最近在一封邮件中说明了内核开发需要使用C语言而非C++的理由.在庞大的项目中,人们对不是自己开发的模块并不了解,能快速理解其他模块中函数的 ...
- Linus:为何对象引用计数必须是原子的
Linus大神又在rant了!这次的吐槽对象是时下很火热的并行技术(parellism),并直截了当地表示并行计算是浪费所有人时间(“The whole “let’s parallelize” thi ...
- 转:Linus:利用二级指针删除单向链表
感谢网友full_of_bull投递此文(注:此文最初发表在这个这里,我对原文后半段修改了许多,并加入了插图) Linus大婶在slashdot上回答一些编程爱好者的提问,其中一个人问他什么样的代码是 ...
随机推荐
- hihocoder #1032 : 最长回文子串【 manacher算法实现 】
#1032 : 最长回文子串 时间限制:1000ms 单点时限:1000ms 内存限制:64MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在 ...
- POJ1182 食物链 并查集
#include<iostream>#include<stdio.h>#include<string.h>using namespace std;const int ...
- GetWindowRect和GetClientRect比较学习
一:关于坐标 MFC中绘图时经常涉及到坐标计算,GetWindowRect和GetClientRect这两个函数,是获取逻辑坐标系中窗口或控件(其实也是窗口)大小和坐标的常用函数了,有什么不一样的? ...
- struts2--标签取值
OGNL的概念: OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调 ...
- codeforces 622D D. Optimal Number Permutation(找规律)
D. Optimal Number Permutation time limit per test 1 second memory limit per test 256 megabytes input ...
- Ubuntu 下安装mysql
本文引用自 https://www.cnblogs.com/jpfss/p/7944622.html 此篇为http://www.cnblogs.com/EasonJim/p/7139275.html ...
- 趣味Shell
Richard M. Stallman大神是谁就不用说了,一时来了兴趣,想看看Linux系统下有多少程序有这位大神参与编写的. 先把所有命令导出到文件中,遍历所有命令,用man手册查一下并过滤Stal ...
- 直播推流实现RTMP协议的一些注意事项
—— 2017-2-12 更新RTMP 协议整理了一下,包括rtmp 消息类型,rtmp 如何分块,rtmp分块例子. 用脑图整理了一下,使用Xmind 打开,URL: https://github. ...
- Gym - 101196G :That's One Hanoi-ed Teacher (递推)
题意:给定当前汉诺塔的状态,问还有多少步走完,不合法输出“No”. 思路:显然可以一层一层试探下去的.我们设三个柱子为“起始”,“中转”,“终点”,当前状态的最大的盘子不可能在中转站处:如果在起始站, ...
- bootstrap 左右框多项选择示例
bootstrap 左右选择框,左边框是未选项,右边框是已选择项,提供单选,全选按钮,以及取消已选项,如图示: