c++學夾生了怎麼辦?

物理學博士在讀, 主業是Fortran+MPI。一直對計算機感興趣, C++ Primer一兩年前看過一兩遍, 中間也挑過一些章來看, 但是沒動手寫過太大的代碼。中間Python, Lisp, Haskell也都看過幾個月, 寫過一些習題。

現在的情況是,從頭到尾完整再看一遍Primer的話覺得很無聊, 很多都知道了。 但是明顯感覺自己功力太弱, 很多細節比如vtable, copy constructor又很模稜兩可, 需要看一些什麼書籍才能繼續往下深入呢?


C++怎麼學都是夾生的。所以別怕。


C++無論怎麼學絕對會夾生…

個人認為學C++最好方法是自己給自己搞一個小項目,然後去試圖實現自己計劃的功能,實現的時候撞見不會的就補,這樣幾個項目下來就積累了不少開發經驗,同時技術也能得到充分的鍛煉。我C++技術的進步就是伴隨三個項目同步進行的:

入門:Shell輪子

進階:GL輪子

再進階:STL輪子

造輪子絕對是C++的最佳練習題,連輪子都玩不好談創新絕對是偽命題。


只看書是不行的,這些東西需要多寫多看。

cpp很多東西,沒必要所有東西都弄得清清楚楚,因為你很多時候只用到它的一部分特性,別的很快就忘了。

先動起來,去寫代碼,去看別人的代碼,到哪不懂的時候再翻書Google,見的多了,慢慢就熟了。


深度探索c++對象模型


同學得夾生的表示你後面說那些應該去看effective c++,深度探索c++對象模型了。。c++ primer沒必要再重複看了吧,偶爾有啥發現不清楚了去翻就得了。


說實話vtable其實也是個很toy的東西,面試官都會問的問題,能有多深奧呢。

看C++內存布局這本書,同時結合llvm的IR實踐。

你是學物理的,可以看下STL祖師爺寫的

Elements Of Programming

這本書有北大裘老師翻譯的中文版,不過我不推薦。

沒事還可以翻一下iso cpp標準pdf文檔。。


STL 源碼剖析 之類描述工程的書


《Effective C++》

《More Effective C++》

《Effective Modern C++》

《Exceptional C++》

《More Exceptional C++》

《深度探索c++對象模型》

差不多搞完這波就可以上編譯原理了

然後最重要的是多寫(大型)工程,就能理解了。

大多數小項目都比較適合python、nodejs之類直接擼一般接觸不到C++真正重要的地方


把primer的習題都做一遍


學而不思則罔,思而不學則殆

多寫


刻意寫程序,刻意用你還夾生的那些概念啊技巧。寫起來痛苦,寫好了就能明白。


那就不學了,需要學的時候在學,平時用不著又不感興趣的東西沒啥需要深入的。

覺得還是多做些能產生價值的工作,在這些工作中覺得,恩,c加加很好很強大,然後主動學習他。

學的不熟也不要有執念就可以了。


是練的少,我個人就是這樣,由於工作原因兩個月沒有寫過程序,之後再寫程序,手生,感覺什麼都不會,連自己的邏輯思維都是混亂的。自己找題練了幾天這種狀態才漸漸消失,又感覺自己能上天了 咻咻咻!!!


有想做的小項目就做項目,沒有就先把 Primer 的習題刷一遍,刷完以後對書中的內容的理解會深入很多。大概需要 3 個多月的時間。


深度探索c++對象模型,很不錯!!!不要問我為什麼知道她不錯,因為我以前是生的,看了就稍微夾生了!!!


夾生是很正常的,不用怕,多在實踐中用用,就習慣夾生了。


直接寫代碼吧,不寫再怎麼看書也是夾生的。。。LS的兄弟說的也對,C++怎麼搞都會覺得是夾生的,燒腦。。。。


找一點有意思和自己相關的寫寫,從簡單到複雜往上堆,物理博士學什麼不太清楚,不過可以自己寫寫數值計算,物理模擬模型,模擬界面等等帶有強烈目的性的寫


我粗淺給個建議……寫點代碼吧…不如就寫個關於多機計算行列式的「包含你熟悉的數學知識,網路通信,多線程,內存管理,文件讀寫」先把之前感覺夾生的特性寫寫,再搜下開源的代碼,提升就很多了,你如果還想把函數式編程的方法用上…那就更好了


推薦閱讀:

幫忙分析一下我應該選擇的方向?
UIUC CS 課程推薦?
《微機原理與介面技術》和《計算機組成原理》、《計算機體系結構》三門課程有什麼區別?先後修的順序應該是怎麼樣的?研究操作系統需要學習哪門課程?
有哪些著名的非馮諾依曼結構?
為什麼幾乎每個編程語言都有減法,減不就等於+(-n),減法不是一種冗餘的操作么?

TAG:計算機科學 | C | CPrimer |