<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    冒號(hào)和他的學(xué)生們(連載18)——系統(tǒng)語言

    冒號(hào)和他的學(xué)生們

    ——程序員提高班紀(jì)事

    18.系統(tǒng)語言

    居高者形逸而神勞,處下者形勞而神逸                        —《洪應(yīng)明·菜根譚》


    問號(hào)忙問:“您打算比較哪些主流語言呢?”

    冒號(hào)回答:“就談?wù)劦谝惶谜n提到的最流行的十二種語言吧。按語法特征可將它們分為三類:C族靜態(tài)語言五種——CC++、Java、C#D;非C族靜態(tài)語言兩種——VBDelphi;動(dòng)態(tài)語言五種——Perl、PHPPython、Ruby JavaScript 。”

    嘆號(hào)表示懷疑:“這么多種語言怎么比較得過來?”

    冒號(hào)解釋:“我們主要比較第一類的C族語言,這些也是今后學(xué)習(xí)的重點(diǎn),其他的只是泛泛而談。”

    引號(hào)猜測(cè):“因?yàn)樗麄兏匾?#8221;

    “可以這么說。”冒號(hào)直截了當(dāng),“毋庸諱言,在當(dāng)今的主流語言中,C族語言應(yīng)用范圍之廣、使用人數(shù)之多、影響力之巨都是其他類語言所無法比擬的。它們之間的關(guān)系從名字上就能看出:C語言的前身是B語言;其后是C++;Java曾被稱為C++++--,意思是在C++上增點(diǎn)東西再減點(diǎn)東西;C##就是四個(gè)疊起的加號(hào);最后D語言干脆在字母上進(jìn)行升級(jí)。”

    句號(hào)推斷:“B語言、C語言、D語言,下一個(gè)該D++、D#E語言了。”

    誰知冒號(hào)卻說:“E語言已經(jīng)有了,與Java的語法很像。甚至F語言也有了,但不是C族語言,而是Fortran族的。這不,微軟還在.Net平臺(tái)上推出了F#語言,不過這里的F指的是‘Functional’,即函數(shù)式。”

    逗號(hào)向往著:“不如直接搞個(gè)終極的Z語言,成為全世界程序員的唯一指定語言,多省事!”

    “這難度不亞于全人類共用一種語言。”冒號(hào)笑道,“愿望是美好的,我們還得面對(duì)現(xiàn)實(shí)。不扯遠(yuǎn)了,你們先談?wù)勔幌逻@些C族語言各自的特點(diǎn)吧。”

    眾人心想:老冒怎么跟國(guó)足一個(gè)毛病,老喜歡回傳,就是不直接射門,真是急煞人也!

    問號(hào)揀了個(gè)軟柿子:“C語言是C族老大,又是唯一的純過程式語言,當(dāng)然與眾不同啦。”

    引號(hào)一板一眼:“C++在過程式的基礎(chǔ)上又引入對(duì)象式和泛型式,同時(shí)保持了C的高效性和底層開發(fā)能力。”

    逗號(hào)接道:“Java既繼承了C++的優(yōu)點(diǎn),又克服了C++的復(fù)雜性,雖然底層開發(fā)能力有所減弱,但具備平臺(tái)無關(guān)性。”

    句號(hào)不緊不慢:“C#兼具C++Java各自的優(yōu)點(diǎn),但效率上不如C++,跨平臺(tái)方面不如Java。”

    嘆號(hào)后悔嘴慢:“剩下一個(gè)最陌生的D語言,在第一堂課之前還真沒聽說過,怎么擠上主流語言位置的?我想。。。呃,它總該比C++要高級(jí)吧。”

    冒號(hào)評(píng)價(jià):“各位談得雖然簡(jiǎn)單了些,也算八九不離十吧。下面我稍微展開些來講。”

    此時(shí)眾人有一個(gè)共同的愿望,希望老冒這次能痛快地單刀赴會(huì)、直搗黃龍。

    冒號(hào)似乎看出大家的心思,開始口若懸河:“關(guān)于C語言,前面多次提到。這是一把歷久彌新的寶劍,一旦出鞘,依舊寒光逼人,鋒利無儔。有了它,便如戰(zhàn)將有了佩劍,平添一分獨(dú)闖敵營(yíng)的膽氣。盡管以現(xiàn)代的眼光來看,它存在不少缺點(diǎn),但即使拋開C語言輝煌的歷史不談,單就其以如此高齡在諸多后輩沖擊之下仍屹立不倒而論,讓人無法對(duì)其多加苛求。”

    逗號(hào)提出異議:“但語言不是讓人崇拜的,而是讓人運(yùn)用的。一門語言無論過去如何榮光,如果不適應(yīng)現(xiàn)代發(fā)展趨勢(shì),還是可能被淘汰。”

    “說得非常好!”冒號(hào)竟然鼓起掌來,“迄今為止本課堂對(duì)于具體知識(shí)的講授并不多,但一直提倡獨(dú)立思考,不要盲從權(quán)威。如果你們能做到這一點(diǎn),本班的目標(biāo)也就實(shí)現(xiàn)了一半。回頭再說說C語言,它源自Unix操作系統(tǒng)的開發(fā),以其良好的抽象性和可移植性取代了匯編語言作為系統(tǒng)開發(fā)語言。因其簡(jiǎn)潔實(shí)用、靈活高效,很快從系統(tǒng)領(lǐng)域發(fā)展到其他領(lǐng)域而成為通用語言。隨著新興語言的崛起以及硬件性能的大幅提高,C語言的缺點(diǎn)也日益顯著:過于寬松的類型檢查、容易出錯(cuò)的內(nèi)存管理、相對(duì)貧乏的語言特征等等。雖然自身還在發(fā)展,它的市場(chǎng)份額日益減少乃不爭(zhēng)的事實(shí)。但在相當(dāng)長(zhǎng)的時(shí)間內(nèi),它在其所擅長(zhǎng)的領(lǐng)域里仍會(huì)占舉足輕重的一席之地。如果C能借鑒C++命名空間、重載、異常處理和STL等非OO的特征,它的生命力絕不會(huì)比任何OOP語言弱。“

    引號(hào)咨詢道:“關(guān)于C語言的學(xué)習(xí),您有何建議?”

    “精讀K&R的《The C Programming Language》,此書不過二百頁,堪稱C語言的劍訣。其中的RDennis Ritchie,是C的創(chuàng)造者,同時(shí)也是Unix的締造者之一,是真正的大師。如今的大師,同博士、教授、院士等頭銜一樣,嚴(yán)重地通貨膨脹了。”冒號(hào)不無感慨。

    問號(hào)尖銳地問:“C++既保持了C的底層開發(fā)能力,又引入了OOP,C的處境想必更加艱難吧?”

    冒號(hào)坦承:“這是不假。C++成功的一個(gè)重要因素是對(duì)C語言的兼容,由此吸引了大批的C程序員。但這不是沒有代價(jià)的,C++在兼容C的同時(shí)也保留了C的許多缺陷。Java成功的地方有很多,一個(gè)不容忽視的因素是它徹底擺脫了與C兼容的桎梏。由于C++對(duì)C的改革不徹底,又過于龐雜,并且效率上不如C,這使得C仍有其生存空間。略有諷刺意味的是,對(duì)C++批判最激烈的往往來自C的社區(qū),比如Linux之父Linus Torvalds就曾激烈地批判過C++。”

    Linus?那可是我的偶像呢!”嘆號(hào)驚訝道。

    冒號(hào)勸誡:“如果你因?yàn)槭撬姆劢z而后悔學(xué)C++,那就是為他人的偏執(zhí)買單,不管那人名氣有多大。”

    句號(hào)指出:“C++最為人詬病的地方有:語法過于復(fù)雜,學(xué)習(xí)曲線陡、開發(fā)效率低;支持的范式過多;OOP不徹底;自省(Reflection)功能不足;支持指針操作導(dǎo)致安全隱患;沒有自動(dòng)垃圾回收,容易內(nèi)存泄漏;沒有線程支持;沒有豐富的標(biāo)準(zhǔn)庫(kù)支持圖形界面、網(wǎng)絡(luò)編程等。”

    “罪狀不少哇!這些說法都有一定道理,但也有失公允。且聽我一一道來。”冒號(hào)當(dāng)起了辯護(hù)律師,“C++過于復(fù)雜這點(diǎn)沒錯(cuò),Stroustrup說過一句耐人尋味的話:一種語言不復(fù)雜是因?yàn)椴怀墒?。成人肯定比兒童?fù)雜,因?yàn)樗袚?dān)更大的責(zé)任。大家不妨看看Java1.06.0的發(fā)展過程,是否應(yīng)證了這一點(diǎn)?當(dāng)然C++的復(fù)雜度的確高于其他語言,但如果不執(zhí)著于奇技淫巧,它絕非高不可攀。C++的開發(fā)效率相比JavaC#,差距主要在兩個(gè)方面:一是標(biāo)準(zhǔn)庫(kù)不夠完善,二是需要手工回收垃圾。關(guān)于前者,的確是C++的一大軟肋,標(biāo)準(zhǔn)庫(kù)竟然連企業(yè)應(yīng)用中最常用的圖形界面、網(wǎng)絡(luò)編程、數(shù)據(jù)庫(kù)處理等都不能涵蓋,嚴(yán)重障礙了生產(chǎn)力。其實(shí)C++也有苦衷,不像JavaC#那樣有大公司的鼎力支持,只靠效率極為低下的標(biāo)準(zhǔn)委員會(huì)來維護(hù)。98年的一個(gè)標(biāo)準(zhǔn)直到03年還在修訂,下一個(gè)標(biāo)準(zhǔn)至少要到09年。連Stroustrup都在哭窮,說沒有足夠的人和時(shí)間來開發(fā)標(biāo)準(zhǔn)庫(kù),可為何廣受贊譽(yù)的Boost庫(kù)至今仍徘徊在標(biāo)準(zhǔn)門外?考慮到Boost的創(chuàng)辦人大多出自標(biāo)準(zhǔn)委員會(huì),其他無此背景的類庫(kù)恐怕更難登C++之堂了。相比之下D語言更慘,雖然天生麗質(zhì),苦無豪門青睞,只好一直待字閨中。”

    嘆號(hào)感慨:“金錢才是技術(shù)的最大推動(dòng)力??!”

    “話糙理不糙。”冒號(hào)也很無奈,“此外,C++不支持自動(dòng)垃圾回收,是因?yàn)?/span>Stroustrup固執(zhí)地認(rèn)為這該由library來支持。一方面,C++主張RAIIResource Acquisition Is Initialization)原則,通過析構(gòu)函數(shù)(destructor)或智能指針(smart pointer)能在大多數(shù)情況下有效地解決內(nèi)存釋放問題;另一方面,盡管自動(dòng)垃圾回收機(jī)制逐漸為大眾接受——據(jù)說C++0x也將部分地支持它——但這種機(jī)制也存在缺陷。比如一個(gè)Java程序如果在某一時(shí)段極耗內(nèi)存,由于自動(dòng)垃圾回收的不定時(shí)性,不能保證及時(shí)清理內(nèi)存,可能會(huì)拋出OutOfMemoryError。另外,自動(dòng)垃圾回收機(jī)制并不能完全避免內(nèi)存泄漏問題,Java程序的內(nèi)存泄漏可能會(huì)比C++的更多,因?yàn)?/span>C++程序員對(duì)此更有戒心。”

    問號(hào)直奔要害:“您如何看待CC++中的指針?”

    冒號(hào)欣然接招:“指針是CC++最大的特色,其他語言要么不支持,要么支持得有限。CC++可以說是成也指針,敗也指針。用得好可以是削鐵如泥的神兵利器,用得不好則可能是自我毀滅的罪惡淵藪。但由于二者定位于系統(tǒng)語言,而指針對(duì)于底層操作是必不可少的。同樣道理,二者的數(shù)據(jù)類型的轉(zhuǎn)換比其他靜態(tài)類型語言更自由,也是源出于此。”

    句號(hào)總結(jié):“能力越大,責(zé)任越大,風(fēng)險(xiǎn)越大。

    “正是此意!”冒號(hào)重重地敲了一下桌子,“此話既適用于編程語言,也適用于程序員。至于C++缺少對(duì)自省功能的支持,也是因?yàn)樽非笮?,不愿在元?shù)據(jù)上花時(shí)間和空間。說到C++支持的范式過多,程序員過于自由,代碼不標(biāo)準(zhǔn)難維護(hù),這就如同埋怨餐館提供的菜式過多以致難以擺出一桌酒席一樣可笑。最后,指責(zé)C++不是100OOP的說法更是荒謬之極。OOP又不是金子,含量越高越好。試圖把一切都裝進(jìn)OOP的箱子里的想法無異于削足適履。典型的如Java中的Math類,邏輯上壓根兒就不存在什么Math對(duì)象,清一色的static方法和常量就是最好的諷刺。在C++中只要在mathnamespace中定義一些自由函數(shù)就可以了,自然而簡(jiǎn)潔。”

    引號(hào)發(fā)覺:“您好像把對(duì)C++所有的責(zé)難都化解了。”

    “可恨之人必有可憐之處嘛。”冒號(hào)俗語反用,“其實(shí)C++仍有不少亟待改進(jìn)之處,D語言就是很好的啟示。D語言的提供了可控制的垃圾回收器;支持動(dòng)態(tài)數(shù)組(dynamic array);支持契約式設(shè)計(jì)(design by contract);廢除了CC++ 令人頭痛的頭文件(header file)等等。這些都是C++程序員夢(mèng)寐以求的特征。”

    逗號(hào)很奇怪:“為什么D語言名氣這么???”

    句號(hào)吟道:“千里馬常有,伯樂不常有,大腕伯樂更稀有。”

    眾樂。

    冒號(hào)結(jié)語:“CC++同為系統(tǒng)語言,決定了它們的理念是:優(yōu)化機(jī)器的時(shí)間而不是人的時(shí)間優(yōu)化機(jī)器的記憶而不是人的記憶;假設(shè)編譯器是愚蠢的而程序員是聰明的,因此賦予程序員更多的權(quán)利、義務(wù)與責(zé)任。無視這種背景和理念而去與其他語言相較,必不著筋節(jié)。需要強(qiáng)調(diào)的是,常見的‘C/C++’的說法很不科學(xué)。CC++雖有千絲萬縷的聯(lián)系,但一個(gè)簡(jiǎn)單,一個(gè)復(fù)雜;一個(gè)純過程式,一個(gè)集過程式、對(duì)象式、泛型式和元編程于一體。貌合神離,不宜混為一談。”

    嘆號(hào)一個(gè)問題憋了半天,不吐不快:“我有一個(gè)問題:如今電腦性能這么高,CC++如此強(qiáng)調(diào)運(yùn)行效率還有必要嗎?”

    “絕對(duì)有必要!”冒號(hào)斬釘截鐵,“其一、縱向看,用戶的耐心與電腦的速度成反比,早年一個(gè)386人們就滿足了,如今卻忍受不了586;其二、橫向比,相對(duì)緩慢的系統(tǒng)競(jìng)爭(zhēng)力也低;其三、在一些領(lǐng)域如人工智能方面,普通電腦的速度還遠(yuǎn)遠(yuǎn)不能滿足要求,超級(jí)計(jì)算機(jī)的存在就是明證;其四、仍有些程序跑在資源有限的機(jī)器上,比如嵌入式系統(tǒng)。”

    引號(hào)再次要求:“能推薦一些C++方面的書嗎?”

    冒號(hào)直言:“學(xué)好C一本書足矣,學(xué)好C++即使推薦十本仍有遺珠之憾??梢哉fC++是苦了編程者,甜了著書人。開個(gè)小書單:初級(jí)——《C++ Primer》和《Thinking in C++》;中級(jí)——《The C++ Programming Language》和《Effective C++》系列;高級(jí)——《The C++ In-Depth》系列。這里還要特別推薦一下《The Design and Evolution of C++》,從中你可以看到 C++的設(shè)計(jì)和演變的來龍去脈,極具啟發(fā)性。C++是匹無轡無鞍的野馬,看似桀驁不馴,若能順性而御,必能足踏飛燕,行千里而不勞。”

    posted on 2008-06-05 13:05 鄭暉 閱讀(3166) 評(píng)論(27)  編輯  收藏 所屬分類: 冒號(hào)和他的學(xué)生們

    評(píng)論

    # re: 冒號(hào)和他的學(xué)生們(連載18)——系統(tǒng)語言 2008-06-05 15:37 dennis

    c要是向C++靠近,那才是悲劇的開始  回復(fù)  更多評(píng)論   

    # re: 冒號(hào)和他的學(xué)生們(連載18)——系統(tǒng)語言 2008-06-05 21:29 ron

    感謝。
    回味,繼續(xù)聽課。  回復(fù)  更多評(píng)論   

    # re: 冒號(hào)和他的學(xué)生們(連載18)——系統(tǒng)語言 2008-06-05 21:31 ron

    尺有所短寸有所長(zhǎng),選擇一門語言,就是選擇一類應(yīng)用。贊。  回復(fù)  更多評(píng)論   

    # re: 冒號(hào)和他的學(xué)生們(連載18)——系統(tǒng)語言 2008-06-05 21:44 白色天堂

    每種語言都有自己特點(diǎn)和適用范圍,但c++的問題就是野心太大,想從底層開發(fā)到企業(yè)級(jí)應(yīng)用都能適合,最后的結(jié)果就是個(gè)四不像,特性越加越多,語法越來越復(fù)雜,但什么都作不好。我不看好c++的前途,Linus的看法是有他的道理的。  回復(fù)  更多評(píng)論   

    # re: 冒號(hào)和他的學(xué)生們(連載18)——系統(tǒng)語言 2008-06-05 22:16 鄭暉

    @白色天堂
    如果你認(rèn)真看看Linus的原話,你會(huì)發(fā)現(xiàn)他的狂傲、無知與偏執(zhí)。他根本不懂c++,甚至不能算是c的專家,連Ritchie都承認(rèn)c可能被包括c++、Java在內(nèi)的語言替代。c++的問題與野心無關(guān),c#同樣想從底層開發(fā)到企業(yè)級(jí)應(yīng)用通吃,關(guān)鍵是c++標(biāo)準(zhǔn)委員會(huì)推進(jìn)改革的力度和效率不夠。  回復(fù)  更多評(píng)論   

    # re: 冒號(hào)和他的學(xué)生們(連載18)——系統(tǒng)語言[未登錄] 2008-06-05 23:50 過客

    @鄭暉
    頂你,說得好~~~
    某些人用不好C++就說C++不好,無異于沒錢坐飛機(jī)卻對(duì)別人說害怕飛機(jī)失事才不去坐。  回復(fù)  更多評(píng)論   

    # re: 冒號(hào)和他的學(xué)生們(連載18)——系統(tǒng)語言 2008-06-06 05:50 ELLE

    c#也不比c++簡(jiǎn)單,況且c++很注重性能。  回復(fù)  更多評(píng)論   

    # re: 冒號(hào)和他的學(xué)生們(連載18)——系統(tǒng)語言 2008-06-06 09:27 Matthew Chen

    c++的復(fù)雜源于多方面的原因,如lz提到了不少,但其實(shí)大多數(shù)原因正是因?yàn)樗旧淼膹?fù)雜所引起的,這有點(diǎn)惡性循環(huán),你不夠好用人家就不支持你,所以你就停步不前,越來越不好用。
    oop不一定是萬金油,但是oop就是要作萬金油,一切邏輯上可感知的都可以是對(duì)象,從這點(diǎn)上來說,Math是很正常的。
    歷史發(fā)展和進(jìn)化的軌跡是曲折的,退步和埋沒都很正常,不要以為金子總能發(fā)光,和氏璧為人所知的時(shí)候?qū)υ瓉碇С炙闹魅藚s已經(jīng)沒有任何價(jià)值了。  回復(fù)  更多評(píng)論   

    # re: 冒號(hào)和他的學(xué)生們(連載18)——系統(tǒng)語言 2008-06-06 09:55 鄭暉

    @Matthew Chen
    >>>不夠好用人家就不支持你
    微軟以前也支持c++,但一方面不能掌握標(biāo)準(zhǔn),另一方面要與Sun競(jìng)爭(zhēng),搞個(gè)J++被Sun告,只好自己搞c#,與c++是否好用并無太多關(guān)系。
    >>>一切邏輯上可感知的都可以是對(duì)象,從這點(diǎn)上來說,Math是很正常的。
    一切都可以當(dāng)作對(duì)象,但不代表那么做是合適的。
    Math不是對(duì)象,只是類,沒有人會(huì)new一個(gè)Math。對(duì)于Math這種永遠(yuǎn)不會(huì)有非static的方法和域、永遠(yuǎn)不必有instance的類,無論從邏輯上還是從語法上看,都應(yīng)當(dāng)是命名空間。  回復(fù)  更多評(píng)論   

    # re: 冒號(hào)和他的學(xué)生們(連載18)——系統(tǒng)語言 2008-06-06 13:22 dennis

    @鄭暉
    你對(duì)Linus的評(píng)價(jià)太讓人吃驚了,沒想到。這個(gè)系列到現(xiàn)在已經(jīng)沒啥意義了,一直停留在形而上學(xué)的討論,令人乏味。  回復(fù)  更多評(píng)論   

    # re: 冒號(hào)和他的學(xué)生們(連載18)——系統(tǒng)語言 2008-06-06 13:50 鄭暉

    @dennis
    我對(duì)Linus的評(píng)價(jià)是否過分,看看他的的原話就知道了。(參見
    http://advice.cio.com/esther_schindler/linus_torvalds_why_c_sucks)
    他在linux上的成功不代表他就是編程語言上的專家,至少在這方面的造詣遠(yuǎn)遠(yuǎn)在Ritchie和Stroustrup之下。如果因此得罪了你的偶像而引起你的不快,在此致歉!但我堅(jiān)持自己的看法。
    此外,形而上學(xué)的討論是有意義的,太執(zhí)著于局部技術(shù)的程序員,缺乏對(duì)技術(shù)的全局感知能力,尤其容易在日新月異的技術(shù)面前迷失方向。至于具體的技術(shù)細(xì)節(jié),本系列稍后將會(huì)涉及,還請(qǐng)多提意見!  回復(fù)  更多評(píng)論   

    # re: 冒號(hào)和他的學(xué)生們(連載18)——系統(tǒng)語言 2008-06-06 13:54 ezcat

    我就是喜歡這個(gè)系列討論的形而上學(xué),標(biāo)新立異,蘊(yùn)含智慧。提出了很多編程上深層次的思考,揭示了很多自己所不了的東西,實(shí)在大開眼界。它本來就不是XX語言學(xué)習(xí)手冊(cè),教你一板一眼的該怎么寫,怎么用。  回復(fù)  更多評(píng)論   

    # re: 冒號(hào)和他的學(xué)生們(連載18)——系統(tǒng)語言 2008-06-06 15:30 dennis

    @鄭暉
    sorry,我說話都是比較直接的,不好意思。關(guān)于linus那番話,國(guó)內(nèi)c++大牛也有很多討論,其中不乏認(rèn)同的人,我這個(gè)不用cpp的人沒資格評(píng)價(jià)。我只是覺的評(píng)價(jià)不應(yīng)該帶太多感性色彩,您恐怕是c++的忠實(shí)擁護(hù)者,不覺的對(duì)linus也談不上c專家的評(píng)價(jià)太偏激了一點(diǎn)?  回復(fù)  更多評(píng)論   

    # re: 冒號(hào)和他的學(xué)生們(連載18)——系統(tǒng)語言 2008-06-06 15:35 dennis

    @鄭暉
    形而上學(xué)的討論當(dāng)然是必要的,整體的認(rèn)知才能對(duì)細(xì)節(jié)有所深入。只是看到現(xiàn)在,我還沒發(fā)現(xiàn)開始適當(dāng)?shù)厍腥爰?xì)節(jié),因而比較失望。還是期待您的后續(xù)。  回復(fù)  更多評(píng)論   

    # re: 冒號(hào)和他的學(xué)生們(連載18)——系統(tǒng)語言 2008-06-06 15:51 鄭暉

    @dennis
    沒關(guān)系。國(guó)內(nèi)關(guān)于linus那番話的討論我倒真不清楚,只是個(gè)人看法。說linus談不上c專家,或許有些偏激,也可以理解為我的專家標(biāo)準(zhǔn)太高了:-)
    我不是任何語言的忠實(shí)擁護(hù)者,任何語言都有可愛之處和可恨之處。c++最吸引人的地方是它為程序員提供了最大的發(fā)揮的空間,雖然這不是沒有代價(jià)的。  回復(fù)  更多評(píng)論   

    # re: 冒號(hào)和他的學(xué)生們(連載18)——系統(tǒng)語言 2008-06-06 21:04 白色天堂

    Linus當(dāng)初的評(píng)論我看過,他只是從os開發(fā)人員的角度說了對(duì)c++的看法,而且我不覺得有什么很出格的地方。反而你說他連c都不熟悉,不知道到底是誰偏執(zhí)。

    我說c++應(yīng)用范圍太廣你拿c#來類比純屬無聊,我還沒聽說有人打算用c#來些os的。

    c++獲得的支持并不少,所有對(duì)java有商業(yè)支持的大公司幾乎都有研究c++,不存在支持不夠的問題,c++還是這幅鳥樣只能說他的根本就有問題,除非推倒重來。  回復(fù)  更多評(píng)論   

    # re: 冒號(hào)和他的學(xué)生們(連載18)——系統(tǒng)語言 2008-06-06 21:09 白色天堂

    c會(huì)被c++和java取代,這種話說出去會(huì)笑死人的。c++死18次c都不會(huì)死。  回復(fù)  更多評(píng)論   

    # re: 冒號(hào)和他的學(xué)生們(連載18)——系統(tǒng)語言[未登錄] 2008-06-06 22:08 Matthew Chen

    @鄭暉
    當(dāng)時(shí)微軟開發(fā)的vc++,標(biāo)準(zhǔn)還沒制定,另外java的崛起也在這個(gè)時(shí)候,從兩個(gè)方面反映了c++都有對(duì)商業(yè)應(yīng)用支持不夠的地方:標(biāo)準(zhǔn)化和統(tǒng)一的通用性,“不好用”這個(gè)詞很廣泛,很好用,所以我才挑的它。
    命名空間確實(shí)是和包還有靜態(tài)類都不同的東西,就像是允許函數(shù)和類的混合集合吧。也許從你的角度來說是不合適的,但從較純粹的oo的java來說,考慮一下效率和實(shí)現(xiàn)難易,卻也只能是“合適”的了。
    你這里好啊,大家都平靜一點(diǎn)討論,不要太吵。  回復(fù)  更多評(píng)論   

    # re: 冒號(hào)和他的學(xué)生們(連載18)——系統(tǒng)語言 2008-06-06 22:47 鄭暉

    @白色天堂
    請(qǐng)仔細(xì)閱讀Linus的原話,看看我有沒有冤枉他。僅摘錄一段:“C++ is a horrible language. It's made more horrible by the fact that a lot of substandard programmers use it, to the point where it's much much easier to generate total and utter crap with it. Quite frankly, even if the choice of C were to do nothing but keep the C++ programmers out, that in itself would be a huge reason to use C."(C++ 是一門極其糟糕的語言,因?yàn)橛写罅?strong>不合格的程序員在使用,使得它更加糟糕,它非常非常容易產(chǎn)生徹頭徹尾的廢物。非常坦白地說,即使選擇C什么都不做而僅僅是把C++程序員趕出去,這本身就是使用C的一個(gè)巨大的理由。)此外還有對(duì)boost、STL等偏激的言論,這里不一一說明。

    另外,請(qǐng)不要偷換概念,我并沒有說他不熟悉c,而是說他未必稱得上專家。我眼中的專家,雖不必到Ritchie和Stroustrup之類的大師水平,也當(dāng)接近,Linus?差得太遠(yuǎn)。

    我還沒聽說有人打算用c#來些os的”,你沒聽說不等于沒有,Singularity、SharpOS都是。“純屬無聊”這樣的話有欠禮數(shù)。

    “C語言正在被C++,也可能是Java所替代”,這是Ritchie說的,還會(huì)笑死人嗎?(google 一下“傳奇的締造者——C語言之父訪談”)
    c++雖然讓人詬病的地方很多,但仍是少數(shù)成功的語言之一,這是不容置疑的。說“C++鳥樣",有失風(fēng)度。

    爭(zhēng)論使人接近真理,爭(zhēng)吵使人遠(yuǎn)離真理。   回復(fù)  更多評(píng)論   

    # re: 冒號(hào)和他的學(xué)生們(連載18)——系統(tǒng)語言 2008-06-08 03:50 YYX

    @鄭輝
    對(duì)于OOP,Bruce Eckel 提出,對(duì)于開發(fā)設(shè)計(jì)來說,可以把一個(gè)對(duì)象看作一個(gè)服務(wù)提供者,很明顯Math就是這樣一個(gè)數(shù)學(xué)運(yùn)算的服務(wù)提供者  回復(fù)  更多評(píng)論   

    # re: 冒號(hào)和他的學(xué)生們(連載18)——系統(tǒng)語言 2008-06-08 09:50 鄭暉

    @YYX
    在本系列連載8“并發(fā)范式”中我就提出“對(duì)象式系統(tǒng)是服務(wù)型公司,每個(gè)對(duì)象是一名服務(wù)員”。但請(qǐng)注意,Math是類而非對(duì)象,它的使用與一個(gè)namespace沒有任何不同。當(dāng)然,任何函數(shù)或函數(shù)集合(僅僅包含自由函數(shù)的namespace可以認(rèn)為是函數(shù)集合)都可以認(rèn)為是服務(wù)提供者。但引入對(duì)象或者OOP最大的目的是:一、賦予對(duì)象以狀態(tài)、并對(duì)此封裝;(Math沒有任何狀態(tài))二、通過繼承來代碼重用(Math沒有狀態(tài),不必產(chǎn)生instance,也就不可能從父類Object那里得到什么好處。)

    至于Java為什么如此設(shè)計(jì),本系列下篇將會(huì)有所涉及,歡迎討論!  回復(fù)  更多評(píng)論   

    # re: 冒號(hào)和他的學(xué)生們(連載18)——系統(tǒng)語言 2008-06-11 14:12 藍(lán)劍

    上面的好多人都犯了自以為是的錯(cuò)誤,找理由支持的時(shí)候就說好些例子,其實(shí),你們找到的那些例子你自己都不知道是什么,都不理解,就憑一句話來支持你的觀點(diǎn)?
    舉例:
    1:你對(duì)Linus的評(píng)價(jià)太讓人吃驚了,沒想到。--這位讀者是不是真正去理解事情的本源了?
    2:c++獲得的支持并不少,所有對(duì)java有商業(yè)支持的大公司幾乎都有研究c++。--不知道這位朋友是怎么得出的結(jié)論?信口開河是不對(duì)的。

    另外,請(qǐng)不要把某一個(gè)方面專長(zhǎng)的人作為神來看待,正如一個(gè)音樂家,可能在其他方面是弱智。一個(gè)專家說屁是香的,我們要學(xué)會(huì)質(zhì)疑而不是去追捧。
    linus他很好,只是在Linux方面而已,你讓他干別的,他不一定能行。
    現(xiàn)在技術(shù)五花八門,能精通一方面就不錯(cuò)了,想多能很難,全能是不可能的,即使是蓋茨也不行。說實(shí)話,Linus比蓋茨差遠(yuǎn)了,大家追捧他緊緊是開源而已。

      回復(fù)  更多評(píng)論   

    # re: 冒號(hào)和他的學(xué)生們(連載18)——系統(tǒng)語言 2008-06-14 13:28 dennis

    @藍(lán)劍
    得了吧,你認(rèn)為別人自以為是,您又何嘗不是如此?
    -----------------
    另外,請(qǐng)不要把某一個(gè)方面專長(zhǎng)的人作為神來看待,正如一個(gè)音樂家,可能在其他方面是弱智。一個(gè)專家說屁是香的,我們要學(xué)會(huì)質(zhì)疑而不是去追捧。
    linus他很好,只是在Linux方面而已,你讓他干別的,他不一定能行。
    現(xiàn)在技術(shù)五花八門,能精通一方面就不錯(cuò)了,想多能很難,全能是不可能的,即使是蓋茨也不行。說實(shí)話,Linus比蓋茨差遠(yuǎn)了,大家追捧他緊緊是開源而已。
    ---------------------------
    這樣的大話、空話,在我看來基本等于放P。  回復(fù)  更多評(píng)論   

    # re: 冒號(hào)和他的學(xué)生們(連載18)——系統(tǒng)語言 2008-06-14 13:29 dennis

    爭(zhēng)論這么多,沒見有人拉出段代碼來評(píng)價(jià)一番,口頭的大道理誰不會(huì)講?至于linus那番話的背景和爭(zhēng)論,不了解的自己看孟巖、劉未鵬、云風(fēng)等人的blog去。  回復(fù)  更多評(píng)論   

    # re: 冒號(hào)和他的學(xué)生們(連載18)——系統(tǒng)語言 2008-06-15 19:24 鄭暉

    @dennis
    >>>爭(zhēng)論這么多,沒見有人拉出段代碼來評(píng)價(jià)一番,口頭的大道理誰不會(huì)講?
    任何關(guān)于語言的紛爭(zhēng)注定是無果而終,即使拋開大道理拿出代碼來講小道理,也是徒費(fèi)口舌。關(guān)于語言,一言蔽之,“沒有糟糕的語言,只有糟糕的程序員”。糟糕的語言根本不會(huì)流行,糟糕的程序員卻“流行”得很。

    >>>至于linus那番話的背景和爭(zhēng)論,不了解的自己看孟巖、劉未鵬、云風(fēng)等人的blog去。
    雖不愿再談此事,但如果真想了解背景,出于實(shí)證精神還是應(yīng)該去看看原文,而不是某某的blog。平心而論,Linus是在別人首先發(fā)難的情況下才有此番過激言論的,不可完全當(dāng)真。只是作為IT名人挑起激烈的語言之爭(zhēng),顯非明智之舉。君不見C、C++和Java的創(chuàng)始人在一起尚惺惺相惜、相談甚歡,其他人等卻爭(zhēng)得面紅耳赤,是否有些滑稽?

    最后,博客上的交流既是心靈的聚會(huì),也是一種難得的緣分。希望諸位能忘掉彼此之間因一時(shí)的情緒之言而造成的不快(說話與編程一樣,哪能一點(diǎn)bug都沒有呢?),冰釋前嫌,保持平和寬容的心境,共同探討,共同進(jìn)步! 感謝大家的熱情參與!  回復(fù)  更多評(píng)論   

    # re: 冒號(hào)和他的學(xué)生們(連載18)——系統(tǒng)語言 2008-06-15 19:46 dennis

    @鄭暉
    還麻煩您留言了。你誤會(huì)我的意思了,我對(duì)這個(gè)爭(zhēng)論其實(shí)一點(diǎn)興趣都沒有,因?yàn)榭隙?zhēng)不出結(jié)論:) 看到藍(lán)劍同學(xué)的一番回復(fù),都是套話空話,忍不住回幾句。你讓linus是去干其他的可能不行,同樣,你讓蓋茨去賣餛飩他也可能不行,這不是典型的廢話?借您寶地,打攪抱歉。  回復(fù)  更多評(píng)論   

    # re: 冒號(hào)和他的學(xué)生們(連載18)——系統(tǒng)語言 2008-08-05 17:13 leweslove

    作者寫這篇的時(shí)候是否會(huì)料到有爭(zhēng)論呢?  回復(fù)  更多評(píng)論   

    導(dǎo)航

    統(tǒng)計(jì)

    公告

    博客搬家:http://blog.zhenghui.org
    《冒號(hào)課堂》一書于2009年10月上市,詳情請(qǐng)見
    冒號(hào)課堂

    留言簿(17)

    隨筆分類(61)

    隨筆檔案(61)

    文章分類(1)

    文章檔案(1)

    最新隨筆

    積分與排名

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 老妇激情毛片免费| 国产色在线|亚洲| 亚洲精品免费观看| 亚洲日韩中文字幕| 国产亚洲精品bv在线观看| 99亚洲男女激情在线观看| 一区二区三区免费视频播放器| 女同免费毛片在线播放| 毛片免费全部播放无码| 国产美女a做受大片免费| 亚洲午夜精品第一区二区8050| 亚洲一区二区三区高清| 亚洲码和欧洲码一码二码三码| 免费在线人人电影网| 久久免费视频99| 四虎影视www四虎免费| 亚洲熟伦熟女新五十路熟妇| 亚洲一区二区在线视频| 亚洲欧美成人av在线观看| 亚洲黄片手机免费观看| 久草视频免费在线观看| 亚洲 综合 国产 欧洲 丝袜| 亚洲av网址在线观看| 亚洲精品无码成人片久久不卡 | 黄色网页免费观看| 日本在线免费播放| 女人18特级一级毛片免费视频| 亚洲综合日韩久久成人AV| 亚洲人成人77777在线播放| 一级一黄在线观看视频免费| 国产精品免费精品自在线观看| 亚洲中文字幕丝袜制服一区| 亚洲午夜久久久久久尤物| 一区视频免费观看| 国产免费久久精品99re丫y| 久久亚洲av无码精品浪潮| 亚洲AV日韩综合一区尤物| 男女作爱在线播放免费网站| 麻豆国产入口在线观看免费| 亚洲综合一区二区国产精品| 四虎精品免费永久免费视频|