《The C++ Programming Language》這本書真的適合初學者嗎?

大二的時候開始看C primer plus ,還有一本C與指針, 看完這兩本書加敲代碼,已經過去6個月了,前幾天買了本The C++ programing language ,感覺每一章的習題大部分都不會做,而且基本語法講的很少,一上來就直接容器,模版什麼的,都快看哭了。。。
課本中的例子和習題,基本都要邊看答案,邊查標準庫才能勉強看懂,我是不是買錯書了?
(PS:有一定的數據結構,演算法基礎,C基礎)


這本書代表了 C++ 的政治正確。
作為 C++ 之父,Bjarne 得一碗水端平,啥東西都不能省略,否則別人會攻擊他說「你看C++他爹的書里都沒有講XXX,肯定沒什麼用」。這本書其實不是給C++初學者看的,更像是C++之父寫給C++專家們的教學大綱/學習提綱。
甚至,為了彌補,這本書會著重講其他教材里通常省略的不常用的C++知識點。其實,Bjarne 不是靠寫 C++ 代碼吃飯,他覺得特別有用的東西你不一定在工作中能用上。
這本書相當權威,其行文有點像法律文書,要讓各路專家都挑不出毛病來。以 Bjarne 的教主地位,他認為你讀完這本「聖經」之後不需要讀更高級的C++書,別的書的內容都是從這本書闡發的(Effective C++ 的某個條款只對應這本書代碼中的半行注釋)。對初學者來說,要從這種滴水不漏微言大義的文字中讀出對自己有用的內容,恐怕是難了點兒。

引用裘宗燕老師第三版的譯序:

當然,這本書也不是沒有缺陷的。由於作者有著極其豐富的實踐經驗,因此,當他想要論述一個問題、提出一個觀點時,常會想到在自己長期實踐中最適合說明這個問題的事例,用幾句簡短的話引述有關的情況。由於作者對C++諳練有加,因此,在討論中有時會不知不覺地將某些並不顯然的東西當作不言自明的事情提出來。而對於許多初學者而言,這些都可能成為學習中的障礙。


隨手拍張圖

這是The C++ Programming Language中第七章的一頁,不要深究這段話是什麼意思,我拍這張圖是想說明,在The C++ Programming Language這本書中,講解一個東西的時候,經常把所有和這個東西相關的,包括後續章節的內容,都提一下。
當然你如果對這門語言的整體都比較熟悉的話,那無所謂;但是如果初學,看到這樣的寫法肯定是會崩潰的。


很可能不適合。因為初學者需要保持前進,而不是一上來就高山仰止。一「仰止」就動不了了,高山再高也等於零。

我說「很可能」是因為人的基礎不同,性格和耐心程度不同,所以也會有一部分人偏愛字典式的參考書。

下面來列一下什麼樣的技術書適合初學者,這些標準並不是絕對的,只是從個人經驗的角度來說:

  • 有取捨,不是所有的概念都要寫,也不是講了的概念一定要一次性講透,寫書的人講透也沒用,因為看書的接受不了,哪怕理解字面意思也「體認」不了,因為重要的東西都是實際操作中學得的,書本只是一個引子,看下一條。
  • 重操作,提供有實際意義的例子,從最簡單Hello World,到GUI,到3D渲染庫的核心,把語法,概念,調用放到十分具體的場景里,用流暢的行文把圖表,代碼段,文字銜接起來,讀起來有一種流暢感,連帶感,整體感,所有的東西都可以自己在機器上驗證出來。
  • 重概念,太多的書把全篇注意力放在語法上,熟悉語法的最佳方法不是把它們列在書本上,而是放在例子里,讓學習者重複這些例子,讓編譯器告訴他那裡做錯了,沒有實際操作,是不可能真正熟悉語法的。但是語法並不是語言學習的關鍵障礙,概念才是,尤其是抽象的新概念,從文字看到一個名詞,彷彿明白它是什麼意思,如果不自己做功課,往往會在後來發現離起初的理解相距甚遠,因為編程技術的概念都著某種精密性,每個概念都像一座海上的冰山,你起初看到的常常只是一角,所以必須從書本拓展開去,以理解概念本身為目標,作一番研究,或者通過實際嘗試例子,或者通過閱讀更多網上資料 https://www.quora.com/What-are-major-concepts-every-C++-programmer-should-know-about-the-language 掃除了概念的關鍵障礙以後,你會發現語法也變得親切,因為你能看到它們背後是什麼,而不是表面的字母組合。好的書會簡潔清晰地讓你明白一個概念究竟實際上是什麼。

如果一定要推薦,我會推薦Jumping into C++ https://www.amazon.cn/gp/product/0988927802/ref=as_li_ss_tl?ie=UTF8camp=536creative=3132creativeASIN=0988927802linkCode=as2tag=flamingtop-23 它未必是C++領域內最全面最深得書,但應該是最適合初學者的。其他的比如C++ Primer Plus也廣為人知,但個人覺得,還是太厚了一點。


我對TCPPPL的評價,與C++ Primer相同:
英文水平到什麼程度,學習C++ primer英文版比中文版好? - 劉縉的回答
區別是TCPPPL逼格更高,回答問題時不時來一句「Stroustrup在TCPPPL里說過...」效果不錯。


相對來講,我覺得C++ Primer更適合初學者


很適合,而且我覺得是靠譜的C++教程中最簡單的一本。我曾經一度把世面上所有知名的C++書籍都買了:Bjarne Stroustrup自己的《The C++》和《Evolution》、《Effective系列》、《Exceptional系列》、《Essential系列》、《Efficient》、《Modern》、《Primer》、《沉思錄》,還有侯捷系列,最後發現還是《The C++》最簡單最清楚

註:上述書籍有英文版的我看的都是英文版


顯然不適合。這種東西的價值主要在於作為法律條文,讓語言layer們在互相杠的時候引用。
=====
看這種東西,大概一定不如看大駱駝書的樂趣。


其實我很不推薦C++初學者從國外的C++教材入手的
個人建議找一本譚浩強以外的,比較靠譜的國內教材先入門,然後再去看國外的教材。我當時看的清華鄭莉老師的《C++ 語言程序設計》,配合學堂在線的課程,很容易就入門了。這個時候再去看《C++ Primer》之類的書就易懂多了
順便安利一下
課程信息 - C++ 程序設計


初學者看這本書撲街啊


歪個樓
其實如果是看C++老爹的書.
也是可以看這個的, 代碼全全, 後面還有GUI的例子.
" C++初學者的權威指南。"


最適合初學者的,應該還是譚浩強的那些教材。
然後上機實踐,把這些古書中的錯誤都找出來。

實踐最重要!實踐最重要!實踐最重要!
光看書是學不會游泳的。


剛看完這本書The c++ programming language,我是在看完c++ Primer英文版本後才看《The C++》。對於中英文版本,還是先看中文版本,有時間再看英文版本,一上來就看英文版本,除非你是在國外上的學,否則花的時間比較長和頭比較暈。
看完《The C++》收穫:如果你已經入門了可以不用看c++ Primer,直接看《The C++》,如果沒有入門,建議先看c++ Primer,再看《The C++》。我個人認為《The C++》是學c++必看的一本書,看完後提升了不只一個檔次,既然能讓你提升很多的書,難度肯定是有的。

兩本書的網上評論:
1、The c++ programming language----C++之父,技術權威,用詞深峻,思想深遠,c++百科全書代表,聖經。
2、c++ Primer----lippman---縱橫書市十數年,c++最佳教本,c++百科全書代表。


我在美國一所博雅學院教C++,一開始考慮拿這本書當教材,拿回來翻了幾頁就放棄了這個念頭。它更像是一本給專業人員寫的參考手冊,而不是給初學者娓娓道來的入門。

C++是一門龐雜的語言,從大部頭的專業書(比如The C++ Programming Language)看起完全沒有必要。一是你學了未必記得住;二是真正做project的時候需要的專業知識這本書里未必會有詳細答案。紙上得來終覺淺,絕知此事要躬行。想成為高手,必須從自己做項目開始。

如果你之前沒有c或者C++的基礎,可以看看網上的C++入門教程C++ Language,一兩個星期之內快速通關。如果真有空閑時間想讀書,《C++ Primer Plus》或者《C++Primer》都不錯,前者其實更友好一些,適合新手入門。


把題目拿出來我們來幫你解答


通過 c primer plus學習了C,為什麼不繼續通過c++ primer plus學習C++啊,看過c primer plus你應該能感覺到,是不是講得很詳細,不會出現你看不懂,不明白的地方,後面再看其他書提高,比如effective C++之類的。


非常支持這個說法, "如果有別的語言的使用經驗的話,這本書是最精鍊的。 "

本人當時看花了2月大概? 感覺好爽. 我也是c++初學者, 不過不是計算機初學者. 所以對於這個群體, 直接上這本正面肛沒錯.


我覺得看你如何定義初學者了。。。

如果是初學編程,那麼不適合。

如果是有其他語言的經驗,初學C++。那可以接受


這本書信息密度極大,一打眼說不定就錯過了某個重要的東西。


國內初學者不是看譚浩強的"紅皮書"嗎。
但是也bug滿滿啊,
上課時發現好多小錯誤。
還以為是自己弄錯了,
各種捉急抓瞎。
最後才發現是書本內容本身就出了錯誤。
白掉了這麼多頭髮。
法克。


這書本來就不是當教材的。。。。我記得誰說過,該書是給少數程序員提升功力用的。。。。


推薦閱讀:

TAG:程序員 | C編程語言 | 程序員修養 | C/C++ | 遊戲程序員 |