漫畫 | Linux之父:財務自由以后,我失眠了!
1999年,我持股的兩家公司相繼上市,受華爾街的熱捧,股票當天漲了733%, 我這個程序員的財富飆到了2000萬美元!
財務自由了,我卻失眠了!
這一切是怎么發生的呢?
故事得從我的外公說起, 他是一位統計學教授,有時候需要寫點兒程序做統計。
但是他很不喜歡在鍵盤上打字,所以總是把程序寫到一張紙上,讓不到十歲的我坐到他的膝蓋上,把代碼敲入計算機。

我不知道那些統計學的公式有什么用處,但是對電腦產生了強烈的興趣。
我開始閱讀電腦的手冊,編寫人生的第一個程序。

我妹妹對這個程序非常感興趣,讓我做了修改,把HELLO改成了 “ SARA IS BEST” ,于是電腦開始無休無止地夸獎她。

外公的電腦是比較老舊了,用起來很不爽,我一直夢想有一臺自己的電腦。
聽說有個寫MySQL的人叫Monty,為了買屬于自己的電腦,暑假里去鋪瀝青賺錢!(碼農翻身注:詳情參見《再見!MySQL》)
我可不會這么笨,我是個優秀的學生,每年都能得到獎學金,再加上我生日的壓歲錢,我就買了一個叫做Sinclair QL的電腦。

我們這個地方的寒冬特別長, 長夜漫漫,無心睡眠,于是我培養了一個度過寒冬的室內運動:寫程序!
我的媽媽的話非常有道理。

現在的年輕人把所有的時間都花在游戲上,所以啥也學不會。
我那時候也是把時間花在游戲上,不過我不玩游戲,我編寫游戲,牛人們都是這樣的。

有一次,我在編寫一個軟盤驅動程序,卻發現在Sinclair QL上無法工作,這怎么可能!
我寫的代碼總是完美無缺的, 肯定是系統的問題!
于是我就把操作系統的代碼做了反匯編,果然不出我的所料,操作系統有Bug!

但是我卻沒法修復這個Bug,因為QL的操作系統不能修改!
我只好繼續在QL上移植游戲,像什么Pac-man,“小行星”之類,沒辦法,游戲的吸引力實在是太大了。
直到有一天, 我遇到了改變我一生的一本書:《操作系統:設計與實現》

這本書是荷蘭的Tanenbaum教授寫的,里邊實現了一個Unix的小型翻版:MINIX。
我真的被迷住了,那年的夏天我啥也沒干,一直在讀這本書。

丹尼斯·里奇和肯·湯普森真是天才,他們倆設計的Unix非常精妙,它僅僅用幾個簡單的系統調用(open, close, read, write, fork...)就可以完成非常復雜的任務。
我手癢了,忍不住要去操作一下Unix,或者Minix。
悲催的是, 我的QL電腦裝不了Minix, 雖然可以遠程登錄大學的Unix主機,但是大學還沒開學!
我決定買一臺真正的386電腦,價格昂貴, 3500美元!等不及了,分期付款也在所不惜!

在MINIX上我玩得很高興,但是卻沒法通過電話線連到大學的電腦,因為它沒有一個好用的終端仿真程序。
這并不難,我自己寫一個就行。
不過,我決定玩一把大的:我的終端仿真程序應該是個獨立王國,不依賴于Minix, 一開機就可以運行!

只能從BIOS開始了,我得寫好引導分區,搞定實模式,保護模式,讓程序在一些地址之間跳來跳去。
我還得讀取鍵盤輸入,顯示到屏幕上,還要讀寫調制解調器,俗稱“貓”,你們這些年輕人估計是沒有見過了。
很快我就意識到,我需要實現多任務:一個任務從“貓”里讀數據,顯示到屏幕上,另外一個任務從鍵盤中讀數據,寫入“貓” 。
于是我仔細研究了386 CPU的多任務編程,做了一個小實驗:兩個任務交替顯示字符:

我妹妹理解不了我的偉大工作,這多少讓我有點失望。
我把我的終端仿真程序改造成了多任務, 用它來查看電子郵件,到MINIX討論組去討論。
我很快發現,還需要下載東西,保存到硬盤中。
那就來吧,不就是寫個磁盤驅動程序和文件文件系統嗎?
我開始瘋狂編程。

慢慢地我意識到,我這個終端仿真程序已經不僅僅是個程序了!
你看,它平時保存在軟盤上,只要把軟盤插入電腦,開機就能運行,它還能管理鍵盤,貓,顯示器,磁盤,支持多任務.....
這個程序不就是TMD操作系統嘛!!!
那就讓它成為一個真正的操作系統吧!操作系統必須有個用戶界面接口,那就是Shell。
我下載了一個著名的Shell:bash。希望它能在我的操作系統上運行起來。

但是這是非常難的一件事情,因為bash需要使用很多操作系統的系統調用才能運行。

黑色的窗簾遮住了陽光,我都不知道什么時候是白天,什么時候是黑夜。
我不斷在編程,實現POSIX系統調用, 我就像一個上帝,把計算機世界的一切都創造出來。
斗轉星移,終于有一天, bash運行成功了。
整個大廈已經建成,剩下的工作就簡單了。我迅速把C語言編輯器 gcc也移植到了我的操作系統上面。
1991年9月17日,我決定公開我的操作系統 Linux 0.01版(沒錯,這是它的名稱),不過,先讓少數人試用一下會更好。

出乎我的意料,雖然Linux 還有不少Bug,甚至破壞了某個人的文件系統,這些技術狂熱分子的反饋非常積極,對我的工作十分肯定。
但是我覺得吧,主要的創造性的工作已經完成,剩下的修修補補沒啥意思了, 我應該去探索一點兒新的東西。
有一天, 我一不小心把Minix操作系統給搞壞了,我走到了一個重要的十字路口:是選擇重裝Minix,還是選擇Linux 做為操作系統,從此吃自己的狗糧?
上帝讓我選擇了后者,我從此走上了一條不歸路。

我開始不斷地修復Bug , 推出新版本 0.02, 0.03 ..... 0.10
Linux 的功能越來多,影響力越來越大,不少用戶從Minix那里叛逃,加入Linux。
這引起了Tanenbaum教授的不快,他在網上發表了不少攻擊我的帖子。
特別值得一提的是,他是微內核的堅定支持者,他說Linux采用的宏內核已經落伍了,過時了。
我毫不客氣的進行了反擊。

我知道我會贏,因為Minix限制人們對他進行修改和功能增強, Tanenbaum教授說這是為了教學,防止過度復雜化。
而我的Linux則是完全開放的, 我1991年的時候,在赫爾辛基理工大學聽過一次理查德·斯托曼的演講, 鼓吹什么自由軟件運動,他說要搞一個GNU操作系統出來,采用GPL協議。

開源的Linux迅速地獲得了用戶的芳心, 全世界無數的開發者參與其中。

1994年,Linux 1.0版終于發布了,我在母校赫爾辛基大學搞了一次盛大的發布會,那也是我第一次上電視。
很多人都有一個疑問: 為什么這些程序員吃飽了撐的沒事干,去免費開發Linux?
其實我覺得是為了獲得別人的尊重和和認可, 不過,如果你是Linux內核的重要貢獻者,公司會搶著請你的。

管理全世界的數以萬計的程序員可不是一件容易的事情,我被迫成了一個團隊的領袖,有人杜撰了一個“仁慈的獨裁者”送給我。

我的技術絕對沒有問題,關鍵是溝通的技巧,如何解決分歧,說服別人,還有就是授權給其他人。
因為我很懶,我大多數時候奉行的做法就是中國古代的老子所說的“無為而治”,這種風格在業界居然獲得了好評。
奇怪的是,我能管理網絡上未曾謀面的數萬程序員,卻不能面對面地管理好Transmeta公司那十幾號人。
有個叫做Eric Raymond的人,專門寫了一篇文章,叫《大教堂與集市》,總結了Linux的成功之道,我建議你好好看看:
1. 好軟件都源自解決開發者的切身之痛。
2. 把用戶當作開發伙伴,是快速改進代碼和有效調試的不二法門。
3. 早發布,常發布。并聽取用戶意見。
4. 有這么多雙眼睛看著,Bug無處可藏。
5. 精巧的數據結構即使搭配笨拙的程序代碼,也比精巧代碼加笨拙結構的組合要強得多。
6. 保持項目的簡單性。設計達到完美的時候,不是無法再增加東西了,而是無法再減少東西了。

Linux的發展比我想象得還要快,很多大公司都加入進來。
Sun 要支持Linux,IBM也要支持Linux,他們為此要投入10億美元,我的天。
然后數據庫廠商Informix, Oracle 也紛紛支持Linux。
這讓微軟非常生氣,據說我的頭像被釘在了微軟飛鏢的靶心上。
專注于Linux的Red Hat公司和VA Linux 公司送了我一些股票期權,我一點兒都沒在意,我把那些法律文件都扔到了廢紙堆里。
然后Linux便獲得了華爾街的關注。
1999年8月11日, Red Hat上市了,第一天就漲到了35美金, 我算了算,我一下子擁有了50萬美元,這真是讓我心跳加速。
很快我就收到了Red Hat的郵件,說上市前股票拆分了, 我的50萬變成了100萬!
這不算啥,12月9號,VA Linux也上市了,第一天就暴漲了733%, 最高達320美元, 我的個人財富暫時飆至2000萬美元!
但是隨后VA Linux一路下跌, 我晚上常常在睡夢中醒來,擔心財富的迅速縮水。
我是Linus Torvalds , 別人都叫我大神,但是你看,在巨額的財富面前,我和普通人的反應是一樣的。
后面的故事大家都很清楚了, Linux統治了服務器端,占據了嵌入式開發,成為了Android的基礎操作系統。
由于對現有的版本控制系統不滿,我又開發了Git這個風靡世界的系統。
我現在在Linux基金會工作,但是我已經很少編程了,現在主要是閱讀郵件,了解大家都在做什么,然后說Yes or No。
這就是我的故事,最后我想給大家來句雞湯:追隨自己內心的興趣,你才可能真正成功!
還有一句:成功需要一點兒運氣!
Linux如果早幾年出現,沒有踏上互聯網的大潮,就不會有大規模的使用和全球范圍內的協作,如果晚出幾年,很可能會被別的操作系統所替代。
Linux恰逢其時,滿足了互聯網時代對一個免費操作系統的需求。
如需轉載,請通過作者微信公眾號coderising獲取授權。