標籤:

初學c++要怎麼學?

啊……老師上課就是編程序給我們看……然後一節課下來一臉懵逼。

問學長學姐,得到的答案都是抄書?←

所以好奇c++剛開始要怎麼學。


不要想太多,最開始的時候自己的智商就是0,沒有選擇。他們只是抄書,當年我還背過書。


C++需要不斷地練習

——vczh

https://zhuanlan.zhihu.com/p/19796639


正在學習C++,每天早上1.5小時,進行到第18天了,在公眾號和知乎專欄更新了5篇筆記。

總結一些個人經驗,大家可以借鑒

  1. 入門必看《C++ Primer》第五版 中文版
  2. 單純看書如果經常走神,建議一邊看一邊記要點
  3. 記完要點再一節一節的把要點串起來,進而上升到章、全書,統統串起來
  4. 每天抽出固定的一兩個小時學習
  5. 不要求快,前面6章看上5遍都不多
  6. 邊學邊練,光說不練假把式

後面幾條都容易理解,我來說說為什麼入門必看《C++ Primer》第五版 中文版。

  1. 英文水平不行,所以看中文書
  2. 這本書翻譯的好, @vczh 輪子哥強勢審校。初學最怕什麼?術語都沒學對!候老師雖然也翻譯了很多好書,但是候老師不是大陸這邊的,裡面的術語難免跟國內大部分碼農用的不一樣。
  3. 講的透徹、總結到位,看完這本書我才發現之前上大學的時候好多東西都理解錯了。
  4. 系統、循序漸進。以前看C++程序,語法真是多,指針、引用、常量指針等等,一看就頭大。現在學完前六章,看到別人寫的程序不再發怵了。也就200多頁的內容,能有基本能看懂別人代碼這個效果,我認為足夠了。

我制定了一個100天的C++學習計劃,歡迎志同道合的碼友一起參與進來。

100天C++學習計劃

第一階段:《C++ Primer》1-6章,輸出讀書筆記

第二階段:Leetcode題目,會做多少做多少,輸出做題筆記

第三階段:《C++ Primer》8-12章,輸出讀書筆記

第四階段:Leetcode題目,會做多少做多少,輸出做題筆記

第五階段:《C++ Primer》7、13-16章,輸出讀書筆記

第六階段:找一個實際項目,練習類的使用

第七階段:《C++ Primer》剩餘章節,興趣閱讀

具體執行如下:

  1. 每天早上6-8點執行計劃。如果同末,那麼推遲到7-9點;如果早上沒能按時起床,那麼用其它時間補充;如果有不可抗因素(如出差等),那麼順延計劃並做記錄。
  2. 某寶買100天行動計劃表,用來打卡
  3. 每個階段的內容根據實際執行情況動態調整
  4. 弄懂書中的每一個知識點,不懂的地方查資料
  5. 周總結,整理筆記並調整計劃
  6. 為保證充足睡眠,晚上10點睡覺

截止到今天,這個計劃已經執行到了第18天,最大的感受就是,當你每天都花一兩個小時做同一件事情的時候,進展是很驚人的。這裡也和大家分享一下我的第一個周總結,一起來看看計劃的執行情況,方便大家做計劃的時候參考。

周總結

  1. 10點睡覺很難實現,不過目標定在10點之後,基本都是在11點前睡覺,好過之前12點還沒睡。
  2. 六點半起床能保證,實際學習時間1.5小時左右
  3. 某寶上的計劃表都是倒計時的,沒有買,自己隨便做了一個
  4. 有一天早上沒能看書,利用晚上的時間補上了,記錄表上做了標記
  5. 19號聽了李笑來老師的Live,轉變了之前只求速度的觀念,會把看過的部分再看一遍
  6. 單純看書容易走神,邊看邊記效率更高

2016.11.03更新

=================================

第二周 周總結(10.23-10.30)

1. 10月27日手機沒電,沒能早起,可見生物鐘還沒養成。晚上補上了讀書時間。

2. 編輯公眾號和知乎佔用了一定的時間,不過整理文章時有了新的理解

3. 看新內容的進度變慢了

4. 已經發布的章節看了不下5遍,每次都能發現自己漏掉了一些東西。真是應了那句古話「書讀百遍,其義自見」

響應知友的建議,添加學習群二維碼,群內禁發圖片,多交流學習

http://weixin.qq.com/g/A07cLaWfbwU7gqVj (二維碼自動識別)

我會把整個學習過程和讀書筆記記錄在自己的公眾號和知乎專欄,歡迎有興趣的碼友一起參與進來

微信公眾號:馬志峰的編程筆記

知乎專欄:馬志峰的編程筆記 - 知乎專欄


學C++一年多了。

自覺應該已經跨過了初學的檻,快要入門了。

「初學xxx應該怎麼學?」,得看你想用xxx做什麼。

比如C++,如果你只想通過考試,那你只要把那本薄薄的教材看幾遍,代碼抄一抄改一改。

如果你想用C++幹活,那麼顯然你需要完整地把《C++ Primer》《Effective C++》等書看完,同時要掌握CS專業要學的其它基礎課程,比如數據結構與演算法、計算機組成原理、操作系統、資料庫、編譯原理,還有計算機網路。(可以先讀讀《CSAPP》、《CLRS》,剩下的等需要的時候再讀)

看書的過程中免不了自己造輪子,拆輪子。

輪子有大小。小的有簡單的,只涉及數據結構和演算法的輪子。其實刷題可以滿足這一階段的需求。我覺得刷幾十道題,把常用的數據結構過一遍就好了。(注意你的編碼規範)

再往上呢,可以將學過的知識串在一起,做一個自己喜歡而又力所能及的東西。這個過程你要學會定義自己要解決的問題,設計解決方案,並將其實現。然後想辦法優化。「吹毛求疵」,是這個階段最寶貴的品質。儘可能多嘗試一些方案,C++給了你這個自由。

到這裡也許你會覺得,你已經熟悉C++的語法。但現實往往會給你很大的打擊。這時候可以讀讀《深度探索C++對象模型》這類書,陶冶一下情操。然後你發現之前讀《C++ Primer》和《Effective C++》等書時不理解的內容一下被激活了,真爽。(前提是你真的有在寫代碼)

到這個階段時,也許你已經製造了許多讓人不忍直視的代碼。迫切地想了解如何寫出真正可靠的代碼。那麼你可以讀讀《STL源碼剖析》這類的書。這些書可以鍛煉你閱讀源代碼的能力。這就是拆輪子。看看別人的輪子長什麼樣。(一定要選好榜樣啊!)

然後大概就是,自己嚴格按照標準造個輪子吧。

簡單總結一下。C++之所以難,不僅僅是語法層面上的難,而在於使用它的領域相對於其它語言有更嚴格的要求。這要求你有良好的CS功底,了解計算機系統的工作原理,了解C++究竟在做什麼。這種困難體現在學習路線的陡峭上,你需要較多的前置知識,需要大量練習,需要警惕編譯器和你的想法有出入(誤。你不應該寫出依賴未定義行為的代碼。)。可能在某一天你會突然明白,啊,原來這就是C++。這時即使你說不上精通C++,至少也是一個合格的程序員了。

以上都是我的個人見解,也許不是最佳選擇。但應該不至於誤人子弟。

在這裡感謝一下原著作者和譯者(抱住侯捷大腿)還有(強勢)審校(抱住@vczh 大腿)(。

順便感謝一下中國低廉的書價。


0 看書

1 抄書上的代碼

2 改書上的代碼看效果

3 goto 0


有的初學編程問題在自己思考過後如果還是難以解決不反對上網提問,但是絕對絕對不要截屏攝屏提問,千萬不要,情商問題。


如果你在可期的未來看不到什麼時候還能用到C++的話,C++這門課本身,可以當馬克思主義來學…背背代碼,刷刷複習題就好了。畢竟學習C++前期的收益率太低了。如果很可能或者一定會用到,你看看其他答案。


對於我這種笨人來說,邊記筆記邊看書速度最快,再配合編程練習,我現在就是這個路子。


個人覺得……

學好一門語言最快的路徑是 運用起來。

看書學的是技巧和用途說明。

所以我個人因為如果想要能快速掌握運用。 還不如多做點工程。

哪怕入門級別的也有很多東西可以做啊。 比如說連連看, 掃雷, 貪吃蛇。

socket的也多啊。 簡易的聊天交談(類似QQ)。

入門階段不建議用STL和BOOST。 字元串處理自己擼一遍strcpy, strcat. 全用CHAR, WCHAR去處理字元串。 自己造一遍輪子才能印象更深。


拿一本經典書籍,只看代碼,上機,看得懂代碼就過,看不懂看周圍的文字,然後過。


題目+deadline才是第一生產力

這個題目的難度略超你的能力範圍就是墜哄的了


正學著,還在摸索,這得慢慢來急不得


分兩部分,第一部分是語言部分,包括語法,標準庫,多用多練,刷題是個不錯的途徑。第二部分是設計模式和第三方庫,這個可能根據的工作需要以及職業規劃來選擇不同領域的庫。第一部分還有些好書和經典代碼可以看,第二部分就需要長時間的學習練習和積累了。


輪子哥說的對。

——小狐狸


推薦閱讀:

C++11 中 typedef 和 using 有什麼區別?
嵌入式這行業是不是不行了?
為什麼C++書上的.h文件上不加預編譯語句?
有那些值得學習的C/C++和Lua開發的項目源碼?
C++取類成員變數地址的問題?

TAG:C |