這本書是一本C++的經典之作,為了讓台灣的讀者不會有遺珠之憾,博碩文化特地引進本書,並將之編為《名家名著》系列第05號書籍。兩位作者的來頭都不小(請見作者簡介),而本書更是作者十年磨一劍的經典之作。
作者Koenig在C++的整個發展過程中具有舉足輕重的地位,是C++社群中最受尊敬的大師之一。他的文章以樸實而又精深的思想,準確而又權威的論述,,成為業界公認的『正統C++之聲』。本書命名為《Ruminations on C++》充分顯現出作者的自信和對這本書的珍愛。
本書命名為《C++沉思錄》,顧名思義,這是一本需要多加思考的書籍。作者在書中不斷強調『想一想』這件事,從思考的過程中,逐漸發展出具有實用性的C++程式。就內容來看,這本書其實也可以命名為《C++設計模式》、《Thinking in C++》、《C++及STL的設計和演化》。
這是一本進階書,對於初學C++的人來說並不適合。但對於已經學會C++語法,有過一小段撰寫C++程式經歷的人來說,本書有助於理解要怎樣才算是用對了C++來設計程式、為何C++要如此設計、STL當中的奧秘(例如iterator為何要如此設計)。
在本書的範例程式碼中,作者從簡單的問題開始設計起,逐步擴充解決更多的問題,考慮周詳,並且充分應用了C++特有的功能(相對於Java而言),特別是指標、運算子overload、friend等等的技術,這也是C++之所以複雜龐大的主因,然而既然選擇了C++作為開發工具,並因此付出了更多的學習時間,若不將之應用出來,就太可惜了。讓我們來看看大師是如何充分應用各種C++的技巧來解決問題。
這本書在C++的教學方式上有獨到之妙。作者循循善誘,娓娓道來,所舉的例子雖然小,但是非常典型,切中要害,讓你花費不大的精力就可以掌握相當多的東西。
這本書與坊間大部分的C++書籍都不一樣,那些書所關注的是語言本身,而不是如何運用這種語言。
作者對C++有著居高臨下的見識,對於C++的設計理念和實際應用有非常清晰的觀點。眾多紛繁複雜的C++特性如何組合運用,如何有效運作,什麼是主流,什麼是旁支,哪些是通用技術,哪些是特殊的技巧,在書中都有清晰明白的介紹。
識字最多的人,一定是最好的作家嗎?能演奏最多音符的人,一定是最好的音樂家嗎?那些瞭解最多語言特性的人就是最好的程式設計師(這真是荒謬)。程式設計工作中最困難的部分並不是去學習語言細節,而是理解問題的解決之道。
作者希望讀者能運用這些idea 去理解一堆拼湊的程式碼與一個抽象之間的差別──這種差別,就好像一堆辭藻與一篇文章、一堆音符與一支歌曲的差別一樣。C++支援好幾種不同的抽象形式,其中最著名的有抽象資料型態(ADT)、物件導向程式設計和泛型程式設計。
全書多次強調,C++最基本的設計理念是用類別來表示概念,C++解決複雜性的基本原則是抽象,物件導向思想是C++的手段之一,而不是全部等等。這些言論可以說是擲地有聲,可引導許多C++程式設計師走向正確的道路。
如果你是C++的高手,請試著讀讀本書,看看你能理解多少?多快理解?或許你會發現,原來要掌握博大精深的C++,並非麼簡單。
如果您只是個剛學會C++的程式設計師,相信看完本書後,一定會發出『原來C++可以這樣做啊!』、『原來程式庫是這樣寫的啊!』、『原來遇到問題要這樣解決啊!』等等數不完的讚嘆之聲!
大師的推薦
Koenig和Moo的《C++沉思錄》將會為許多人提供有用的幫助,對於C++究竟是什麼,以及能夠做些什麼,他們的先見之明,在這本書中隨處可見。——C++發明人 Bjarne Stroustrup
對我來說,這是我所有C++藏書中最好的一本。——《C & C++ Code Capsules》作者 Chuck Allison