Linux之父Linus Torvalds曾經(jīng)在三年前,因為微軟的一位同學(xué)質(zhì)疑Git用C語言開發(fā),而將C++痛批了一頓(參見Linux之父炮轟C++:糟糕程序員的垃圾語言)。當(dāng)時,他是這樣評論的: C++正處在困境當(dāng)中,它既無助于簡化,以實際用于進行原型化或者簡單的GUI編程,又不是像C那樣的簡潔的系統(tǒng)編程語言,能夠積極地鼓勵你使用簡單和直接的語言構(gòu)造。 2010年6月5日到11日,他又在郵件列表中連續(xù)發(fā)貼,直截了當(dāng)?shù)嘏谵ZC++。他明確表示:“我確實不喜歡C++,依我來看,它真的是一門很爛的語言?!?/p> 他還說,C++語言想解決的問題都不對路,都是一些皮毛問題,而沒有涉及真正深層次的問題。C++的對象、模板和函數(shù)重載都基本上純粹是C的語法擴展,是語法糖,總體上把C的語法和類型系統(tǒng)都弄得更糟。他建議,在系統(tǒng)編程里直接用C就可以,非系統(tǒng)編程里,應(yīng)該選擇一種有垃圾收集的語言,C++語言的特性基本無用,只會搗亂。因此,什么時候C++都不可能是正確的選擇。 在另一個帖子中,他進一步說明,內(nèi)核開發(fā)使用C語言而非C++的理由之一,是交流。在龐大的項目中,人們對不是自己開發(fā)的模塊并不了解,能快速理解其他模塊中函數(shù)的確切含義才能提高開發(fā)效率。而C++引入的各種抽象則使代碼非常依賴上下文,想理解一段代碼,需要看多得多的上下文。對于需要不斷打補?。ㄐ《未a)的內(nèi)核來說,這是非常要命的。Linus也承認,在其他一些情況下,可能需要更多語言支持,語言級的內(nèi)存分配機制如垃圾收集、并發(fā)、動態(tài)代碼生成等等。但是內(nèi)核開發(fā)不需要。而且,即使是這些方面,C++也不靈。他不忘嘲笑C++的new關(guān)鍵字很蠢。 有人問到,C++沒有解決的深層次問題是什么?Linus回答,比如并發(fā)。他進而又痛批了一通:C++是狗屎,根本沒啥設(shè)計,只是在C上面加了些渣滓而已。 有人問Linus對Go語言怎么看。他回答,Go語言里有些不錯而且重要的東西值得關(guān)注,許多決策都很合理。但設(shè)計者自己稱這個語言為實驗性的,這當(dāng)然有其原因。而且,引入一種新語言沒那么容易,過二十年再說吧。 此外,Linus還在另一個帖子里痛批了面向?qū)ο笳Z言。他認為面向?qū)ο笳Z言以對象為核心,加一些相關(guān)聯(lián)的方法,簡直是囈語。重要的東西應(yīng)該是數(shù)據(jù)結(jié)構(gòu),對象本身有啥重要?真正有意思的,是在不同類型的不同對象交互而且有鎖規(guī)則的時候。但是,即使是這時候,封裝什么“對象接口”也絕對錯誤,因為不再是單一對象的問題了。他的結(jié)論是,面向?qū)ο蠼鉀Q的都是一些小問題。 網(wǎng)易的云風(fēng)為此撰寫了一篇博客,其中談到: 我想說,C 的三個特質(zhì)(見引用文最后一段) 哪一點都不可忽略。Linus 這次強調(diào)的大約是第三點(即交流——編者注),也是 C++ 程序員們不屑一顧的一點。可對于多人協(xié)作構(gòu)建的項目,這一點實在是太重要了。這并不是人人都聰明就能回避的問題。如果程序員們都足夠睿智,反而更能意識到溝通之成本。其實即使是你一個人在做整個項目,從前的你和現(xiàn)在的你以及將來的你,同樣有溝通(記憶)的成本。人不可能兩次踏進同一條河流。 不過,他似乎只讀了Linus談交流的那篇帖子,所以得出了這次Linus比較平和的結(jié)論。呵呵,哪里平和,簡直是全盤否定啊。 Linux之父炮轟C++:糟糕程序員的垃圾語言 收藏 【圖靈圖書推薦】Linux程序設(shè)計(第3版) 眾所期待的程序設(shè)計圣經(jīng) -------------------------------------------------------------------------------- 【寫在前面】 此文貼出后,引起了大家的較多關(guān)注,是意料之中的事情。畢竟,C、C++、Linux之父,都是大家最最熟悉的東西。但是許多同學(xué)把精力放在純粹語言優(yōu)劣的爭論上,就沒有太大意思了。這場爭論的主角之一,微軟的Dmitry Kakurin有一句話非常正確:“這是一種信仰問題。因此,任何講道理和爭論都會無窮無盡,而且也毫無意義……” 我想,正確的態(tài)度,應(yīng)該是從高手們的爭論中汲取營養(yǎng),提高和深化自己對相關(guān)語言的認識,結(jié)合自己的實際環(huán)境,想想應(yīng)該怎么學(xué),怎么用。孟巖和云風(fēng)、pongba在這方面都有“有營養(yǎng)的”文字,大家可以看看。 各種語言都是有自己的局限性的,也都有自己最擅長的用武之地。今天,軟件項目中越來越傾向于采用多語言開發(fā),所以與其花精力做口舌之爭,不如多學(xué)學(xué)對方的語言。寫《程序員修煉之路》的Andy Hunt和David Thomas大師早就教導(dǎo)我們,要在軟件開發(fā)這個行當(dāng)立于不敗之地,應(yīng)該“每年學(xué)一種新的語言”。 -------------------------------------------------------------------------------- Linux之父Linus Torvalds為了Linux內(nèi)核開發(fā)而專門打造的版本控制軟件Git已經(jīng)引起了業(yè)界的廣泛關(guān)注。昨天,有一位Dmitry Kakurin老兄在查看了源代碼之后,發(fā)現(xiàn)使用的是純C而非C++,表示不可理解,他直言:“別拿可移植性說事兒,這是屁話(BS,bullshit)?!埃ù送猓€批評Git蠻力地直接操作文本,既啰嗦又易錯,而且很難跟上高層代碼邏輯。) 這個BS引起了Torvalds的強烈反應(yīng),他用“*YOU* are full of bullshit.“(你才滿嘴屁話呢)作為自己反駁的開場白。接著,他先轉(zhuǎn)向了對C++的罕見的火藥味十足的炮轟: ”C++是一種糟糕的(horrible)語言。而且因為有大量不夠標(biāo)準(zhǔn)的程序員在使用而使情況更糟,以至于極容易產(chǎn)生徹頭徹尾的垃圾(total and utter crap)。老實說,選擇C就是為了把C++程序員踢出去?!矣羞@樣的結(jié)論,任何喜歡用C++而不是C開發(fā)項目的程序員可能都是我希望踢出去的人,免得他們來搞亂我參與的項目。C++會導(dǎo)致非常非常糟糕的設(shè)計選擇。你們這些C++程序員總是一上來就用語言的那些‘漂亮的’庫特性比如STL、Boost和其他徹頭徹尾的垃圾,這可能對你們的程序有所‘幫助’,但是卻會導(dǎo)致: “——當(dāng)庫無法工作時無窮無盡的折磨(別跟我說什么STL尤其是Boost很穩(wěn)定而且可移植性很好,那全是屁話,而且一點都不可笑) "——低效的抽象編程模型,可能在兩年之后你會注意到有些抽象效果不怎么樣,但是所有代碼已經(jīng)依賴于圍繞它設(shè)計的‘漂亮’對象模型了,如果不重寫應(yīng)用程序,就無法改正。 -------------------------------------------------------------------------------- 【圖靈圖書推薦】近10年來最好的C語言圖書,哈佛、MIT教材:K.N.King《C語言程序設(shè)計:現(xiàn)代方法》即將出版??! C語言搖籃貝爾實驗室培訓(xùn)秘笈《C語言解惑》熱賣中 -------------------------------------------------------------------------------- ”也就是說,使用優(yōu)秀的、高效的、系統(tǒng)級的和可移植的C++的唯一方式,最終還是限于使用C本身具有的所有特性。項目限制只用C,意味著參與的人不會搗亂,也意味著會得到許多真正懂得底層問題,而不會折騰那些白癡‘對象模型’垃圾的程序員。 "所以,我很抱歉,但是對于Git這樣效率是主要目標(biāo)的軟件,C++的所謂優(yōu)點只是巨大的錯誤。而我們將看不到這一點的人排除在外卻成了一個巨大的附加優(yōu)勢。 "如果你想要用C++寫的版本控制系統(tǒng),去玩Monotone吧。他們確實使用了‘真格的數(shù)據(jù)庫’,使用了‘漂亮的面向?qū)ο髱臁?、使用了‘漂亮的C++抽象’??墒钦f老實話,所有這些對某些計算機專業(yè)人士而言富于吸引力的設(shè)計決定,其最終結(jié)果確是一堆可怕、難以維護的垃圾。“ -------------------------------------------------------------------------------- 【070907更新】Torvalds和Dmitry Kakurin爭論繼續(xù)中。 對Torvalds的回擊,Dmitry反唇相譏:“隨著只用C編程的恐龍們逐漸滅絕,你很快就會發(fā)現(xiàn)只剩下自己一個人在固執(zhí)己見。用Git貢獻者的數(shù)量是說明不了問題的。顯然C++開發(fā)者也能夠貢獻C代碼。但是以為他們喜歡這種方式,那可就錯了。 “沒有C的時候我用匯編編程。然后在C++誕生之前,我轉(zhuǎn)向了C。現(xiàn)在我使用C++和C#,而且不再走回頭路。差勁的程序員用任何語言都寫不出好程序。但是為了將差勁的貢獻者拒之門外這樣一個沒譜的理由而懲罰優(yōu)秀的開發(fā)者,這簡直是胡鬧?!?/div> 只過了10幾分鐘,Torvalds就回貼了:“和你不同的是,我實實在在地給出了不喜歡C++的原因,而且指出了它可能導(dǎo)致的各種問題的一些例子。而你呢,沒有給出一條像樣的使用C++的理由。事實上,Git比其他軟件配置管理軟件都要好,而好的品味(taste)和C正是原因之一。 對上面的最后一句話,Torvalds后來又做了如下補充: ”說得更具體一些: “——簡單和清晰的核心數(shù)據(jù)結(jié)構(gòu), 非常精益(lean)且頗具雄心的代碼管理著它們,將”簡單勝于花哨” 這一方法發(fā)揮到極致。 ”——有意識地不抽象數(shù)據(jù)結(jié)構(gòu)和算法,因為它們恰恰是Git核心的全部要素(whole point)。 ”如果你想用更花哨的語言,C++絕對是最糟糕的選擇。如果想要真正的高級特性,那就選擇有垃圾回收或 者好的系統(tǒng)集成的,而不是既缺乏C的簡約(sparseness)又缺乏C的直接而且沒有重要概念的高層 綁定(high-level bindings to important concepts)的東西。 “一言以蔽之,C++正處在困境當(dāng)中,它既無法幫助原型化或者簡單的GUI編程足夠簡化從而真正可用,又 不是C那樣積極地鼓勵你使用簡單和直接的語言構(gòu)造的精益系統(tǒng)編程語言。 (另一位同學(xué)插了一句:這還沒有提到很難找到兩個C++編譯器支持同樣的特性。) “這與什么恐龍毫無關(guān)系。好的品味永遠不會過時。將C與匯編語言相提并論,恰恰說明你對自己所討論的問題缺乏起碼的概念(don't have a friggin idea)。" -------------------------------------------------------------------------------- 【圖靈圖書推薦】 不容錯過的C++圣經(jīng)《C++ Primer中文版》和習(xí)題集 凝聚C++業(yè)界專家智慧的《C++編程規(guī)范》 -------------------------------------------------------------------------------- 【070908繼續(xù)更新】 爭論還在繼續(xù)。半個小時之后,半小時后,Dmitry回帖: “我說過,這是一種信仰問題。因此,任何講道理和爭論都會無窮無盡,而且也毫無意義,就像任何其他宗教問題一樣。" ”我來講講Git開發(fā)應(yīng)該使用C++的理由(而不是一般意義上C++對任何項目都更好的理由,這種說法同樣也是毫無意義的): “1. 好的String類能夠大大提高代碼的可讀性(而且代碼也會顯著減少) "2. 好的Buffer類——理由同上 ”3. 管理內(nèi)存和文件/套接字/鎖句柄的智能指針和智能句柄 “就目前而言,通過這種繁瑣的宏管理字符串和內(nèi)存,很難看出高層邏輯。 接下來他的語氣變得緩和,甚至最后還用了一個笑臉: "以我之見,Git具有非常漂亮的高層設(shè)計(對象數(shù)據(jù)庫,使用散列,數(shù)據(jù)和元數(shù)據(jù)的簡單而且容易訪問的存儲。)向你贊一個! “但是具體實現(xiàn)方式——C和shell腳本的混合、自底向上發(fā)展出來的命令行界面就很一般了。 ”我可沒有將C與匯編語言相提并論。我只是要指出我曾經(jīng)用許多不同的語言編程,目睹了糟糕的程序員用任何語言都會寫出差勁的代碼。因此這實際上是與語言無關(guān)的。 -------------------------------------------------------------------------------- Torvalds則依然怒氣未消,他反駁Dmitry對Git用宏管理字符串和內(nèi)存的批評: "完全是屁話。字符串/內(nèi)存管理根本無關(guān)緊要。還是去看看源代碼吧(我敢打賭你沒有看過)。這不是重要的部分,而且也不復(fù)雜。唯一真正重要的部分是設(shè)計。有些部分之所以是用 ' 原型化語言 ' 編寫,恰恰是因為它們不是核心部分,而且會被C慢慢地替換掉。C++可沒有辦法替換shell腳本或者Perl代碼。而且C++也沒辦法讓真正核心的部分變得更好。 "顯然你這一輩子已經(jīng)經(jīng)歷了 ' 匯編-> C -> C++/C# ' 的轉(zhuǎn)變過程,你將我這樣一直堅持用C的比作 ' 恐龍 ',似乎這是一種向更好/更現(xiàn)代的語言不可避免的演進。這是毫無根據(jù)的,因為C在很多方面都遠遠優(yōu)于C++(更優(yōu)于C#),包括可移植性,還有接口和低層支持。 "你當(dāng)然可以用任何語言編寫糟糕的代碼。但是,有些語言,尤其是帶有一些心理(mental)包袱的語言本身就非常糟糕。你這樣的新手跑來指出一些絕對無關(guān)緊要的補丁特性(【劉江按】此處應(yīng)該指C++對C的增強特性),用它們作為一種語言優(yōu)越的論據(jù)(這些東西語言原作者都不喜歡),這一事實本身恰恰說明你滿腦子都是糊涂概念,應(yīng)該好好醒悟一下了。 "對于Git核心代碼真正重要的,是諸如這樣的事情:編寫自己的對象分配代碼,使內(nèi)存占用盡可能小,從而能夠高效地記錄百萬對象的標(biāo)志。這實際上是為樹形關(guān)系的多個對象編寫本質(zhì)上非常優(yōu)化的分析程序,因為這里沒有任何抽象。這絕對是在原始內(nèi)存字節(jié)一級上的。 "這些事情能夠用C之外的語言編寫嗎?當(dāng)然可以。但是那些認為C++字符串處理這樣的高級特性很重要的人肯定是寫不出來的。 "事實上,這正是C擅長的事情。不僅指語言本身,還包括一種必需的心態(tài)(mentality)。C最大的優(yōu)點之一,就是它不會使你認為程序是什么高層的東西。正是后一種心態(tài)會使你明顯偏向其他語言,但實際上從Git的角度看來,所謂 ' 高層 ' 恰恰是錯誤的。" -------------------------------------------------------------------------------- Dmitry回帖: 我不僅看過源代碼,而且還做過很多調(diào)試工作。我發(fā)現(xiàn)的問題大多數(shù)都與處理Windows上的路徑(也就是字符串處理)有關(guān)。 他表示不再糾纏于“C與C++孰優(yōu)孰劣”的討論,而是介紹了一下自己的出發(fā)點: 我的目的是使用Git。當(dāng)有些功能無法使用時,我想能夠在盡可能最短時間和花費最小的力氣進行改正并貢獻改正的代碼。對我來說,這只是我主要工作的一種消遣而已。 而Git用C編寫這一事實,對這一目的毫無好處。建議使用C++是現(xiàn)有C代碼基礎(chǔ)的唯一出路。所以,雖然C++可能從學(xué)術(shù)上來講并非最佳選擇,但是唯一切合實際的選擇。 “除了其他已經(jīng)嘗試過了的政體之外,民主是政體的最差形式?!?br/>——溫斯頓 丘吉爾 現(xiàn)在,我認識到自己只是一個不太活躍的貢獻者,但我希望自己的聲音能夠被人聽到。而那些承擔(dān)開發(fā)和維護Git主要重任的人也應(yīng)該發(fā)出自己的聲音。 -------------------------------------------------------------------------------- 此后,Torvalds沒有再發(fā)言,大概是認為自己已經(jīng)大獲全勝。而另外一些Git貢獻者繼續(xù)對Dmitry進行反駁,可以看出,Torvalds的看法并不是他的私見。Theodore Tso說: “我認為字符串處理是C++會找來大麻煩的地方之一。糟糕的程序員(原文為idiot)會這樣寫代碼: a = b + "/share/" + c + serial_num;“其中你肯定無法弄清到底分配了多少內(nèi)存,因為有類型強制轉(zhuǎn)換、重載的操作符(感謝上帝,在C++中你可以重載逗號操作符?。?,而當(dāng)這種東西出現(xiàn)在內(nèi)循環(huán)中,結(jié)果將是性能上的大災(zāi)難,而且原因還不明顯! 另外還有同學(xué)諷刺,說的確有不少C++程序員貢獻代碼,但是反而需要核心的C程序員花費更多時間去修改和刪除。 -------------------------------------------------------------------------------- 【劉江按】以下是我的一點門外之見,做引玉的磚頭之用。 Dmitry有一點是肯定正確的,語言之爭更多的是一種類似宗教信仰上的,所以很難有結(jié)果,也沒有太多實際意義。這種爭論因為出自高手之間,所以還是會透露出很多重要的信息。比如: 1. 對于要求性能高的系統(tǒng)編程領(lǐng)域,C++其實未必勝過C,而且事實上,也確實有很多此類項目是選擇C作為主要語言的。C的生命力目前仍然毋庸置疑。更多的信息可以讀這里。 2. C++目前確實處于一種被夾攻的態(tài)勢,一方面在企業(yè)級系統(tǒng)開發(fā)(數(shù)據(jù)密集、業(yè)務(wù)規(guī)則復(fù)雜多變)中,C++已經(jīng)基本被Java和C#等淘汰出局,另一方面在系統(tǒng)編程和嵌入式等更接近硬件的領(lǐng)域,又遭到C的強烈狙擊。 3. OO技術(shù)并非one-size-fits-all。 ……(大家補充) 必須看到的是,C語言作為一種古老的語言,其局限性也是很明顯的,比如已經(jīng)成為安全問題淵藪的緩沖區(qū)溢出。C的標(biāo)準(zhǔn)庫也存在各種各樣的問題。對于更加貼近現(xiàn)實世界的眾多項目,沒有面向?qū)ο髾C制,顯然會影響開發(fā)效率。(有關(guān)C標(biāo)準(zhǔn)庫源碼層次的分析,圖靈將出版著名C/C++專家Plauger的《C標(biāo)準(zhǔn)庫》一書。)而且,即使是C程序員所引以為豪的性能優(yōu)勢,現(xiàn)在也岌岌可危了(參見C++之父Stroustrup的文章中相關(guān)的比較)。 C++目前的困境,很大程度上是由于此前的圖書和文獻曾經(jīng)一度傾向于炫技,陶醉于對語言各種細節(jié)的深入探索,有華麗化、復(fù)雜化的趨勢,語言設(shè)計者們苦心設(shè)計出來各種豐富的特性和多范型的編程風(fēng)格,卻成了學(xué)習(xí)者和使用者的負擔(dān),加上微軟等開發(fā)工具又用MFC之類的糖衣,結(jié)果造就了大批基礎(chǔ)不牢、半桶水叮當(dāng)響的C++程序員,而且因為自以為掌握了世上最難的語言,往往有目空一切的傲氣。這樣開發(fā)出來的代碼質(zhì)量,可想而知。對C++的各種誤解和不良使用習(xí)慣,可以說是漫天飛舞。而這種局面繼而造成C++逐漸成為一般人心目中望而生畏、學(xué)不好教不好更用不好的“專家語言”,越來越無法吸引新入行的程序員。老人毛病多多,新人青黃不接,C++社區(qū)的確面臨危機。 這幾年,C++界的核心人物,包括Bjarne Stroustrup、Herb Sutter、Stan Lippman、Andrei Alexandrescu和Andrew Koenig、Stephen Dewhurst等,對此局面有過較多的反思,痛定思痛之后,寫作了Learning C++ as a New Language(中譯文)、《C++ Primer》第四版、《C++編程規(guī)范》、《Accelerated C++》和《C++必知必會》等返璞歸真的文章和圖書。其核心變化,是對標(biāo)準(zhǔn)庫(Torvalds語氣中對STL和Boost也很不屑,不知是何原因,請方家告我)、規(guī)范化、領(lǐng)域概念和設(shè)計的強調(diào),弱化底層語言細節(jié),或者說強調(diào)更規(guī)范地選擇使用語言特性。 比較同一作者的《C++ Primer》第四版和第三版、《C++編程規(guī)范》和《Modern C++ Design》以及Exceptional C++系列,可以清楚地看到這一點。 比如Primer第三版一上來就突出C++的多種編程風(fēng)格(過程式編程、基于對象編程、面向?qū)ο缶幊?、泛型編程),并且以此作為布局謀篇的主線,很容易使初學(xué)者暈倒。到了第四版,則更多地把力氣花在打好扎實的基礎(chǔ),介紹那些實際開發(fā)中通用的、行之有效的編程技術(shù),在特定場合,C++提供的豐富“武器庫”中應(yīng)該選擇哪些設(shè)施、應(yīng)該注意哪些問題、業(yè)界已經(jīng)總結(jié)了哪些優(yōu)秀的編程實踐和易犯的錯誤等,成了書中的主干。這使此書成為目前最適合的C++學(xué)習(xí)和使用的百科全書。 與此配套的,當(dāng)然應(yīng)屬《C++編程規(guī)范》,用條款形式說明了C++各種語言設(shè)施的正確用法和適用場合。如果你在學(xué)習(xí)C++的時候,就能結(jié)合其中的相關(guān)條款,了解所學(xué)特性的正確用法,當(dāng)然是最理想的。而《C++必知必會》則選取了對C++程序員非常重要的知識點,進行一番貼近實際的討論。 C++圖書推薦請參見:C++藏書閣(上) 最后八卦一下,Dmitry Kakurin同學(xué)經(jīng)查應(yīng)該是一位微軟公司的工程師(參考這里最后的Thanks to),致力于Git on Windows的開發(fā)?!遣辉S聯(lián)想啊,免得又引起另外一個門派之爭。 -------------------------------------------------------------------------------- 【070909更新】好像是和Linus Torvalds呼應(yīng)似的,有相當(dāng)權(quán)威性的TIOBE的編程語言指數(shù)最近一期的結(jié)果顯示,C++下降了兩名,落后于(Visual) Basic和PHP,成了老五。而C則穩(wěn)居第二。 Position Sep 2007 Position Sep 2006 Delta in Position Programming Language Ratings Sep 2007 Delta Sep 2006 Status 1 1 Java 21.701% +0.17% A 2 2 C 14.908% -3.15% A 3 4 (Visual) Basic 10.748% +0.12% A 4 5 PHP 10.204% +1.08% A 5 3 C++ 9.938% -0.82% A 6 6 Perl 5.416% -0.01% A 7 8 C# 3.583% +0.59% A 8 7 Python 3.025% -0.12% A 9 9 JavaScript 2.722% +0.28% A 10 13 Ruby 2.065% +1.13% A -------------------------------------------------------------------------------- 【070910更新】 剛才看到,有兩位資深同學(xué)寫了相關(guān)的討論文章,用姜文的話說,屬于“有營養(yǎng)”的好文字,大家可以去看看: 孟巖:Linux之父話糙理不糙 云風(fēng):C的回歸 【070910夜更新】 今天偶然翻到《Unix編程藝術(shù)》一書,其中第4章中“Compactness”(緊湊性)部分里,Eric Raymond寫道: “在通用編程語言中,C和Python是半緊湊的;Perl、Java、Emacs Lisp和shell則不是(尤其是真正的shell編程要求你知道半打sed和awk這樣的其他工具)。C++是反緊湊的——語言的設(shè)計者承認,他并不指望任何一個程序員能夠完全理解這一語言?!?/div> -------------------------------------------------------------------------------- 【070911更新】 剛才看到一張Linux內(nèi)核開發(fā)者峰會照的全家福,有歷史價值,給大家分享一下。上面有Torvalds(大致在中間)、Andrew Morton(目前的內(nèi)核主要維護者,第二排右數(shù)第二個)、Alan Cox(Linux貢獻最大的黑客之一,為《Linux程序設(shè)計》寫序的老大,兩個柱子之間個子不高的大胡子)、Jonathan Corbet(《Linux設(shè)備驅(qū)動程序》一書的作者,第一排左數(shù)第一個)和寫書的伙伴Greg Kroah-Hartman(中間的柱子左邊)、上面發(fā)言的Tso(中間的柱子右邊,看簡歷也是個大牛呢,IBM的)、Olaf Kirch(《Linux網(wǎng)絡(luò)管理員指南》的作者)等等。有位中國人Yang Li,飛思卡爾的。Herbert Xu是澳洲的,那個坐在地上的華人女士Mingming Cao是IBM美國的。 -------------------------------------------------------------------------------- Monotone也是一個自由的CVS,網(wǎng)站在這里。 C和C++的比較是一個非常有趣的話題。你怎么看呢?
|
|