每一个人桌面上一台电脑,这曾经是无数计算机先驱的梦想,这个梦想很早就实现了,在1997年,乔老师和比老师就说过,「比尔,咱们共同控制了100%的桌面系统市场」,固然乔老师没说的是,比老师控制了97%,乔老师还不到3%。时至今日,乔老师走了,比老师颓了,移动终端把传统的 PC 市场冲击的七零八落。普通用户都知道了Windows、Android、OS X 、iOS、BlackBerry等等,可是,他们依然不了解的是另外一款在计算机发展史上起到了革命性做用的操做系统:Linux!linux
当你们使用 Google 搜索时,使用 Kindle 阅读时,使用淘宝购物时,使用 QQ 聊天时,不少人并不知道,支撑这些软件和服务的,是后台成千上万台 Linux 服务器,它们时时刻刻都在进行着忙碌的运算和数据处理,确保数据信息在人、软件和硬件之间安全的流淌。能够这么说,世界上大部分软件和服务都运行在 Linux 操做系统之上,神马云计算、大数据、移动互联网,提及来风起云涌,其实没有 Linux 全得趴窝(微软除外)。程序员
可是,Linux 和它的缔造者 Linus Torvalds 同样低调,这么牛逼的一个物件,竟然只有程序员知道它的传奇,这不科学!因此我准备在这个系列中写写Linus Torvalds:他是 Linux 和 Git 的缔造者,他是一个传统的黑客,与沃兹同样,少年成名,崇尚自由,一辈子只为寻找欢笑,他,是一个真正的程序员。web
注:为了防止你们把 Linux 和 Linus 搞混,我在后面的文章中统一采用 Linus 的中文译名:李纳斯。面试
李纳斯在2001年出过一本自传,叫作《Just for Fun》,是他和大卫·戴蒙合著的,当年我有幸读到这本书,了解了不少李纳斯的平生轶事,那时我就琢磨,这个天才已经达到人生的巅峰了吧,结果这位兄台并未中止前进的步伐,转手就在2005年搞出了分布式版本控制系统 Git,目前几乎全世界的程序员都在用 Git管理他们的代码,著名网站 Github 就是基于 Git 构建的。不管是 Linux 仍是 Git,得一便可得天下,结果这哥们以一己之力发起了俩项目,并且都是主力开发人员。最终的结果是,成全了程序员,陶冶了用户,造福了一方百姓。正如李纳斯本身所言:「My name is Linus, and I am your God.」算法
1969年底,李纳斯出生于芬兰的赫尔辛基市,算是遇上了60后的尾巴。小时候他是个其貌不扬的孩子,除了一个鼻子长的「富丽堂皇」以外乏善可陈。他为了让鼻子看上去小一些,常常戴上眼镜就不肯意摘下来,这个策略和如今的不少大脸女生购买三星的 Galaxy Note 手机有殊途同归之妙。幼时的李纳斯不修边幅邋里邋遢,不怎么费劲数学和物理就学得极好,社交圈却一塌糊涂,他母亲常常和别人说,这孩子很是好养,只要把他放到一个有电脑的小黑屋里,而后再往里扔点薯条和意大利面,就好了。李纳斯对此表示认同。apache
李纳斯把年幼的本身定位成 Nerd(书呆子),可是从他的自传里我却感觉到了这位天才的有趣之处。他在书的前言里写到:编程
我对生命的意义有种理论。咱们能够在第一章里对读者解释生命的意义何在,这样就能够吸引住他们。一旦他们被吸引,而且付钱买了书,剩下的章节里咱们就能够胡扯了。(注:作人要厚道啊)安全
关于生命的意义,李纳斯的解释是,有三件事具备生命的意义。它们是你生活当中全部事情的动机。第一是生存,第二是社会秩序,第三是娱乐。生活中全部的事情都是按这个顺序发展的,娱乐以后便一无全部。所以,从某种意义上来讲,生活的意义就是要达到第三个阶段。你一旦达到了第三个阶段,就算成功了。但首先要越过前两个阶段。性能优化
为何李纳斯会这么说呢,我摘段原文给你们看看,很是有趣:服务器
李纳斯:我给你举个例子来讲明这一观点。最明显的是性,它开始只是一种延续生命的手段,后来变成了一种社会性的行为,好比你要结婚才能获得性。再后来,它成了一种娱乐。
大卫:性为何是娱乐?
李纳斯:好吧,我是在对牛弹琴。我举一个别的例子。
大卫:别别,仍是说说性吧
李纳斯:它是在另外一个层次上的blablabla……
大卫(自言自语):哦,参与就是娱乐,而不是在一旁观看。好,我明白了。
那生存、社会秩序和娱乐又是如何与技术扯上关系的呢?
李纳斯是这么解释的,技术的诞生一样是为了人类的生存,并且是为了让人生活的更好。汽车让人跑的更快,飞机让人飞得更高,互联网让人懂得更多,手机让人通讯更快,一旦这些技术成了规模,就要并入社会秩序,而后下一个阶段就是娱乐,别看手机如今就是个打电话的工具,可是很快会进入娱乐阶段……(12年后的今天,手机已经彻头彻尾变成了一个娱乐工具,打电话反而成了附属功能)。
李纳斯说:「一切事物都将从生存走向娱乐,但这并不意味着在某个局部地区没有倒退的现象,并且毫无疑问许多地方都有这种状况。有时事物的发展每每分裂的。」
从这些内容咱们能够看出,李纳斯有本身的一套理论,并且能自圆其说,其实每一个人都有本身的理论,一件事作或者不作,都是本身说服本身,每一次进步,要么是推翻本身的理论,要么是完善本身的理论。李纳斯在很小的时候就创建了本身的理论领地,那就是数学、物理、逻辑,最后是计算机,因此他毫不是本身描述的 Nerd,而是一个大智若愚的牛娃,就像射雕里的郭靖同样,看着傻,其实比谁都精,脑子里装的都是十年二十年后的事儿。并且李纳斯比郭靖牛的地方是,就一个启蒙老师,仍是本身的外公,和郭靖一比,高下立判!李纳斯基本上就是个自学成才的典范。
李纳斯的外公是赫尔辛基大学的一位统计学教授,数学家。他有一台Commodore VIC-20计算机(Commodore 是与苹果公司同时期的我的电脑公司,曾经创造过一系列辉煌,1994年破产),这台电脑的主要功能就是没有功能,你惟一能作的事情就是用 Basic 语言在上面编写本身的程序,老爷子当年就是这么作的,好比作一些数学运算和公式计算等。可是老爷子年老眼花,也不肯意打字,因而就把本身的外孙李纳斯放在腿上,让他帮助录入写在纸片上的程序。这种颇有场面感的场景一再出现后,李纳斯除了对数学有了初步的认识,同时也把计算机玩的娴熟,很快他就在外公的指导下开始编写本身的程序。
评:不少大师级的人物,很小的时候就能在某个领域内头角峥嵘,展示出一些东西,而后通过长期的练习和创做,最终成为一代传奇。在这个过程里,环境是很重要的,逆境出人才基本上是个伪命题,这句话惟一的做用就是遇到困难时给本身打打鸡血。李纳斯就是个高知子弟,10岁人家就开始玩计算机了,咱们10岁在干什么,打沙包么?甩方宝么?即便你在计算机方面有出众的天赋,但18岁之前连计算机的面儿都没见过,你就只能默默的牛逼了。等你真正开始展示出本身才华的时候,人家操做系统已经开发出来了,一入世就差异人十年的身位,除了冷冷的绝望,你还能感觉到什么?
因此如今人们没事就北上广深杭,不是喜欢人多嘴杂空气差,而是在这些一线城市能够接触更多的人和事物,见更高的山,渡更宽的河。不是为了情怀,而是拥有格局。见都没见过,还同一个起跑线呢,一跑就得趴窝。因此,不管这些地方环境多恶劣,竞争多激烈,来的永远多过走的,不为别的,只是为了缓解些许绝望的感受……
李纳斯用外公的计算机学会了 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 操做系统,源代码能够提供给大学和学生,用于操做系统教学,采用了微内核设计。其中的代码还做为《操做系统:设计与实现》的示例程序,这本书咱们在 Linus(三)中提到过,给了李纳斯极大的启发。
李纳斯使用了 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 地址,用来上传他即将完成的操做系统。
注:POSIX 全称是可移植操做系统接口(Portable Operating System Interface)。IEEE 最初制定 POSIX 标准,是为了提升 UNIX 环境下应用程序的可移植性。随着技术的发展,POSIX 开始不局限于 UNIX 系统,后续的 Linux 和 Windows NT 都部分的遵循了该标准。POSIX 在李纳斯开发的过程当中起到了灯塔的做用,直接后果就是 Linux 系统从一开始就走在了正规军的康庄大道上,基本没有跑偏过。Linux 几乎能够适配各类类型的硬件体系结构。
标准和 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」命名,并在10年后名扬天下,20年后统治服务器领域,可谓 Linux 恒久远,Linus 永流传。
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 取得的成功,李纳斯将其归结为是由本身的缺点致使的:
一、 我很懒散
二、 我喜欢受权给其余人
其实这两个所谓的缺点,正是优秀程序员和领导者必备的要素,它们让 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 平台上完成了一个又一个杰出的做品,这些技术造成的生产力,对互联网的发展起到了巨大的推进做用,直到今天。
在 Linux 出现以前,桌面操做系统的市场基本上是由比老师和乔老师控制的,虽然乔老师控制的少了一些。Linux 出现以后,桌面操做系统的格局并无太大变化,可是服务器端市场的变化倒是翻天覆地的。本来比尔但愿经过 Windows NT 和 Server 系列在服务器领域复制桌面操做系统的辉煌,从而千秋万载,一统江湖。然而,世界的发展永远是多元的,没人能经过一己之力改变历史发展的多维性,比尔·盖茨也不行。因而 Linux 出现了,并以星星之火能够燎原之势一举拿下服务器操做系统的半壁江山。
一方是商业公司和封闭的策略,另外一方是自由软件和开放的协议,这场战争一开始支持率就是一边倒的,李纳斯就像对抗风车的堂·吉诃德,可是他本身不只没有遍体鳞伤,还在没怎么亲自出场的状况下把微软这个软件风车搞得狼狈不堪,这种状况发生在现实生活中绝对是老百姓喜闻乐见的,李纳斯成了自由软件世界里的英雄和领袖,但也就此与微软结下了世仇,比尔和李纳斯许下了永世不相见的誓言。
有些加盟微软的朋友告诉李纳斯,他们曾见到他的头像被钉在了微软公司的飞镖靶心上。李纳斯对此的评价是:必定是个人大鼻子太好瞄准了。
李纳斯与另外一位业界巨头苹果之间就没这么激进了,毕竟 Linux 和 OS X 师出同门,都是从老前辈 Unix 那儿毕业的,坐在一块儿还能唠唠家常,事实上李纳斯和乔布斯确实有过一次历史性的会面。
李纳斯来到硅谷不久,就收到了一封来自乔老师秘书的邮件,邮件中写到:「听闻小李飞刀光临硅谷,蓬荜生辉,老乔不才,重回苹果,以期振昔日之雄风,如得小李相助,必将如猛虎加之羽翼而翱翔四海,天下可得。期待会面。」(固然是意译)
李纳斯看完以后不明白乔布斯要干什么,只是以为很厉害的样子。毕竟李纳斯还坐在外公腿上拨弄电脑键盘的时候,苹果的沃兹已经纯手动打造出苹果的第一代我的电脑 Apple I 了。李纳斯决定去见一下儿时的偶像,并了解一下苹果的新操做系统。
两代科技巨星的会面被安排在苹果总部 Infinity Loop,乔布斯带着原 Next 公司技术总监 Avie Tevanian(Mach 之父)接见了李纳斯,双方进行了友好而亲切的会谈,而后会谈的结果和某国常规会谈同样,就是没有结果。
其时乔布斯十年放逐回归苹果,举手投足已经是大宗师气势,他对李纳斯说,我大苹果虽然如今看起来有点颓,不过海盗精神永存,咱们已经准备好从新起航了。目前我的电脑领域仍然只有两个玩家:微软和苹果。若是 Linux 和苹果可以珠联璧合,那一切将是最好的安排,全部的开源爱好者都可以用上优雅与极客并存的 MacLinux 了。而后 Mach 之父 Avie Tevanian 向李纳斯详细介绍了整合 Mach 和 Linux 内核做为 OS X 混合内核的计划,以后庞大的 OS X 体系将构建在 Mach 和 Linux 内核的基础之上。 同时乔老师表示,基于 Mach 和 Linux 的内核系统将采用开源的方式运做,这样全世界的开源爱好者均可觉得 Mac 和 Linux 开发程序。
这几乎是一个完美的共赢方案,乔老师都被本身描绘的蓝图打动了,永远年轻,永远他妈的热泪盈眶!谁能拒绝苹果公司和乔布斯如此完美的邀请呢?
李纳斯能!
乔布斯认为本身的扭曲现实力场加上苹果巨大的市场潜力必定会让李纳斯怦然心动,没想到这个芬兰小子在计算机面前待久了,水米油盐不进,任凭乔布斯口吐莲花,我自巍然不动。首先李纳斯对 Mach 就不感冒,他认为 Mach 几乎犯下了全部的设计错误,它让系统变得复杂而效率低下;其次李纳斯以为乔布斯可能没意识到,Linux 的潜在用户要比苹果系统多;第三李纳斯乐观的认为,虽然 Linux 的目标不是占领桌面操做系统,可是显然「咱们很快就能作到这一点了」。因此李纳斯当时的反应是:
为何我要关心这些?我为何要对苹果公司的故事感兴趣?我不以为苹果公司里有什么有趣的事情。个人目标也不是占领什么桌面操做系统的市场。(嗯,虽然 Linux 立刻就要作到这点了,但这历来就不是个人目标)
如今看来,李纳斯当时对 Linux 在桌面操做系统的前景过于乐观了,虽然他天纵奇才桀骜不驯,可是也没法预测到 OS X 和 iOS 在十年后引领移动开发的浪潮。不过即便知道 OS X 将来的大发展,心高气傲的李纳斯也不会接受苹果的收编,由于 Linux 一直是独立和自由的软件图腾。
不管如何,此次非正式的会谈没有达成任何实质性的效果,可是对后来的 IT 格局产生了巨大的影响。苹果再也不关注 Linux,而是转向了 BSD。2001年苹果任命 FreeBSD 的发起人之一,老牌 BSD 黑客 Jordan Hubbard 为 BSD 技术经理,后升为 Unix 技术总监,负责 OS X 操做系统底层核心 Darwin 的研发,最终,Mach 与 BSD 技术整合在一块儿,造成了混合内核。另外,苹果开始以为开源项目也不是那么靠谱,后续他们前后研发并开源了优秀的编译器项目 LLVM 和 Clang,一举替换了整条 GCC 编译链,为 OS X 和 iOS 的性能优化和语言特性提供了巨大的帮助。这也算是苹果对那些牛叉哄哄的开源人士的回击:看,咱们也能够作开源,并且比大家作的好。
Linux 则继续在开源、独立、自由的方式下一路狂奔,虽然在桌面操做系统领域的成就乏善可陈,可是在服务器端大放异彩,目前几乎整个互联网都是运行在 Linux 及其衍生产品之上的,能够说没有 Linux,互联网不可能获得如此迅猛的发展。
十年之后,移动互联网时代来临。OS X 上长出了 iOS,Linux 上则诞生了 Android,这两个移动开发领域的双子星都有一个老祖宗,那就是 Unix。一次话不投机的会谈让 OS X 和 Linux 分道扬镳,在十几年后的今天,它们又以一种不一样的方式相见了,世界永远都是多元的,可能冥冥中自有天意吧。
不少人在完成了相似 Linux 这样宏伟的软件产品以后,基本上就止步不前了。可是李纳斯却从未停歇创新的脚步。2003年加入开放源代码开发实验室以后,李纳斯从新全职投入 Linux 内核的研发,并开始酝酿本身的另外一个跨时代的产品。
2002年,Linux 内核开发团队开始采用 BitKepper 做为代码版本管理工具。BitKeeper 是一套分布式的版本管理工具,它知足了 Linux 内核开发的技术需求。可是 BitKeeper 只是暂时对 Linux 等开源软件团队免费,并非自由软件。2005年 BitMover 公司再也不免费赞助 Linux 开发团队。对此李纳斯表示很是遗憾,但遗憾以后他并无自怨自艾伤心落泪,而是愤怒的与其余几个小伙伴花了几个星期完成了一套新的分布式代码管理工具,命名为 Git。两个月以后,Git 发布了官方版本,并在不一样的项目中应用,自由软件社区给予了 Git 普遍的支持。
与 SVN 和 CVS 等软件不一样的是,Git 更关注文件的总体性是否有改变,Git 更像一个文件系统,它容许开发者在本地获取各类数据,而不是随时都须要链接服务器。Git 的最大的特色就是离线分布式代码管理,速度飞快,适合管理大型项目,难以置信的非线性分支管理。
2005年 Git 发布以后,技术日臻成熟,不少大公司都开始采用 Git 管理本身的项目代码,2008年2月 Github 公司基于 Git 构建了协做式源代码托管网站 Github,目前该网站是这个星球上最大的源代码集散地,几乎全部的优秀代码都托管在 Github 上。Git 已经成为程序员使用最多的源代码管理工具!
对于 Git 的成功,李纳斯表示:
Git的设计其实很简单,它有一个稳定而合理的数据结构。事实上,我强烈建议围绕着数据来设计代码,而不是反其道而行之,我以为这可能就是 Git 如此成功的缘由。
坏程序员老是担忧他们的代码,而优秀的程序员则会担忧数据结构和它们之间的关系。
从 Git 诞生到今天已经有9个年头了,Git 始终没有背离其设计的初衷:高性能、简单的设计、非线性高并发分支的支持和彻底的分布式。
对于李纳斯来讲,Git 如今是他的主要消遣工具之一。他很喜欢在 Git 上编程的感受,由于不再用担忧锁定问题、安全问题和网络问题,这种感受真是太美妙了!
咱们继续期待李纳斯的第三个伟大的做品!
李纳斯认为生活意义的所有就在于:生存,社会交往和寻找乐趣。由于咱们所作的一切事情,最终彷佛都是为了咱们本身的乐趣。而进化做为主线始终贯穿其中。
李纳斯对进化的理解是:
「你知道在整个太阳系,人类已知的最复杂的工程是什么吗?——不是Linux,不是Solaris,也不是你的汽车。是你,还有我。想一想你和我都是怎么来的——不是什么超复杂的设计,没错,凭运气。除了运气,还有:
- 经过分享「源代码」实现自由的可用性和授粉机制,生物学家把它称做DNA。
- 绝不手软的用户环境把咱们很差的版本轻易地替换成更好的可执行版本,从而使种群更加优秀(生物学家把这叫作「适者生存」)。
- 大量的无方向的并行开发(试错法)。
我从未如此严肃过:咱们人类永远都没法复制出比咱们自身更复杂的个体,而天然选择却不假思索的作到了。不要低估适者生存的力量。不要错误地认为你能够作出比大量的平行试错反馈环更好的设计,那样就太抬举你的智力水平了。说实话,太阳照常升起,这和任何人的工程技巧或者编程风格都没有关系。
李纳斯一辈子只为寻找欢笑,可是他却取得了无数的成就和荣誉:
1997年,在芬兰赫尔辛基大学计算机科学系,李纳斯接受了他的硕士学位。两年后,他在斯德哥尔摩大学接受名誉博士学位,并在2000年在他的母校得到了一样的荣誉。
1998年,李纳斯接受了电子前哨基金会先锋奖。
2004年,李纳斯被《时代》杂志选为世界上最有影响力的人之一。
2006年,《时代》杂志欧洲版评选李纳斯为过去60年最有革命性的英雄人物之一。
2012年4月20日,李纳斯被宣布成为两位获奖者之一,和山中伸弥共同得到当年的千禧技术奖。该奖被广泛形容为至关于在技术领域的诺贝尔奖。
2012年4月23日,李纳斯进入互联网协会(Internet Society,ISOC)的网络名人堂。
李纳斯憎恶分明,常常口不择言,好比他对 C++的评价是:C++是一门糟糕的语言。并且有一群不合格的程序员在使用C++,他们让它变得更糟糕了。他对本身的两个产品命名的解释是:我是个自大的混蛋,我全部的项目都以个人名字来命名。开始是Linux, 而后是Git(英国俚语,饭桶的意思)。
不过我最喜欢李纳斯说过的一句话是:Talk is cheap, Show me the code。他一直用本身的编程人生诠释着这句话。2006年的时候,Linux 内核代码的2%依然是李纳斯完成的,他是代码贡献最多的人之一(是年37岁)。到了2012年,他对内核的贡献主要是合并代码,编程变少了,可是他依然对是否将新代码并入到 Linux 内核具备最终决定权。
李纳斯用本身精彩的编程人生和对自由软件的热爱演绎了现代社会中一个书呆子的胜利。若是你爱一我的,就让他去编程吧;若是你恨一我的,就让他去编程吧。代码让咱们欢笑,也让咱们忧伤,让咱们沉默,也让咱们高歌。对于程序员来讲,代码是这个世界上最美妙的音乐,会编程的孩子,都是好孩子!
本文参考资料:
李纳斯自传:Just for Fun (豆瓣)
Mac OS X 背后的故事(二)——Linus Torvalds的短视
维基百科相关资料