C++應(yīng)該怎么學(xué)
發(fā)布時(shí)間:2021-05-12 10:49:22
C++應(yīng)該怎么學(xué)
如果把C語(yǔ)言看做是一頭性格暴躁難以馴服的公牛的話,那么c++則是一條無(wú)比狡猾,兇猛厲害的惡龍。想要降服這條惡龍就需要十分強(qiáng)大的力量,換言之,想要掌握C++就需要謹(jǐn)小慎微的態(tài)度和較為扎實(shí)的技術(shù)能力。
那么,如何才能學(xué)好C++呢?對(duì)于初學(xué)者而言,可能無(wú)從下手。畢竟,C++和C語(yǔ)言沒(méi)有太多聯(lián)系,(雖然早期人們稱C++為含有類的C)不過(guò),在C++的學(xué)習(xí)之前還是建議先學(xué)好C語(yǔ)言,比如數(shù)據(jù)類型,表達(dá)式,數(shù)組,指針,結(jié)構(gòu)體等等。建立起編程的邏輯思維,了解基礎(chǔ)的計(jì)算機(jī)知識(shí),這樣,才能更好的學(xué)習(xí)C++。當(dāng)你有了較為全面的C語(yǔ)言基礎(chǔ)時(shí),就可以真正開(kāi)始C++的學(xué)習(xí)之旅了。
安裝一個(gè)好用,省力的IDE。有很多程序員“老鳥(niǎo)”建議初學(xué)者使用Vim在Linux寫C++程序,配合makefile進(jìn)行編譯管理,這樣可以讓學(xué)習(xí)者從本質(zhì)上掌握C++的編譯流程、熟悉開(kāi)發(fā)環(huán)境,關(guān)于這種論調(diào),筆者并不十分認(rèn)同。首先作為一個(gè)初學(xué)者,快速上手,簡(jiǎn)單易用才是核心,學(xué)習(xí)編程語(yǔ)言的目的是為了解決問(wèn)題,培養(yǎng)計(jì)算機(jī)抽象思維,而不是比誰(shuí)顯得專業(yè),誰(shuí)的工具更加難用,以此來(lái)顯示高出天際的逼格。所以,工欲善其事必先利其器,對(duì)于入門級(jí)學(xué)習(xí)者來(lái)講,在windows下安裝微軟的VS2013-VS2019都可以。CFree或者DEVC++或者vc++6.0還是別用了,過(guò)于古老。
結(jié)合經(jīng)典書籍,掌握基礎(chǔ)的面向?qū)ο缶幊趟枷?。例如類、?duì)象、封裝、訪問(wèn)權(quán)限、作用域與命名空間、繼承、多態(tài)等。了解了最基礎(chǔ)的概念后,可以嘗試練習(xí)書本上的例子或者課后練習(xí)在計(jì)算機(jī)上寫出代碼了,之后進(jìn)行調(diào)試。明白其中的邏輯概念和基本原理即可
進(jìn)階學(xué)習(xí),建立知識(shí)體系。學(xué)會(huì)使用泛型編程和STL,掌握基本用法。重點(diǎn)學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),網(wǎng)絡(luò)編程,多線程多進(jìn)程,以及線程池等技術(shù),面試筆試肯定會(huì)問(wèn)到,項(xiàng)目開(kāi)發(fā)中絕對(duì)會(huì)用到。在學(xué)習(xí)與實(shí)踐的過(guò)程中,一定要厘清具體知識(shí)的脈絡(luò),知道哪里是重點(diǎn),哪里是非重點(diǎn)。這時(shí),只靠自學(xué)或者看視頻就顯得支撐不足了,最好的方式是找一個(gè)有經(jīng)驗(yàn)的并且愿意指導(dǎo)你的老師,帶著你一起前進(jìn),幫你避免掉一些彎路,防止你一而再再而三的栽進(jìn)坑里。這樣便能達(dá)到事半功倍的效果。
動(dòng)手實(shí)踐,結(jié)合需求完成一個(gè)小項(xiàng)目。對(duì)于剛剛學(xué)完C++基礎(chǔ)概念的你來(lái)講,如何驗(yàn)證自己掌握的程度,最簡(jiǎn)單也最有效的方式就是實(shí)現(xiàn)一個(gè)小項(xiàng)目。比如之前用C語(yǔ)言寫的一些小型練手項(xiàng)目,(五子棋,貪食蛇,各種管理系統(tǒng)之類的)把這些程序按照面向?qū)ο蟮姆绞竭M(jìn)行重構(gòu),劃分出功能模塊,定義出屬性和行為,封裝出類。這樣便能夠驗(yàn)證自己是否真正理解面向?qū)ο蟪绦蛟O(shè)計(jì)思想。
選擇方向,深入學(xué)習(xí)。有了前三步的積累,此時(shí)的學(xué)習(xí)者已經(jīng)有了初步的開(kāi)發(fā)項(xiàng)目的能力了,接下來(lái),就是需要思考從事何種行業(yè),然后根據(jù)該行業(yè)的特性,和行業(yè)中用到的技術(shù),選擇一個(gè)方向,深入學(xué)習(xí)了。例如音視頻方向:有音視頻的編碼解碼算法、流媒體服務(wù)及協(xié)議;喜歡游戲的可以做游戲開(kāi)發(fā)相關(guān)方向:Unity3D,Cocos2D-x,OpenGL、DirectX等;嵌入式開(kāi)發(fā)有STM32,Zigbee等。此外人工智能方向也有很多選擇:基于Opencv開(kāi)發(fā)、深度學(xué)習(xí)、模式識(shí)別、機(jī)器學(xué)習(xí)/機(jī)器視覺(jué)/圖像識(shí)別/語(yǔ)音識(shí)別/自然語(yǔ)言處理等算法開(kāi)發(fā);目標(biāo)檢測(cè)、識(shí)別算法,有FasterR-CNN,F(xiàn)aceNet等算法、計(jì)算機(jī)視覺(jué)(如圖像識(shí)別理解,人臉檢測(cè)識(shí)別、目標(biāo)檢測(cè)和跟蹤、OCR、增強(qiáng)現(xiàn)實(shí)、圖像質(zhì)量評(píng)價(jià),圖像分割增強(qiáng)等)。
綜上所述, 隨著目前科技日新月異的發(fā)展,人們對(duì)美好事物孜孜不倦的追求,要求了我們的科技產(chǎn)品快速的跟進(jìn)人們的需求。計(jì)算機(jī)行業(yè)在未來(lái)20年依然會(huì)高速增長(zhǎng),在細(xì)分領(lǐng)域里,智能電子設(shè)備,物聯(lián)網(wǎng),工業(yè)智能制造等高端裝備行業(yè)以及高新服務(wù)業(yè)等交叉行業(yè)的大踏步前進(jìn),更是需要相當(dāng)多的計(jì)算機(jī)綜合人才,如何在這個(gè)一個(gè)充滿競(jìng)爭(zhēng)的領(lǐng)域里站穩(wěn)腳跟,扎實(shí)的編程能力是必不可少的。唯有堅(jiān)持學(xué)習(xí),不斷總結(jié),才會(huì)最終破繭成蝶,變成真正的大牛,所以說(shuō)迷茫的你、想提升自己的能力,趕快來(lái)學(xué)習(xí)呦。