每一個人桌面上一臺電腦,這曾經是無數計算機先驅的夢想,這個夢想很早就實現了,在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的短視
維基百科相關資料