小白 C++ 入門併發瘋學習路線
這篇文章實際上是我自己入門過程的總結,一個儘量少廢話的C++入門指南。
具體總結前,想先回答一個問題——要不要先學C,再學C++?
我作為小白時疑惑過這個問題,在此給後來的小白和當年的自己一個答案。
個人看法是,單就學習C++而言,直接學習C++就可以了,不用先學C。在微軟維護STL的Stephen Thomas Lavavej都說他當年學C++之前學C語言浪費了大量的時間,早知道就直接從C++開始。
很多老的專案是C語言寫的,之後的程式設計生涯多半還是繞不開學C語言,不過那時候你已有C++功底,構不成啥大問題。
因此,我這篇文章基本不提C的學習,直接硬剛C++。不贊同的看客勿噴,右上叉叉就是了。贊同的同學可以往下看。
入門
《Accelerated C++》,《Essential C++》二選一精讀。《A Tour of C++》選讀。
- 《Accelerated C++》很適合新手,因為她只有短短不到300頁,在普通磚一樣的入門書籍裡面是一股清流。容易通讀完,減少挫敗感。
- 《Essential C++》比較適合有其他程式設計經驗的中手迅速學習C++。內容會比《Accelerated C++》深一些。
- 《A Tour of C++》,C++ creator扛鼎之作,適合剛學完、還有學完很長時間以後看,快速複習 C++知識。
主看書的同時,輔以這幾個網站的資料,交叉印證——
- C++ 教程:ofollow,noindex">www.runoob.com/cplusplus/c…
- 你好,C++:zhuanlan.zhihu.com/nihaoCPP
- C++入門系列部落格:www.jianshu.com/u/67702c00e…
比如我當初主看的是 Accelerated C++,在上下班通勤等零碎時間就在手機上看輔助部分的資料,看看跟讀書的理解一不一樣。甚至有時能意識到資料中某些概念的表述不太準確,此刻會發覺自己真的理解了。這種交叉印證的閱讀法,能使自己入門時對基礎理解的自信更足些。
完成這一步後,就可以開始上GitHub看點別人的程式碼,嘗試寫點程式碼。
我的話,學了在xcode下新建C++工程,然後參照這幾個連結,寫了兩個計算器和一個學生管理系統。然後開始搬磚了。
計算器1:blog.csdn.net/jiejinquani…
計算器2:www.zhihu.com/question/28…
學生管理系統:blog.csdn.net/qcyfred/art…
入門這一步是最關鍵的,你初步瞭解了各種基本概念,併成功書寫和執行起了程式碼,感覺真棒吧。
接著下面介紹的,就是順利入門以後的廣闊大海,慢慢慢慢慢慢慢慢、好好好好遊吧。留心,不要急,千萬不要抱有直接把後面的內容一口氣學完,再開始幹活的想法。因為那樣要耗費巨量時間且效果不好,況且C++是學不完的,也沒有人敢說精通。請一邊投入實作,一邊保持學習。
系統化
入門後有時間就要閱讀些更系統的書。 具體就是《C++ Programming Language》(現在已經有第四版了)和《C++ Primer》二選一精讀。之後有時間可以翻翻另一本。
(強調提示 !!!《C++ Primer》和《C++ Primer Plus》不是同一本書的不同版本,作者也不一樣。【不建議】看《C++ Primer Plus》)
函式庫
到這裡你應該跨過了語法障礙了,要開始瞭解函式庫。可以按順序看看《C++標準庫》、《深入理解C++物件模型》和侯捷老師的《STL原始碼剖析》。
追逐效能與優雅
現在應該對C++算有小小成,可能會對如何寫出更好效能、更優雅的C++程式碼感興趣,可以繼續看《Effective C++》和《More Effective C++》,《Exceptional C++》。
哲學
能堅持到最後這步,你可能快瘋了,瘋子喜歡問哲學問題,比如C++是誰、從哪來、要到哪去。
嘗試讀讀《C++沉思錄》、《The Design and Evolution of C++/C++語言的設計和演化》。
另外 C++(C語言) 在一眾高階語言裡面卻算是比較貼近計算機底層的語言。多瞭解計算機結構、儲存、運算原理方面的知識,會對C++ 的來龍去脈理解得更透徹,可以讀讀《電腦科學導論》、軟體工程的《程式碼大全》、作業系統的《現代作業系統》、程式員入門的《深入理解計算機系統》。