漫畫(huà) | Linux之父:財(cái)務(wù)自由以后,我失眠了!
1999年,我持股的兩家公司相繼上市,受華爾街的熱捧,股票當(dāng)天漲了733%, 我這個(gè)程序員的財(cái)富飆到了2000萬(wàn)美元!
財(cái)務(wù)自由了,我卻失眠了!
這一切是怎么發(fā)生的呢?
故事得從我的外公說(shuō)起, 他是一位統(tǒng)計(jì)學(xué)教授,有時(shí)候需要寫(xiě)點(diǎn)兒程序做統(tǒng)計(jì)。
但是他很不喜歡在鍵盤(pán)上打字,所以總是把程序?qū)懙揭粡埣埳?,讓不到十歲的我坐到他的膝蓋上,把代碼敲入計(jì)算機(jī)。

我不知道那些統(tǒng)計(jì)學(xué)的公式有什么用處,但是對(duì)電腦產(chǎn)生了強(qiáng)烈的興趣。
我開(kāi)始閱讀電腦的手冊(cè),編寫(xiě)人生的第一個(gè)程序。

我妹妹對(duì)這個(gè)程序非常感興趣,讓我做了修改,把HELLO改成了 “ SARA IS BEST” ,于是電腦開(kāi)始無(wú)休無(wú)止地夸獎(jiǎng)她。

外公的電腦是比較老舊了,用起來(lái)很不爽,我一直夢(mèng)想有一臺(tái)自己的電腦。
聽(tīng)說(shuō)有個(gè)寫(xiě)MySQL的人叫Monty,為了買(mǎi)屬于自己的電腦,暑假里去鋪瀝青賺錢(qián)!(碼農(nóng)翻身注:詳情參見(jiàn)《再見(jiàn)!MySQL》)
我可不會(huì)這么笨,我是個(gè)優(yōu)秀的學(xué)生,每年都能得到獎(jiǎng)學(xué)金,再加上我生日的壓歲錢(qián),我就買(mǎi)了一個(gè)叫做Sinclair QL的電腦。

我們這個(gè)地方的寒冬特別長(zhǎng), 長(zhǎng)夜漫漫,無(wú)心睡眠,于是我培養(yǎng)了一個(gè)度過(guò)寒冬的室內(nèi)運(yùn)動(dòng):寫(xiě)程序!
我的媽媽的話非常有道理。

現(xiàn)在的年輕人把所有的時(shí)間都花在游戲上,所以啥也學(xué)不會(huì)。
我那時(shí)候也是把時(shí)間花在游戲上,不過(guò)我不玩游戲,我編寫(xiě)游戲,牛人們都是這樣的。

有一次,我在編寫(xiě)一個(gè)軟盤(pán)驅(qū)動(dòng)程序,卻發(fā)現(xiàn)在Sinclair QL上無(wú)法工作,這怎么可能!
我寫(xiě)的代碼總是完美無(wú)缺的, 肯定是系統(tǒng)的問(wèn)題!
于是我就把操作系統(tǒng)的代碼做了反匯編,果然不出我的所料,操作系統(tǒng)有Bug!

但是我卻沒(méi)法修復(fù)這個(gè)Bug,因?yàn)镼L的操作系統(tǒng)不能修改!
我只好繼續(xù)在QL上移植游戲,像什么Pac-man,“小行星”之類(lèi),沒(méi)辦法,游戲的吸引力實(shí)在是太大了。
直到有一天, 我遇到了改變我一生的一本書(shū):《操作系統(tǒng):設(shè)計(jì)與實(shí)現(xiàn)》

這本書(shū)是荷蘭的Tanenbaum教授寫(xiě)的,里邊實(shí)現(xiàn)了一個(gè)Unix的小型翻版:MINIX。
我真的被迷住了,那年的夏天我啥也沒(méi)干,一直在讀這本書(shū)。

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

在MINIX上我玩得很高興,但是卻沒(méi)法通過(guò)電話線連到大學(xué)的電腦,因?yàn)樗鼪](méi)有一個(gè)好用的終端仿真程序。
這并不難,我自己寫(xiě)一個(gè)就行。
不過(guò),我決定玩一把大的:我的終端仿真程序應(yīng)該是個(gè)獨(dú)立王國(guó),不依賴于Minix, 一開(kāi)機(jī)就可以運(yùn)行!

只能從BIOS開(kāi)始了,我得寫(xiě)好引導(dǎo)分區(qū),搞定實(shí)模式,保護(hù)模式,讓程序在一些地址之間跳來(lái)跳去。
我還得讀取鍵盤(pán)輸入,顯示到屏幕上,還要讀寫(xiě)調(diào)制解調(diào)器,俗稱“貓”,你們這些年輕人估計(jì)是沒(méi)有見(jiàn)過(guò)了。
很快我就意識(shí)到,我需要實(shí)現(xiàn)多任務(wù):一個(gè)任務(wù)從“貓”里讀數(shù)據(jù),顯示到屏幕上,另外一個(gè)任務(wù)從鍵盤(pán)中讀數(shù)據(jù),寫(xiě)入“貓” 。
于是我仔細(xì)研究了386 CPU的多任務(wù)編程,做了一個(gè)小實(shí)驗(yàn):兩個(gè)任務(wù)交替顯示字符:

我妹妹理解不了我的偉大工作,這多少讓我有點(diǎn)失望。
我把我的終端仿真程序改造成了多任務(wù), 用它來(lái)查看電子郵件,到MINIX討論組去討論。
我很快發(fā)現(xiàn),還需要下載東西,保存到硬盤(pán)中。
那就來(lái)吧,不就是寫(xiě)個(gè)磁盤(pán)驅(qū)動(dòng)程序和文件文件系統(tǒng)嗎?
我開(kāi)始瘋狂編程。

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

但是這是非常難的一件事情,因?yàn)閎ash需要使用很多操作系統(tǒng)的系統(tǒng)調(diào)用才能運(yùn)行。

黑色的窗簾遮住了陽(yáng)光,我都不知道什么時(shí)候是白天,什么時(shí)候是黑夜。
我不斷在編程,實(shí)現(xiàn)POSIX系統(tǒng)調(diào)用, 我就像一個(gè)上帝,把計(jì)算機(jī)世界的一切都創(chuàng)造出來(lái)。
斗轉(zhuǎn)星移,終于有一天, bash運(yùn)行成功了。
整個(gè)大廈已經(jīng)建成,剩下的工作就簡(jiǎn)單了。我迅速把C語(yǔ)言編輯器 gcc也移植到了我的操作系統(tǒng)上面。
1991年9月17日,我決定公開(kāi)我的操作系統(tǒng) Linux 0.01版(沒(méi)錯(cuò),這是它的名稱),不過(guò),先讓少數(shù)人試用一下會(huì)更好。

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

我開(kāi)始不斷地修復(fù)Bug , 推出新版本 0.02, 0.03 ..... 0.10
Linux 的功能越來(lái)多,影響力越來(lái)越大,不少用戶從Minix那里叛逃,加入Linux。
這引起了Tanenbaum教授的不快,他在網(wǎng)上發(fā)表了不少攻擊我的帖子。
特別值得一提的是,他是微內(nèi)核的堅(jiān)定支持者,他說(shuō)Linux采用的宏內(nèi)核已經(jīng)落伍了,過(guò)時(shí)了。
我毫不客氣的進(jìn)行了反擊。

我知道我會(huì)贏,因?yàn)镸inix限制人們對(duì)他進(jìn)行修改和功能增強(qiáng), Tanenbaum教授說(shuō)這是為了教學(xué),防止過(guò)度復(fù)雜化。
而我的Linux則是完全開(kāi)放的, 我1991年的時(shí)候,在赫爾辛基理工大學(xué)聽(tīng)過(guò)一次理查德·斯托曼的演講, 鼓吹什么自由軟件運(yùn)動(dòng),他說(shuō)要搞一個(gè)GNU操作系統(tǒng)出來(lái),采用GPL協(xié)議。

開(kāi)源的Linux迅速地獲得了用戶的芳心, 全世界無(wú)數(shù)的開(kāi)發(fā)者參與其中。

1994年,Linux 1.0版終于發(fā)布了,我在母校赫爾辛基大學(xué)搞了一次盛大的發(fā)布會(huì),那也是我第一次上電視。
很多人都有一個(gè)疑問(wèn): 為什么這些程序員吃飽了撐的沒(méi)事干,去免費(fèi)開(kāi)發(fā)Linux?
其實(shí)我覺(jué)得是為了獲得別人的尊重和和認(rèn)可, 不過(guò),如果你是Linux內(nèi)核的重要貢獻(xiàn)者,公司會(huì)搶著請(qǐng)你的。

管理全世界的數(shù)以萬(wàn)計(jì)的程序員可不是一件容易的事情,我被迫成了一個(gè)團(tuán)隊(duì)的領(lǐng)袖,有人杜撰了一個(gè)“仁慈的獨(dú)裁者”送給我。

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

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