C++圖書熱點觀察[轉]

文 CSDN 孟巖  轉載自2005年第11期《程序員》雜誌

不知不覺,C++迎來了自己20歲的生日。20年來,C++從一個實驗室語言成長爲軟件產業一流主導語言,在實際應用中取得了巨大的成功,同時也催生了大量爲技術人員耳熟能詳的經典技術著作,比如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++領域的一些經典圖書不但對於C++語言的發展起到了巨大的推動作用,而且對於其他相關技術領域也起到了指導和促進作用。例如Scott Meyers的“Effective系列”,開闢了技術圖書寫作的新風格,而“Design Patterns”的影響,更是遠遠超出C++的範疇。這些經典的好書,已經成爲C++輝煌歷史的一部分而被人們銘記。

20年後的今天,軟件產業的規模和環境已經發生了深刻的變化。如今企業級應用整合與開發的任務主要由JavaC#Visual Basic以及各種新型動態語言來承擔,而C++的應用場合也有所收縮,不再是像1990年代中期那樣從上到下包打天下,而是呈現出鮮明的應用領域特色。相應的,近期的C++技術圖書也更加註重在特色領域的發揮。下面我們分別從幾個角度來了解近期C++圖書的熱點,並且展望未來一年中C++技術圖書中值得注意的選題。

  

經典著作全面翻新

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

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

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

 

新銳佳作劍走偏鋒

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

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

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

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

  

關鍵領域期待佳作

未來C++將主要在系統級複雜應用程序、高性能、實時中間件及嵌入式領域施展,同時,隨着多核CPU的的普及和網絡安全重要性的空前提升,在併發程序設計和安全程序設計方面,C++也將獲得新的應用空間。因此,在這些具體領域的C++著作更值得關注。

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

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

C++近年來的一個應用熱點是複雜網絡應用的開發,ACE在這方面已經成爲越來越流行的選擇,而ICE作爲目前可用的最先進的高性能中間件產品,崛起的勢頭很猛。這兩方面目前都有一些好書,特別是最近出版的《ACE Programmers Guide》,對於ACE編程入門很有好處。而ICE 1.3版的手冊早已由馬維達先生譯成中文,可在網上自由獲得。不過坦率地說,這方面的圖書還遠遠不夠,ACE原作者Doug Schmidt所著的兩卷本《C++ Network Programming》可讀性和實用性不足,而ICE手冊深度和廣度都顯不夠,我們期望這方面能有更好的著作出現。

隨着多核CPU的普及,併發程序設計將成爲C++技術上的一個新熱點。這方面目前的好書幾乎沒有,不知道這個巨大的空白將由何方神聖來填補。

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

在嵌入式方面,由於應用複雜度的逐漸提升和Symbian OS/Windows CE等面向消費的高級嵌入式操作系統的廣泛應用,給C++提供了一個廣闊的發揮空間。可惜在這方面,真正堪稱經典的好書還是鳳毛麟角,看來還需要時間和經驗的積澱。不過有一本書特別值得一提,北航出版社去年引進的《嵌入式系統的微模塊化設計》被國際嵌入式開發領域公推爲數年來年度最重要的嵌入式軟件開發技術著作,其中含有一些意義深遠的創新思想,非嵌入式開發者也有必要了解此書的大致思想。

  

總結

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章