林納斯·本納第克特·托瓦茲——linux之父概況
著名的電腦程序員、黑客。Linux內(nèi)核的發(fā)明人及該計劃的合作者。托瓦茲利用個人時間及器材創(chuàng)造出了這套當(dāng)今全球最流行的操作系統(tǒng)(作業(yè)系統(tǒng))內(nèi)核之一。現(xiàn)受聘于開放源代碼開發(fā)實驗室(OSDL:Open Source Development Labs, Inc),全力開發(fā)Linux內(nèi)核。
人物經(jīng)歷
托瓦茲1969年12月28日出生于芬蘭赫爾辛基市。父親尼爾斯·托瓦茲(Nils Torvalds)是一名活躍的共產(chǎn)主義者及電臺記者,曾當(dāng)選芬蘭共產(chǎn)黨中央委員會委員。托瓦茲家族屬于在芬蘭占6%的少數(shù)民族芬蘭瑞典人。他畢業(yè)于赫爾辛基大學(xué)計算機(jī)系,1997年至2003年在美國加州硅谷任職于全美達(dá)公司(Transmeta Corporation),現(xiàn)受聘于開放源代碼開發(fā)實驗(OSDL:Open Source Development Labs, Inc),全力開發(fā)Linux內(nèi)核。與妻子托芙(Tove,芬蘭前女子空手道冠軍)育有三個女孩。
與很多其他黑客不同,托瓦茲行事低調(diào),一般很少評論商業(yè)競爭對手(例如微軟)產(chǎn)品的好壞,但堅持開放源代碼信念,并對微軟等對手的FUD戰(zhàn)略大為不滿。
例如,在一封回應(yīng)微軟資深副總裁Craig Mundie有關(guān)開放源代碼運動的評論(Mundie批評開放源代碼運動破壞了知識產(chǎn)權(quán))的電子郵件中,托瓦茲寫道:“我不知道Mundie是否聽說過艾薩克·牛頓(Isaac Newton)爵士?他不僅因為創(chuàng)立了經(jīng)典物理學(xué)(以及他和蘋果的故事)而出名,也還因為說過這樣一句話而聞名于世:我之所以能夠看得更遠(yuǎn),是因為我站在巨人肩膀上的緣故?!蓖型咂澯终f道:“我寧愿聽牛頓的也不愿聽Mundie的。他(牛頓)雖然死了快300年了,卻也沒有讓房間這樣得臭氣熏天。”
現(xiàn)年47歲的林納斯目前受聘于開放源代碼開發(fā)實驗室(OSDL,Open Source Development Labs),全身心的開發(fā)Linux內(nèi)核。盡管這位年輕人看上去毫不起眼,比如林納斯曾在他的自傳《樂者為王》(Just for Fun)中自嘲:“我是一個長相丑陋的孩子,凡是見過我小時候照片的人,都會覺得我的相貌酷似河貍。再想象一下我不修邊幅的衣著,以及一個托瓦茲家族祖祖輩輩遺傳下來的大鼻子,這樣,在你腦海中我的模樣就形成了?!钡@絲毫也影響不了林納斯對整個商業(yè)社會的巨大價值—Linux代表著網(wǎng)絡(luò)時代新形式的開放知識產(chǎn)權(quán)形態(tài),這將從根基上顛覆以Windows為代表的封閉式軟件產(chǎn)權(quán)的傳統(tǒng)商業(yè)模式。更重要的是,這樣的顛覆早已悄悄的出現(xiàn)在了商業(yè)社會的各個角落
托瓦爾茲對成功的獨特見解
當(dāng)在科技行業(yè)談到實現(xiàn)名利的時候,一個有遠(yuǎn)見的,像史蒂夫·喬布斯一樣偉大的人物浮現(xiàn)在我的腦海里,他通常能夠設(shè)計出令人想不到的產(chǎn)品。但這也不是LinusTorvalds能夠成為世界上最知名的程序員的理由(他經(jīng)常與好萊塢明星在奧斯卡頒獎典禮上上親密交談)。
當(dāng)托瓦爾茲還是個大學(xué)生,他發(fā)明了開源的操作系統(tǒng)Linux,在當(dāng)今世界的操作系統(tǒng)領(lǐng)域是最具生命力的(包括谷歌和Facebook均采用該操作系統(tǒng))。世界上最快的超級計算機(jī)也采用該系統(tǒng),同時,也是Android的核心。
他于1991年發(fā)明該操作系統(tǒng),描述該系統(tǒng)為“開源的操作系統(tǒng),只是因為愛好,并且不會把它做得很大很專業(yè)”。Linux因為它的大和專業(yè)在當(dāng)今世界是如此的重要。這是開源項目的典范,或者任何人都可以做出自己的貢獻(xiàn)。自2005年以來,來自1200公司的近12000名程序員把他們的代碼添加到主要的Linux操作系統(tǒng)(稱為內(nèi)核)。除了發(fā)明了操作系統(tǒng),托瓦爾茲也發(fā)明了一種方,很多人一起工作在一個電腦程序項目。他發(fā)明的方法叫做Git,Git本身創(chuàng)建了自己的行業(yè)(從Torvalds沒有獲得任何幫助的情況下),但是如Github,提供給Git價值20億美元的啟動資金。
托瓦爾茲說,如果他是一個有遠(yuǎn)見的人,那么這一切就不會發(fā)生。當(dāng)他在一次和來自IEEE的斯蒂芬·卡斯采訪中說到(和我們強(qiáng)調(diào)):我相信,為了linux的成功,我不知道我自己究竟做了哪些。當(dāng)我開始的時候,如果我堅信有一天我能成功,所以到現(xiàn)在我一直在堅持下去。有時候普你需要很多的自信,相信你能做到……
事實上,我真的不知道它最終什么時候能夠?qū)崿F(xiàn),意味著我會一直做下去。我可能會聽取他人的建議,聽取外部的意見,其他人加入該項目,我認(rèn)為這樣更容易,更有趣。有時候人們不需要別人的同意,但可以一直做自己喜歡的事情。
Linux之父話糙理不糙
Linus Torvalds曾經(jīng)在十多年前嘗試用C++來開發(fā)Linux內(nèi)核,由于種種原因,很快失敗了。自那時起他就不時表達(dá)對C++的不滿。劉江blog上的記錄的這個事件只是最近的一次而已。盡管言辭激烈,但其實話糙理不糙。
時至今日,在一般的場合下,C和C++語言的主要用途就是系統(tǒng)級軟件的開發(fā)。具體地說,C/C++寫平臺、工具和基礎(chǔ)庫,支持高層的語言來完成應(yīng)用邏輯。 在9月份《程序員》雜志上刊登的一篇《微軟架構(gòu)師談編程語言發(fā)展》的文章里,Brian Beckman直截了當(dāng)?shù)卣f,C++語言主要是用來開發(fā)別的語言的。這話片面一點,如果改成 “C++語言主要是用來支持別的語言的”,那就大體沒錯了。
做系統(tǒng)軟件開發(fā)的時候,重要的是理解系統(tǒng)的運作方式,那些漂亮的抽象手法和高級特性是次要的。
有一個有趣的現(xiàn)象,不少做系統(tǒng)軟件的老手,在用過一段C++之后,又回到C。因為在這個層次上,C++對于C的優(yōu)勢就不突出了。那些高級的抽象結(jié)構(gòu)往往是 不必要的,反而是由于抽象層次的提高,使得開發(fā)者要弄清楚“下面實際發(fā)生的事情”變得不太容易了。所以很多老手實際上覺得用C語言控制力更強(qiáng)一些,更得心 應(yīng)手一些。真正的C語言高手,對于語言和編譯器都很熟悉了,基本上在寫C時候就已經(jīng)知道編譯器優(yōu)化以后產(chǎn)生匯編代碼是個什么樣子,甚至可以改變C代碼來引 導(dǎo)編譯器產(chǎn)生最優(yōu)化的機(jī)器碼。而C++的機(jī)制很豐富,很多機(jī)制是為了滿足高層應(yīng)用和框架的需求而準(zhǔn)備的,在這個層次上發(fā)揮不出來,反而把清晰性給犧牲掉 了。很多時候,一個簡單的語句,到底背后會發(fā)生什么,即使是老手也說不清。比如:
std::string s(“Linux Torvalds“);
std::string scopy = s;
上面這段代碼不過是創(chuàng)建兩個內(nèi)容相同的字符串副本,但是沒有任何一個人能夠在不了解更多信息的情況下清楚地描述背后所發(fā)生的事情,因為不同的STL對于 string的實現(xiàn)方式不同,因此在copy assignment時表現(xiàn)也不同,有的可能是簡單地復(fù)制字符串對象,有的可能具有ref-counting機(jī)制,需要創(chuàng)建對象、設(shè)定對象值、增加引用計 數(shù),有的沒有考慮線程安全性,有的考慮了線程安全性,還得加鎖解鎖,對不起,加解鎖也還有很多做法。創(chuàng)建新的string對象時,有時還需要調(diào)用內(nèi)存分配 器,而這個東西的實現(xiàn)又五花八門,有的直接new char[],有的從內(nèi)建的memory pool申請,memeory pool是不是線程安全的?對不起,這次可能又要涉及加解鎖問題。memeory pool會不會已經(jīng)滿了?要不要次第調(diào)用new/malloc申請新的內(nèi)存塊?總之,后面的事情夠多夠復(fù)雜,沒有相當(dāng)功力,對平臺了解不夠深入,很難說出個子午卯酉來。
一個字符串復(fù)制尚且如此,別的高級特性就更不用說了。所以很多人寧可麻煩一點,也不愿意使用C++,這還是可以理解的。
就我個人來說,我還是愿意用C++的,特別是在C里寫一遍又一遍realloc的時候,就想起 string::operator+=()的好處來了。大概是STL給我的印象太深了,寫算法程序的時候,不用STL就覺得不爽,一個transform 就可以搞定的事情,非要用for循環(huán),這會讓我感覺渾身不自在。所以一般情況下,拿到一個什么問題,我還是會用C++去解決的。對我來說, Torvalds的話其實是很中肯的,即使是用C++,也要盡可能搞清楚其背后發(fā)生的事情,這樣在寫low level程序的時候才會有把握。如果是設(shè)計應(yīng)用級別的程序,就盡可能不用C/C++,把底層的事情都忘掉,專心專意做好應(yīng)用層的設(shè)計才是正道。
-
Linux
+關(guān)注
關(guān)注
87文章
11212瀏覽量
208721
發(fā)布評論請先 登錄
相關(guān)推薦
評論