經過了大約兩個月的時間,終於是看完了C++primer的大部分內容(最後一章:特殊工具與技術沒有看)。看完之後覺得自己有責任從自己的角度,提出對於這本書的一些不負責任的看法。
第一,本書的作者是vc++的架構師,所以這本書從編譯器的角度,非常詳細的討論了許多細節問題,如果你將來編程的時候遇到問題,那麼很可能在這本書中就能找到答案。我不禁感歎:C++的內容是如此的龐雜,而作者卻能不慌不忙,慢慢將它們仔細地展示給讀者,實在是不容易。另外,本書作者還寫了一本《深度探索C++物件模型》,對於C++的底層機製做出了深入的討論。
第二,我也不得不指出,這並不是一本“入門書”。因為全書講的非常細緻,節奏很慢,而且有時候將一些重要的內容分散到了各章節(比如:類、STL庫),所以你很難通過短時間的學習這本書,能編出基本的C++程式(或者帶類的C語言程式)。我之前因為要使用OpenCV,被迫學習了一段時間C++,開始使用的是這本書,但是堅持了幾個禮拜之後,是在受不了它的速度了,無奈之下換成了譚浩強老師的那本(網上可以搜到的PPT),然後感覺非常爽:因為我終於能照貓畫虎的寫出C++程式了!雖然現在看來,當時寫的程式問題很多,但是我覺得,學習編程就應該是這樣,先把程式寫出來,有什麼問題再修改。
第三,在仔細閱讀全書(包括習題解答)的過程中,中譯版的翻譯者指出了全書的很多錯誤(印象中應該有20次開外),這一下拉低了我對這本書的印象分。因為它並不是第一版,已經出到第4版了,錯誤這麼多實在是不應該。(也可能是因為每一版的改動都很大。)還有就是本書的隨書代碼很多,但是並沒有對這些代碼給出詳盡的說明,這讓我有時候很頭疼,不知如何使用。
第四,前面已經說過,全書講的都是細節問題,是不是應該不通讀此書,而是遇到問題了再翻開書找答案呢?我覺得不是,因為我通常這樣找都找不到,還不如直接在網上找。但是如果你看過一遍之後,有個大概印象了,找起來就輕鬆多了。但是有時候,對於一些問題,感覺在書上也不容易找到,總體上感覺這本書不太適合當做速查手冊來使用。
第五,我覺得全書有幾處不太合理的地方:第一,就是不應該在很早的時候(沒有完整的講如何定義類時)就讓我們使用類:這樣程式是沒法啟動並執行。就是你下載了定義類的標頭檔,你也是看不懂的。編程的關鍵,就是先要讓程式能夠運行。應該更加集中的講述類的定義與使用。第二,書中有一個例子:文本搜尋,那個例子實在是太難了,我覺得應該換一個簡單一點的例子。
總而言之,如果你急著學C++,那麼不要使用這本書,挑一本300頁左右的,比如《Accelerated C++》;如果你已經有了一些基礎,那麼一定要看這本書,它能夯實你的基礎,讓你對C++的全部內容有一個概覽。
基本的觀點就是這些。隨便感歎幾句:C++的內容實在是太多了。要想學個大概都很吃力。當你學個大概之後,容易放棄了“康庄大道”:健壯、高效的編程,合理的架構程式,而去鑽研一些奇技淫巧:比如模板函數與非模板函數之間發生重載之類的。C++的博大精深,導致這些技巧性的東西永遠是學不完的,與其碰到了特定問題,提示才能解決,不如更好的架構程式,寫出一些傻瓜都能看懂的程式。
最後感謝廣大CSDN論壇上的網友,書裡面一些我看不懂的問題我會發到論壇上,大部分都得到了網友們的協助。