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