正在閱讀:慶祝20歲生日: C++圖書熱點(diǎn)觀察慶祝20歲生日: C++圖書熱點(diǎn)觀察

2005-12-26 10:30 出處: 作者:《程序員》雜志 責(zé)任編輯:xietaoming

  不知不覺,C++迎來了自己20歲的生日。20年來,C++從一個實驗室語言成長為軟件產(chǎn)業(yè)一流主導(dǎo)語言,在實際應(yīng)用中取得了巨大的成功,同時也催生了大量為技術(shù)人員耳熟能詳?shù)慕?jīng)典技術(shù)著作,比如Bjarne Stroustrup的《TC++PL》和《D&E》,Stan Lippman的《C++ Primer》,Scott Meyers的《Effective C++》,GoF的《Design Patterns》,Andy Koenig的《Ruminations on C++》,Herb Sutter的《Exceptional C++》,Andrei Alexandrescu的《Modern C++ Design》,Addison Wesley的“C++ in Depth”系列等。C++領(lǐng)域的一些經(jīng)典圖書不但對于C++語言的發(fā)展起到了巨大的推動作用,而且對于其他相關(guān)技術(shù)領(lǐng)域也起到了指導(dǎo)和促進(jìn)作用。例如Scott Meyers的“Effective系列”,開辟了技術(shù)圖書寫作的新風(fēng)格,而“Design Patterns”的影響,更是遠(yuǎn)遠(yuǎn)超出C++的范疇。這些經(jīng)典的好書,已經(jīng)成為C++輝煌歷史的一部分而被人們銘記。

  20年后的今天,軟件產(chǎn)業(yè)的規(guī)模和環(huán)境已經(jīng)發(fā)生了深刻的變化。如今企業(yè)級應(yīng)用整合與開發(fā)的任務(wù)主要由Java、C#、Visual Basic以及各種新型動態(tài)語言來承擔(dān),而C++的應(yīng)用場合也有所收縮,不再是像1990年代中期那樣從上到下包打天下,而是呈現(xiàn)出鮮明的應(yīng)用領(lǐng)域特色。相應(yīng)的,近期的C++技術(shù)圖書也更加注重在特色領(lǐng)域的發(fā)揮。下面我們分別從幾個角度來了解近期C++圖書的熱點(diǎn),并且展望未來一年中C++技術(shù)圖書中值得注意的選題。

  經(jīng)典著作全面翻新

  這一兩年,一大批經(jīng)典技術(shù)圖書都經(jīng)歷了一次更新?lián)Q代,C++經(jīng)典圖書自然也不例外。第一個要說的就是Scott Meyers的《Effective C++》。這本書在1991年推出第一版,1998年推出第二版,在C++技術(shù)的傳播與教育方面居功至偉。包括我在內(nèi)的很多C++開發(fā)者都是通過閱讀這本書而尋得升堂入室的門徑。今年,《Effective C++》推出了第三版。這一版決不是第二版的簡單修訂,而是根據(jù)八年來C++所發(fā)生的巨大變化而進(jìn)行的一次全面改寫,幾乎是一本全新的書。其內(nèi)容涵蓋了舊版的精髓,也體現(xiàn)了諸如Boost庫、TR1標(biāo)準(zhǔn)等C++領(lǐng)域最新成果。如果說這本書的內(nèi)容發(fā)生了重大的變化,那么可以說不變的是這本書的地位——它仍然是每個嚴(yán)肅的C++開發(fā)者都應(yīng)當(dāng)反復(fù)閱讀領(lǐng)悟的重要作品。

  另一本翻新的著作是Stan Lippman的《C++ Primer》第四版。這本書的歷史地位無需贅言,迄今為止仍然是對C++介紹最全面的一本著作。第四版進(jìn)行了大幅度的刪修,篇幅減少近300頁,而內(nèi)容也大幅修改,以反映C++近年來的變化。對于希望系統(tǒng)學(xué)習(xí)C++的新手,或者希望擁有一本手冊以備查的老手來說,這本書的地位是不可取代的。

  有傳言說GoF打算翻新“Design Patterns”。該書第一版于1995年初版,此后十年,設(shè)計模式領(lǐng)域的理論探討和實踐基本上仍然圍繞這本書中的觀點(diǎn)和內(nèi)容進(jìn)行,少有突破。已經(jīng)有不少開發(fā)者對于這種情況表示了不滿,認(rèn)為初版中的一些觀點(diǎn)已經(jīng)過時,甚至對現(xiàn)在的一些技術(shù)應(yīng)用構(gòu)成思想上的羈絆。但是此書實在聲名太盛,真正的突破恐怕只能由GoF自己完成,因此本書新版如果推出,必將是技術(shù)界內(nèi)的一樁大事。不過傳言亦稱,GoF對于新版“Design Patterns”是否繼續(xù)使用C++作為示范語言存在分歧。不管怎樣,相信廣大讀者會對這本書抱有高度的關(guān)注。

  新銳佳作劍走偏鋒

  近年來,一批C++技術(shù)新銳崛起,給我們帶來了一批令人耳目一新的C++好書。在技術(shù)上,這批圖書偏重于C++模板風(fēng)格的巧妙運(yùn)用,富于智趣而對實踐的關(guān)注略顯不足。這類圖書以2001年Andrei Alexandrescu的《Modern C++ Design》為開端,之后又有《Boost Graphic Library》,《C++ Template Metap- rogramming》等。這些書一度以其新穎的思想和奇妙的技巧吸引了大家的目光,但由于缺乏實踐的支撐,逐漸褪去光環(huán)。這兩年,這類題材逐漸縮減。即使像Andrei Alexandrescu那樣的模板技術(shù)奇才,最近與Herb Sutter合作的《C++ Coding Standard》也并沒有過多地炫耀模板技巧,而是中規(guī)中矩地對C++編碼的經(jīng)驗做了貼近實踐的總結(jié)。這本書與Steve McConnell的經(jīng)典著作《Code Complete II》相配合,應(yīng)成為每一位C++開發(fā)者必讀的基本著作,將幫助讀者奠定堅實的編碼和微觀設(shè)計技術(shù)基礎(chǔ)。

  Boost是C++社群盡人皆知的“準(zhǔn)標(biāo)準(zhǔn)庫”,其中大量的組件已經(jīng)基本成熟并可供應(yīng)用。最近Bjorn Karlsson撰寫的《Beyond C++ Standard Library: An Introduction to Boost》是市面上第一本全面介紹Boost的著作。對于那些勇于吃螃蟹的C++先鋒開發(fā)者來說,這本書無疑是值得一讀的。不過在C++社群,對Boost庫還存在爭議。大部分C++實踐者比較保守,這本書對他們的吸引力恐怕將打折扣。

  Stephen Dewhurst是近年來比較活躍的新銳作家,他的兩本書《C++ Gotchas》和《C++ Common Knowledge》,單獨(dú)來看都是值得一讀的好書,可惜現(xiàn)在不是1995年,而是2005年,Scott Meyers、Herb Sutter煌煌巨著已然危急九五,Dewhurst只好自嘆施手略慢。不過我們希望他能夠再接再厲,找到創(chuàng)新點(diǎn),突破前人。

  相比之下,中文版即將問世的《Imperfect C++》就比較有新意,很值得一讀,以至于Bjarne Stroustrup都相當(dāng)贊賞。這位C++之父表示,如果不是因為該書太厚,他一定會將其納入著名的“C++ in Depth”系列。這在事實上肯定了本書的高質(zhì)量。我個人認(rèn)為,這本書是一年來出版的最值得精讀的C++著作,其中對于不少實踐中經(jīng)常遇到的難題進(jìn)行了深入的分析,給出了實實在在的解決方案。作者M(jìn)att Wilson憑借此書以及其系列模板程序庫崛起為C++社群中引人注目的新星,實在可喜可賀。

  關(guān)鍵領(lǐng)域期待佳作

  未來C++將主要在系統(tǒng)級復(fù)雜應(yīng)用程序、高性能、實時中間件及嵌入式領(lǐng)域施展,同時,隨著多核CPU的的普及和網(wǎng)絡(luò)安全重要性的空前提升,在并發(fā)程序設(shè)計和安全程序設(shè)計方面,C++也將獲得新的應(yīng)用空間。因此,在這些具體領(lǐng)域的C++著作更值得關(guān)注。

  1996年,John Lakos出版了《Large Scale C++》一書,該書與 “C++ In Depth”系列中的《Applied C++》一樣,是C++著作中極少數(shù)實戰(zhàn)派佳作,其中字字句句都來自于作者豐富的實際項目經(jīng)驗,對于一線的C++開發(fā)者來說是特別值得咀嚼體味的好書?上н@本書在國內(nèi)一直沒有得到應(yīng)有的重視,這可能跟本書中譯本出版時間過晚,且翻譯質(zhì)量不佳有關(guān)。好消息是,John Lakos即將在2006年推出其新作《Scalable C++》。我本人將此書視為未來一年中C++領(lǐng)域最令人期待的作品。這一方面是出于我對于作者的高度信任,另一方面是由于該書題材的極端重要性。該書副標(biāo)題為“基于組件的軟件開發(fā)”,而“組件化”這一主題,是C++十幾年來的一塊心病。在未來,無論C++應(yīng)用在何種場合,“組件化”是必不可少的基本要求。而COM技術(shù)雖然在組件化方面比較成熟,但是不具有可移植性,而且對于無須跨語言的C++開發(fā)項目來說過于復(fù)雜。因此,C++社群需要自己探討經(jīng)濟(jì)適用的組件化實用方案。John Lakos本人從事大型復(fù)雜應(yīng)用軟件開發(fā)多年,在這方面的經(jīng)驗無人能敵,由他來對這個主題進(jìn)行深入剖析,并且給出實際解決方案,毫無疑問是再合適不過的了。雖然這本書還在寫作過程中,但是我們有理由對其抱有充分信心。在此我也呼吁本書中文版未來的出版者認(rèn)真對待此書的翻譯制作,不要重蹈《Large Scale C++》的覆轍。

  說到COM,自從.NET推出,COM的書幾乎一夜之間絕了種,幾乎無人再勇于炒這碗冷飯。但這次出版界的茶實在涼得快了些,事實上直到今天,COM開發(fā)仍然是Windows平臺上應(yīng)用開發(fā)的一個重要方向。特別是在前兩年微軟Windows核心向.NET全面轉(zhuǎn)型的左傾冒險主義的嘗試以失敗告終后,在可見的未來,Windows操作系統(tǒng)將繼續(xù)構(gòu)建在C/C++和COM的基礎(chǔ)之上——這就確保了COM在Windows平臺上的重要地位將至少延續(xù)到2011年之后。因此,COM、ATL和WTL開發(fā)技術(shù)在未來幾年都還是頗具意義的出版題材。特別是近年來ATL/WTL的發(fā)展之快,相比之下,技術(shù)出版在這方面出現(xiàn)了一個空白點(diǎn)。此外,開源的Mozilla項目提供了一個可移植到所有主流平臺的COM實現(xiàn),這對于C++開發(fā)者來說是很具有吸引力的,卻一直沒有出版資源的關(guān)注,令人遺憾。

  C++近年來的一個應(yīng)用熱點(diǎn)是復(fù)雜網(wǎng)絡(luò)應(yīng)用的開發(fā),ACE在這方面已經(jīng)成為越來越流行的選擇,而ICE作為目前可用的最先進(jìn)的高性能中間件產(chǎn)品,崛起的勢頭很猛。這兩方面目前都有一些好書,特別是最近出版的《ACE Programmer’s Guide》,對于ACE編程入門很有好處。而ICE 1.3版的手冊早已由馬維達(dá)先生譯成中文,可在網(wǎng)上自由獲得。不過坦率地說,這方面的圖書還遠(yuǎn)遠(yuǎn)不夠,ACE原作者Doug Schmidt所著的兩卷本《C++ Network Programming》可讀性和實用性不足,而ICE手冊深度和廣度都顯不夠,我們期望這方面能有更好的著作出現(xiàn)。

  隨著多核CPU的普及,并發(fā)程序設(shè)計將成為C++技術(shù)上的一個新熱點(diǎn)。這方面目前的好書幾乎沒有,不知道這個巨大的空白將由何方神圣來填補(bǔ)。

  同樣,網(wǎng)絡(luò)安全重要性的空前提升對C++開發(fā)提出了很多新的具體要求,很多C++老手面臨一個“再教育”的問題。這方面Microsoft Press的《Writing Safe Code》,O’Reilly的《Secure Programming Cookbook for C and C++》,以及最近Pearson出版的《Secure Coding in C and C++》都是不錯的參考。不過我發(fā)現(xiàn)目前C++開發(fā)者并未普遍重視這個問題。也許管理層還需要更加“血淋淋的教訓(xùn)”來刺激一下,才會有革新的動力。

  在嵌入式方面,由于應(yīng)用復(fù)雜度的逐漸提升和Symbian OS/Windows CE等面向消費(fèi)的高級嵌入式操作系統(tǒng)的廣泛應(yīng)用,給C++提供了一個廣闊的發(fā)揮空間?上г谶@方面,真正堪稱經(jīng)典的好書還是鳳毛麟角,看來還需要時間和經(jīng)驗的積淀。不過有一本書特別值得一提,北航出版社去年引進(jìn)的《嵌入式系統(tǒng)的微模塊化設(shè)計》被國際嵌入式開發(fā)領(lǐng)域公推為數(shù)年來年度最重要的嵌入式軟件開發(fā)技術(shù)著作,其中含有一些意義深遠(yuǎn)的創(chuàng)新思想,非嵌入式開發(fā)者也有必要了解此書的大致思想。

  總結(jié)

  程序設(shè)計語言數(shù)以千計,能夠廣為流傳的不過幾十種,而能夠風(fēng)光20年的更是屈指可數(shù)。Fortran已經(jīng)問世50年,仍然是科學(xué)計算首選,C語言輝煌30年,至今老當(dāng)益壯。C++順利地度過了自己的20歲生日,相信屬于它的日子還很長很長。作為C++開發(fā)者,我們也希望看到優(yōu)秀的C++技術(shù)圖書不斷涌現(xiàn)。歷史證明,C++領(lǐng)域內(nèi)的技術(shù)創(chuàng)新,不但對于C++開發(fā)具有重大意義,而且對于整個軟件開發(fā)技術(shù)都具有重大意義。我們有理由相信,在下一個十年里,以高水平C++技術(shù)專家和作家為代表的C++技術(shù)社群能夠繼續(xù)為軟件技術(shù)做出突出的貢獻(xiàn)。

  相關(guān)文章:Java2十大經(jīng)典中文圖書推薦

302 Found

302 Found


Powered by Tengine
tengine