零基礎可以學C/C++嗎?零基礎應該怎樣學?騰訊高階架構師為你解析!
學習C/C++難嗎?我英語數學地理生物政治歷史物理化學統統不好,能學會嗎?網上看評論說C/C++不好學建議不要學,是不是這樣?所以很多同學犯嘀咕了,C/C++到底好不好學?0基礎可不可以學C/C++?
話不多說了,今天就把這篇C/C++學習方法推送給各位堅持下來的同學,相信付出必有回報!
那麼0基礎怎麼學C/C++呢?在學習C/C++的過程中有很多困難和疑問這些又該怎麼解決呢?
很多同學一開始都是問這個前輩、那個高手要了幾本C語言的入門書籍,從網上找一大堆資料視訊自己學但是網上的視訊資料自己看的似懂非懂的感覺自己又買了一大堆C語言C++的書,然後開始從C語言開始看起一開始看的賊帶勁,把如何編譯程式碼,字串什麼的什麼的看的很仔細,然後隨著難度越來越大感覺有點吃力的時候然後就沒有然後了~~~
如果有想要學習C/C++的小夥伴,可以關注小編【C/C++企鵝群374890319】,wx公眾號:CPP_cx 小編也有5年程式設計經驗了,免費送一套比較系統的資料、教程和工作經驗,就當是福利吧!加QQ群:374890319
那麼我們該怎麼去解決我們在學習C/C++的過程中遇到的困難呢?小編大致的來說下
第一點當然是興趣使然
寫程式碼是件很枯燥乏味而且燒腦的事情。需要很大動力驅使你去學習,還要有足夠的精力去支撐你。興趣是學習最好的老師這個道理大家都知道,所以達妹也不多說。
第二點就是各位的學習方法
學習C/C++一般都是從C語言開始,等到有一定基礎的說切換到C++,程式語言本來就有很大的靈活性,學好C語言基礎在切換到C++時就不會感到有很大的吃力。但是千萬不能C語言還沒入門,急功近利的去學C++,那樣反而得不嘗失,死了腦細胞,浪費了時間,卻沒得到回報。
學習C++過程是很重要的,一個關於C++學習的分類,兩個大方向:面向物件程式設計(OOP)和泛型程式設計(GP)。這是兩個最基礎的方向,不過如果單純抱著一本國內常見的C++入門書籍看的話,很容易將後者忽略(國內入門書籍過重得介紹C和C++中共有的部分和OO部分,極端忽視GP部分,這可能和GP更多地用於函式庫的程式設計而OO更貼近大部分人實際工作的原因有關吧。
那就先從OO方面開始吧。
入門書:
首先是兩本如同《辭海》般詳細的神書:The C++ Programming Language 、 C++ Primer,這是兩本幾乎完全涵蓋了C++所有特性的書籍,就不做過多介紹了;另外一本同樣超讚的Essensial C++,可以看做是一本C++的《新華字典》,也就是上述兩本的的簡化版;以上3本適合所有同學看,不管是有還是沒有C基礎的同學,尤其是Primer第五版,隨著Moo大神的加入,將Accelerate C++的寫作風格帶入,呈現出了一種跟第四版完全不同的風格,另外就是C++11標準在第五版被涵蓋並放在了醒目的位置,也是超讚的。


進階書:
那就不得不提主席大人和他的好基友Meyers的兩個著名系列:Excptional 和 Effective系列了,前者包含3本:Excptional C++, More Excptional C++和Excptional C++ Style(中文版叫C++程式設計剖析),難度逐漸加深。主要是談工程方面的細節和經驗;在這個開始讀這個系列之前,有必要將Effective 系列中的兩本Effective C++和More Effective C++讀一下,尤其是前者,可謂"C++ 程式員必讀的第二本書",這個系列是講述程式設計風格的。這兩個系列讀完後可以看看《C++程式設計規範》,這可以說是上面兩個系列書的總結。


其實到此,偏OO方向的書也差不多介紹到這裡了,之所以到進階就結束,因為這方面確實是一些很實在的技術,在結合模板比較少的情況下,很少有所謂的"奇淫技巧"。不過在此要專門推薦一本OO方面更高層次的書 Inside the C++ Object Model,詳細地討論了物件的構造、生存、釋放等問題,不過對編譯器不熟悉的同學看的話可能就比較吃力了。
接下來就介紹GP方向的書籍。
大部分GP的書籍都是以C++最核心的庫STL作為載體來編寫的。
入其實從學習GP開始,就不能算作是C++學習的入門了。不過因為分得比較細,還是按照三個層次來介紹吧。
入門書:
個人認為沒有入門書
進階書:
C++ Templates,模板學習的聖經,全面地介紹了模板的各個方面;Effective STL ,meyers的Effective系列的第三本,講述了STL方面程式設計風格,也介紹了實際程式設計中STL庫中一些容器和演算法的用法和誤區;Generic Programming and the STL,講述了泛型程式設計的核心思想和各種泛型元件(以STL元件為例)。

深入書:
《STL原始碼剖析》,從原始碼的角度分析STL中各種容器和演算法的實現,【強烈推薦以這本書代替其餘任何一本C++資料結構書的學習(前提是如果有信心有毅力學透的話),因為侯捷老師說任何一個C++學生寫出來的程式在SIG STL面前只能算三流程式,不妨多看看STL原始碼】;最後一本則是Modern C++ Design,這是一本充滿了"奇淫技巧"的書,用泛型的思想結合模板寫出足以讓任何人都吃驚的程式碼——原來還可以這樣寫。不過這本書中內容的價值則可能是仁者見仁了——一般工作中基本用不到。

除開GP和OO這兩個方面,另外還有兩本書推薦給大家。一本是API Design for C++,顧名思義講述如何編寫高質量的API介面;另一本是《提高C++效能的程式設計技術》,講述一些提高程式效率的技巧,讓你知道C++同C一樣高效。Ps.這本書結合Effective系列和Excptional系列一起看有奇效哦。
另外,學習的過程中無論難度多大,都要建立自己的知識體系和學習思路。這個可能對大多數同學說是個極大的挑戰,但是你一旦具備,那麼你可以嘗試勾勒自己的知識框架加速引導自己的思維認知。
第三點就是別鑽牛角尖
初學的C語言的時候恨不得把所有的知識點一口吃了,作為入門級別的,還是先繞開像工作原理printf底層實現這些比較高深的知識點。先做到會用,等到自己對C/C++有一定修為以後再去深入挖掘。
很多同學學了一段時間覺得自己什麼都不會,什麼都不明白。這說明你不適合自學,如果想要繼續學下去,就要找一個靠譜的老師或培訓機構,千萬不要拿馬斯克等人比較激勵自己,因為結果只會讓你更沮喪,最後喪失信心放棄學習,世界上雖然有一學就會的天才,但是那種人畢竟是少數大多數人都是普通人。
第四點就是靠自己毅力了
小編之前也說過程式設計是枯燥乏味的,關鍵的還是環境,如果你周圍都是喜歡學習的人,你也會受到感染,但是如果你周圍都在看抖音,玩王者,就算你想學,相信也堅持不了多久,所以,如果沒有一個好的環境,沒有毅力堅持下來,那麼還是報一個培訓班更合適。
如果有想要學習C/C++的小夥伴,可以關注小編【C/C++企鵝群374890319】,wx公眾號:CPP_cx 小編也有5年程式設計經驗了,免費送一套比較系統的資料、教程和工作經驗,就當是福利吧!加QQ群:374890319
小編剛說的四點隨便一個做不到都可以做為失蹤的理由。想要學好C/C++進擊IT高薪行業是要付出努力和堅持的。希望各位以後都能成為程式設計大牛。