c++學夾生了怎麼辦?
01-14
物理學博士在讀, 主業是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),減法不是一種冗餘的操作么?