kingofark的第1個五評計劃 - 五評C++(1) (轉)

worldblog發表於2007-12-09
kingofark的第1個五評計劃 - 五評C++(1) (轉)[@more@]

[宣告]:本文由kingofark創作。本文中的所有內容僅代表kingofark個人的觀點,與任何其他個人或團體無關。任何人或團體都可以複製、傳播本文,但需附上完整的本宣告。kingofark對於不同意上述各點或不履行上述各要求的人或團體的言行不負任何責任。特此宣告。

 :namespace prefix = o ns = "urn:schemas--com::office" />

 

kingofark的第1個“五評計劃”——五評C++(1

 

 

[kingofark的話]

 

在這個領域內,恐怕是沒有人不知道C++的了。C++的流行使得出版商長期處於亢奮的狂喜之中——這也就是為什麼我覺得實在有必要推薦幾本C++的書,為大家的擇書助上一臂之力。

 

 

[一]:《C++思想》,Bruce Eckel 著,譯,機械工業出版社

 

[推薦度]:-1

[推薦理由]:

原則上來說,我還不算是容易浮躁的人,但是當我慕名拿到了這本機械工業的《C++程式設計思想》的時候,我看到了:

“透過強迫在之前必須宣告,……”P32

“按位和與按成員const”P138

“7.5 可變的(volatile)”P140 [關鍵字也要翻譯嗎?難道”double a;”應該翻譯成“雙 字母表的第一個字母分號”?]

“因為大多數使用‘helper’而不是設定所有功能性內建。”P180 [helper?內痔?外痔?]

“因為有一個使用單一int引數的建構函式,int自動轉換為number,但這要在正確的條件下。”P229 [這是中文的句式嗎?我真孤陋寡聞。]

“new的反面是delete表示式”P236 [哦,原來表示式還有“反面”。我真孤陋寡聞。]

“所以我們幾乎不會看到在這些類中存在虛擬函式,它們的重用是以模板方式而非繼承方式。”P331

“oldmem必須指向零(以分配新區)”P334

“所以在用free()釋放儲存區時,getmem()必須將指標向後退由cntr佔用的儲存空間數目。”P334

“其中有一些重要的其他類”P340

“2)我們需要向上對映到兩個基類上嗎?(當然,在我們有兩個以上的基類被應用。)”P354

“要終止相距較遠的異常,但是由於異常可能由很多地點產生,所以對於一個大型,從異常處跳轉到異常處理器再跳轉返回,這在概念上是十分困難的。”P363

“利用這種方法,每個分配就變成了原子的,像一個,並且如果失敗,那麼已分配資源的物件也被正確的清除。”P372-373

“但是,在這種情況下,被迫增加的程式碼必須是最小限度的。”P377 [程式碼是最小限度的?我孤陋寡聞。]

“異常處理系統會關注所有的儲存。”P379

“無論什麼時候用型別對映,都是在打破型別系統”P398

…… …… …… ……

……我終於經不住誘惑浮躁了一回,將書狠狠的置向地面……從那以後,每當我用輸入法輸入“C++程式設計思想”的時候,輸入法總是頑固的給出“C++變成死相”幾個文字,給我平添幾分揪心的詭異(但似乎這比“死一家家變成死相”還稍微吉利一些)……聽聞這本書賣得好的訊息,我卻很莫名其妙的憶起魯迅先生在《狂人日記》裡的那句“救救孩子”。

 

 

[二]:《C++物件導向高效程式設計》,Kayshav Dattatri著,瀟湘工作室 譯,人民郵電出版社

 

[推薦度]:4.9

 

[推薦理由]:

 

英文原版書名:《C++ Effective -Oriented Software Construction》。

這是一本在國內被忽視了的優秀的C++/書籍。作者kayshav Dattatri用通俗易懂的語言,以由淺入深的組織方式,將C++語言的OOP方法和運用C++編寫高效程式碼的方法娓娓道來。

本書的一大特色就是擅用橫向比較的方法來說明問題。對於一個操作、演算法,甚至是語言機制,作者或以不同的C++實現方法來比較其功用,或以不同的語言實現來比較其在上的優劣,處處無不體現“高效”二字。比如,光是在講到“引數傳遞”一節,作者就給出了

void X::f(T arg),

void X::f(const T object),

void X::f(T& arg),

void X::f(const T& arg),

void X::f(T* argp)

五種方式,對其逐個分析,交叉比較孰優孰劣,並說明各個方式的用途;再比如,在討論異常模型的時候,作者將EIFFEL中的異常模型與C++中的異常模型進行比較,並且專門用了一個小節的篇幅(第10.5節“EIFFEL和C++異常模型的優缺點”)來討論這個問題;等等。作者在文中處處考慮、效率,卻又不失清晰的組織結構,其雄厚的實力和在領域內積累了多年的流露於字裡行間。

本書的另一大特色,就是作者精心為讀者提煉的要點。在全書的敘述中,一旦講完了一個重要的知識,作者就會用一兩句話總結成一到兩個要點,核心的知識和多年積累的經驗一目瞭然、清清楚楚。不但如此,在每一章的末尾,作者又再次給出本章內容的所有要點,以便於讀者查閱。

全書在OOP的精神指引下,以“高效”二字當頭,令人信服的闡述了使用C++進行高效程式設計的方法。

在這裡,筆者也不再多說了。就讓我們一起看看Erich Gamma博士(大名鼎鼎的《設計模式》的作者之一)在此書的序言中是怎麼說的吧:

 

“Kayshav Dattatri在這方面(指在程式效能、效率方面)具有極其豐富的經驗。”

本書所有的內容都是經驗之談。……Kayshav不僅僅滿足於大體上解釋物件導向的概念以及理論介紹C++語言功能部件;他還講述了繼承、混合類、模板類和異常這些方面的實踐經驗,探討了模板例項化、共享庫、執行緒性和許多其他問題。”

“本書從零開始介紹C++和麵向物件程式設計。然而,我確信,有經驗的C++程式設計人員將和新手一樣,能夠從本書中得到新的知識。”

 

最後談談本書的翻譯。本書由瀟湘工作室翻譯。筆者認為,在譯作水平參差不齊的書籍市場中,本書的翻譯可算是中等偏上。雖然我們可以從書中發現一些譯意不當的地方,但我們也完全可以感受到譯者們為了譯文的順暢所作的許多努力。另一方面,本書紮實、豐厚的內容也確實反過來使譯者少有敗壞之機。倒是書中存在的一些明顯的印刷、排版方面的錯誤使得本書最終沒能得到5分。這不能不說是一個小小的遺憾。

 

 

[三]:《Essential C++中文版》,Stanley B.Lippman 著,侯捷 譯,華中科技大學出版社

 

[推薦度]:5

 

[推薦理由]:

 

光憑作者、譯者的大名,本書就毫無疑問是一本世界級的C++上乘之作。本書作者Stanley B. Lippman,現在工作。他曾是夢工廠電影動畫公司的核心技術小組成員。加入夢工廠之前,Stan 是華德迪士尼電影動畫公司的主要工程師。更早之前他在貝爾實驗室領導過 cfront 3.0, 2.1 的編譯器開發小組。他是 Bjarne Stroustrup 所領導的貝爾實驗室基礎專案中的一員。Stan 是C++ Primer(三個版次)及Ins the C++ Object Model 的作者,這些極為成功的書籍由 Addison-Wesley 出版。他也是C++ Gems 的編輯(此書由 Cambridge University Press 出版)。他的工作應用在多部電影上頭,包括 Hunchback of Notre Dame Fantasia 2000;譯者侯捷,是資訊教育工作者,寫譯書籍,主筆專欄,培訓業界人員,並於元智大學開課。進入教育領域前,他曾分別擔任工研院機械所和電通所副研究員,分別研發 CAD/CAM 和 多系統。侯捷是《深入淺出MFC 》和《多型與虛擬》兩本書的作者,也是C++ Primer 3/e、Essential C++Inside the C++ Object Model 繁體中文版譯者。他的相關書籍和散文,甚獲好評。

在這裡,我就轉引侯捷先生精彩的譯序來說明問題:

 

“Stanley B. Lippman 所著的 C++ Primer 雄踞書壇歷久不衰,堪稱 C++ 最佳教本。但是走過 10 個年頭之後,繼 1237 頁的 C++ Primer 第三版,Lippman 又返樸歸真地寫了這本 276 頁的Essential C++。有了滿漢全席,為何還眷顧清粥小菜?完成了偉大的巨著,何必回頭再寫這麼一本輕薄短小的初學者用書呢?

所有知道 Lippman 和 C++ Primer 的人,臉上都浮現相同的問號。

輕薄短小並不是判斷適合初學與否的依據。Lippman 寫過Inside the C++ Object Model,280 頁小開本,崩掉多少C++ 老手的牙齒。本書之所以號稱適合初學者,不在於輕薄短小,在於素材的選擇與組織的安排。

關於 Lippman 重作馮婦的故事,他自己在前言(p.ix)中有詳細的介紹。他的轉折,他的選擇,他的職責,乃至於這本書的綱要和組織,前言中都有詳細的交待。這方面我不必再置一詞。

身為C++ Primer (3/e) 的譯者,以及多本進階書籍的作者,我必須努力說服自己,才能心甘情願地將精力與時間用來重複過去的足跡。然而,如果連 Lippman 都願意為初學者再鋪一條紅地毯,我也願意為初學者停留一下我的腳步。

我是一名資訊教育工作者,寫譯書籍,培訓業界人員,主持網站回應讀者與學員,並於大學開課。我真正第一線面對大量學習者。藉此機會我要表達的是,所謂「初學者」實在是個過於籠統的名詞與分類(呃,談得上分類嗎)。一般所謂「初學者」,多半想像是大一或專一新生程度。其實 C++ 語言存在各種「初學者」,有 13 歲的,有 31 歲的(當然也有 41 歲的)。只要是第一次接觸這個語言,就是這個語言的初學者,他可能才初次接觸,可能浸淫Pascal/C 語言 10 年之久,或可能已有 Smalltalk/ 三年經驗。有人連電腦基本概念都沒有,有人已經是經驗豐富的軟體工程師。這些人面對 C++,學習速度、教材需求、各人領悟,相同嗎?

大不同矣!

每個人都以自己的方式來詮釋「初學者」這個字眼,並不經意地反映出自己的足跡。初學者有很多很多種,「初學者」一詞卻無法反映他們的真實狀態。

固然,輕薄短小的書籍乍見之下讓所有讀者心情輕鬆,但如果捨棄太多應該深入的地方不談,也難免令人行止失據,進退兩難。這本小書可以是你的起點,但絕不能夠是你的終站。

做為一本優秀教本,輕薄短小不是重點,素材的選擇與組織的安排,表達的精準與閱讀的順暢,才是重點。

做為一個好的學習者,背景不是重點,重要的是,你是否具備正確的學習態度。起步固然可從輕鬆小品開始,但如果碰上大部頭巨著就退避三舍逃之 ,面對任何技術只求速食速成,學語言卻從來不寫程式,那就絕對沒有成為高手乃至專家的一天。

有些人的學習,自練一身銅筋鐵骨,可以在熱帶叢林中披荊斬棘,在莽莽草原中追奔逐北。有些人的學習,既未習慣大部頭書,也未習慣嚴謹格調,更未習慣自修勤學,是溫室裡的一朵花,沒有自立自強的本錢。

章節的安排,篇幅的份量,的保留,習題和解答,網上的服務,都使這本小書成為自修妙品,或C++ 專業課程的適當教材。我誠摯希望《Essential C++ 中文版》的完成,幫助更多人從中獲得 C++ 的學習樂趣 - 噢,是的,物件導向程式語言可以帶給你很多樂趣,我不騙你。”

 

 

[四]:《The C++ Programming Language SE》,Bjarne Stroupstrup 著,高等教育出版社

 

[推薦度]:5

 

[推薦理由]:

 

其實理由只有一個就夠了:本書的作者Bjarne Stroupstrup是C++的設計者和實現者。

作者用學究式的文筆,以一個研究者的眼光,系統、嚴謹的描述了C++語言的方方面面。本書與Stanley B.Lippman的《C++ Primer》並稱為C++語言的兩大權威參考書。

因為是影印版,所以也全沒有翻譯帶來的任何形式上的損耗,原汁原味。

我想這就夠了,足夠了。

 

[五]:《Effective C++中文版》tt Meyers 著,侯捷 譯,華中科技大學出版社

 

[推薦度]:5

 

[推薦理由]:

 

轉載:孟巖《引介:一本絕妙好書》

 

“您手上這本書,是世界頂級C++大師Scott Meyers成名之作的第二版。其第一版誕生於1991年。在國際上,本書所引起的反響之大,波及整個計算機技術出版領域,餘音至今未絕。幾乎在所有C++書籍的推薦名單上,本書都會位於前三名。作者高超的技術把握力,獨特的視角 詼諧輕鬆的寫作風格 獨具匠心的內容組織,都受到極大的推崇和仿效。甚至連本書簡潔明快的命名風格,也有著一種特殊的號召力,我可以輕易列舉出一大堆類似名字,比如Meyers本人的More Effective C++和Effective STL,Don Box的Effective COM,Stan Lippman主編的Efficient C++系列,Herb Sutter的Exceptional C++等等。要知道,這可不是出版社的有意安排,而且上面這些作者,同樣是各自領域裡的絕頂大師,決非人云亦云 欺世盜名之輩。這種奇特的現象,只能解釋為人們對這本書衷心的讚美和推崇。

然而這樣一本擲地有聲的C++世界名著,不僅遲遲未能出版簡體中文版,而且在國內其聲譽似乎也並不顯赫。可以說在一年之前,甚至很少有C++的學習者聽說過這本書,這實在是一種遺憾。今天,在很多人的辛勤努力之下,這本書終於能夠展現在我們的面前,對於真正的C++程式設計師來說,這確實是一件值得彈冠相慶的事。

我是一名普通的C++愛好者,因為機緣巧合,有幸叄與了這本書的繁簡轉譯工作,這使我能夠比較早地看到本書的原版和繁體中文版。在這裡我必須表達對本書中文譯者 臺灣著名技術作家侯捷先生的敬意和感謝,因為在我看來,這本書的中文版在質量上較其英文版兄長分毫不差,任何人都知道,達到這一點是多麼的困難。侯先生以其深厚的技術功底 卓越的語言能力和嚴謹細緻的治學態度,為我們跨越了語言隔閡所帶來的理解障礙,完整而生動地將原書的內容與精神表達無遺,更令人欽佩的是,中文版的行文風格與原文也達到了高度的統一,可謂神形兼備,實在令人讚歎 因此我非常樂意向大家推薦這本書,相信它會在帶給您帶給你技術享受的同時,也帶給您閱讀的享受。”

 

我想我也沒辦法再多說什麼了,我無法找到比“完美”更好的詞來形容這本書。這裡大家又一次看到了一個事實:優秀原作+優秀譯者=優秀中文書籍。這勿用我多說,閉嘴。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-990188/,如需轉載,請註明出處,否則將追究法律責任。

相關文章