看完才知道C++要這麼學,編程大牛對C++初學者的學習建議

編程語言 Linux Java Windows C語言編程 C語言編程 2017-09-07

有很多朋友是在校的學生,甚至還有高中生還有研究生,還有沒上過大學的,還有很低學歷的。正因如此,我才感受到,教導的有必要性。有些朋友,我也是因為很忙,也就沒有仔細的去教導,雖然給出了一些基礎的建議,其實我更希望能夠掏心掏肺的把我的學習經驗建議的都告訴他們。如果你要問我為什麼要這樣做,我只想給一個理由,那就是,我走了太多的彎路,以至於一路那麼艱苦,所以,我儘量使他們不再重蹈覆轍。 (文章略長各位看官請耐觀看)

學編程最重要的是實踐,就是寫代碼、看別人寫的代碼、再寫代碼,你看再多的書,不寫代碼,你還是不會編程。但是寫代碼也要講究方法循序漸進,不能剛學了幾天語法,就想寫個操作系統什麼的,樹立這種不切實際的目標只會讓你的自信受到嚴重打擊迷失自我。同時小編推薦一個學C/C++的學習群627819188無論你是大牛還是小白,是想轉行還是想入行都可以來了解一起進步一起學習!群內有很多幹貨和技術分享!

看完才知道C++要這麼學,編程大牛對C++初學者的學習建議

關於C++言語的選擇,許多人也會在疑問,C++是否盛行,是否有用,是否一貫能夠仰仗這一門言語讓自己順風順水。有些人是渾渾噩噩的就學了,底子上就是學校開設的課程,就這樣稀裡糊塗的開始學了,然後稀裡糊塗的結束了,終究都不知道C++有些什麼,不過學校裡學得C++也確實不夠深入。還有一些人是徜徉在學與不學之間,沒有踏出這一步就再考慮未來,是否有些太超前,導致什麼都要評估一下,終究什麼都學不出結果,也學欠好,終究總結一個結論就是,學的東西沒用。還有一些人就是,知道C++確實挺好的,既能深化底層,又能便當開發高級軟件,是因為C++是面向對象和麵向進程的綜合體,天然兩者的利益都具有。然後就學了,學了點語法,然後學了面向對象,然後學了點高級點的模板等,然後就覺得學完了,不知道再繼續學什麼了。

這些情況,多數人都有過。也有很人疑問,終究怎樣展開,怎樣學習?希望各位可以通過本篇文章找到目標和方向,不再和我從前一樣,走太多的彎路,受過太多的折磨。

看完才知道C++要這麼學,編程大牛對C++初學者的學習建議

興趣才是源源不斷的驅動力,這個由我的經歷現已見證了這一實踐,我還會繼續堅持下去。那些諮詢我的朋友,很多也是應為興趣而學習的,所以我更是覺得有必要指導。雖然我水平不是很高,但也正是以一個初學者和入門者以及自學者的視點,才華讓他們切切實實的得到清楚的方向。那下面就具體說說C++展開方向和學習方面,只是建議,給為都應該要找到最適合自身情況的方式。

C言語和C++言語的聯絡,可以參考《C言語和C++言語的聯絡對比分析》。下面針對怎樣學習C++做些分析和建議。

學編程與專業無關,與性別年紀也沒有關係,只需你想學,是真的喜歡,就可以學好。當然,為了避免少走彎路,請多學習別人的經驗和建議,也是讓自己少走彎路的一個正確的做法。還有,也有人問數學不好,編程能不能學好?這個問題其實和學歷是同一類問題。

只要是正常人,有正常的思維邏輯,都是能夠學編程的。當然,如果是有興趣,則會學得更好。如果再加上有人教導,那就更好了。

看完才知道C++要這麼學,編程大牛對C++初學者的學習建議

為什麼說有正常的思維邏輯就能夠學編程了呢?當然,編程的基礎語法,只需你找到一本適合的書,或許有一個好人教導你,這是不成問題的。當然,如果暫時都沒有,網上這麼多資源,這麼多信息,你必定能夠找到你要的信息。

所謂編程,就是編寫一個依照我們思維工作的程序。所以其間心就是,我們的思維。編程的邏輯就是我們的思維邏輯。編程不僅是要從日子中的思維中加以運用,再學習別人的履歷時,你還會學到更多的思維,開闊自己的思維,更好的教導自己的日子。然後進一步優化自己的編程思維,循環往復。

看完才知道C++要這麼學,編程大牛對C++初學者的學習建議

當然,這只是一個最基本的條件,光有這些思維,並不能讓自己真的就能成為合格的程序員。否則,全世界的人都是程序員了。但是全世界的人都是有成為程序員的潛力。下一步,我們就是要學好編程的東西。這樣我們才華實在成為程序員。這個東西就是編程言語。至於什麼言語,到了終究其實並不重要,但是為了長遠的展開,我建議學習C++,特別適宜在校學生。因為在校生能夠運用滿足的時間來學習基礎。當然如果就業人員可以花業餘時間來學習C++的話也是很不錯的,但是學編程你就要有耐性不怕吃苦,不然你什麼都學不成。

看完才知道C++要這麼學,編程大牛對C++初學者的學習建議

為什麼我建議學習C++言語呢?

關於編程言語本身,要在作業和往後的展開中,你有必要學會一些底子的東西。面向進程是全部言語的基礎,面向對象是現在開發的必備基礎,而模板和泛型編程,又是許多言語直接或直接完結的高級東西,Java也用容器,C++的STL中也有容器,其實本質就是一個,只不過,Java可能對其進行了封裝,供給了更多的特性算了,但是思維和本質是一樣的。一同,因為Java對其進行了封裝,你要學會運用它是很簡略的,但是要深化了解就不那麼簡略了,因為封裝了,就變得複雜了。而C++則是直接的顯露,很原始的。只需學懂了容器,才華實在用好,而Java即使不懂也能用的很好,這也是前面說的Java上手快深化難,而C++則是上手難,深化簡略。容器的本質都弄瞭解了,用法就再簡略不過了,然後學其他深化的也變得很簡略了。要是再去用Java的容器,直接秒掉。也真是因為C++供給了這麼多的特性,作為長遠的展開,一次性把這些全部學會,融匯貫通,語言就不是阻止你前行的絆腳石了。再學其他東西,簡直就不費吹灰之力了。所以,關於言語,把C++的每個部分學好,就不要在言語等級上羈絆,那就是要展開到系統等級了。也只需在系統等級知曉,那就是很優異的程序員了。當然,在各個運用方面,也是成為優異的人才的,但是,系統有必要很知曉,否則,總會欠火候。不論什麼時分,你編寫的程序,都是在系統工作的,你不可避免這個問題,當然在你腦子裡工作的程序就不在此議論範圍了。

看完才知道C++要這麼學,編程大牛對C++初學者的學習建議

學習C++,如果是初學者,不論是在校學生,仍是畢業了的,仍是低學歷的,或許沒有讀過書的,也不論是從前學過的,仍是沒學過的,或許從前學過C的,請都仔細學習一遍《C++ Primer Plus》這本書,這本書是針對初學者的,說明很具體很全面,一步一步的解釋,程序實例並不做單調的數學運算,而是日子的小比如,然後增加喜好和下降難度。這本書七百多頁,因為我C言語基礎厚實,也學過了Java的面向對象的思維(最初學Java就是去學面向對象的思維的),然後花了一個月,把這本書仔細的學了,當然,面向進程部分就許多略過了,和C言語底子一樣,只是參看不一樣的當地。書中每一個字都看的很仔細,包括書後的習題都底子練習了,作用也正確。不過後邊的高級部分,因為當時基礎不可,所以就沒有一個個做了,只是瞭解其思維。但是,如果沒學過C言語,也不要緊,那就直接學習這本書吧。這本書學完後,如果要進階,能夠學習《高效C++》。

看完才知道C++要這麼學,編程大牛對C++初學者的學習建議

當然,學的時分,著手編程是必不可少的,不著手是學欠好的,書上的練習,儘量都做出來,不要查答案,也不用對答案,你獨立考慮,處理問題了,符合要求,就是答案。編程中沒有標準答案,千萬不要綁縛自己的思維。實在做不出來能夠參看答案和提示,分析好後再根據思維,重新做,而不是默寫代碼,千萬不要默寫代碼,而是根據答案中的思維去完結,這樣才華真的學會著手編程,因為這問題是有朋友問過我的,他說自己對著書寫的出來,不看書就寫不出來,問題就出在這兒,我當時沒有仔細分析,因為沒時間,希望他能看到這個吧。自己根據思維寫出來了,你就真的掌握了思維的精華,也就能夠活絡的變通了,而不是像練習班裡讓學員默寫代碼,那是一種很可笑的做法。但是,要常常寫代碼,把這些思維用熟,讓它成為自己的思維,這樣就成功了。往後就不會沒有思路了,因為思維現已轉化為自己的了。

看完才知道C++要這麼學,編程大牛對C++初學者的學習建議

語言方面的學習問題都解釋清楚了。下一部分的展開方向就是操作系統。

關於操作系統,先不是編程的問題了,而是操作系統的原理問題。這是程序員有必要掌握的知識。不要覺得這些原理單調,也不要覺得那些思維過期了,書中的思維是沒有過期的,雖然簡略,但是現在的系統都是根據這些底子思維的。如果這些底子思維都不瞭解,更甭說去學習現在的系統了,那簡直就是噩夢。瞭解了書中的理論還不可,有必要一同改動自己的思維,以操作系統的工作邏輯來看操作系統,而不是依你的思維來看,因為它是現已存在的東西,即使不合理,它也存在,你有必要接受,而不是你覺得應該怎樣樣,除非你自己去寫一個操作系統,來擬定它的規則。至於學習的書,能夠參看湯子灜的《計算機操作系統》。這是全部操作系統的通用理論。然後你能夠去學習《Windows程序設計》和《Windows中心編程》深化學習Windows編程知識,或許學習Linux系統等,當然,如果真心想深化研討,建議學習Linux系統,因為它是開源的,你能看到系統全部內核的代碼,深化學習,而Windows是封閉的,你看不到。不過,如果你要在Windows途徑上展開和找作業,那建議學習好,學好後還能夠對比學習Linux系統,更好的瞭解它,然後更能前進操作系統的知識水平,而不限於哪一種操作系統。然後就是各種運用等級的,比如圖形方面的,網絡通信方面的,等等。但是系統是它們的基礎,所以有必要先學好,才華更好的學習它們,當然這是建議,能夠根據自己的情況做調整。

看完才知道C++要這麼學,編程大牛對C++初學者的學習建議

然後就是最實踐的問題。

學完了首先是要找工作。C++是一門比較難的語言,不是一瞬間就能學好的,急於求成只會欲速則不達。如果花時間學好了的話自然可以找到一份薪酬不錯的工作。C++方面的工作有很多,但是公司找不到水平高的C++的人才。半吊子是搞不好C++的,所以要學好,工作是沒問題的,不學好,也不要說C++沒前途,只能說自己學的還不夠。至於薪酬的問題,是跟技術水平成正比的,技術含量高的,待遇自然好,需求投入的時間和精力就非常多,這個毋庸懷疑。所以,不要懷疑C++找不到工作的問題,只需懷疑自己學好了沒有的問題。相同也不要懷疑薪酬待遇的問題,只需懷疑自己水平問題。

看完才知道C++要這麼學,編程大牛對C++初學者的學習建議

當然,C++基礎學好了,還是不夠的。它只是一門語言,不要把它想得太崇高了。實在能夠發揮最好的作用的,仍是要與實際結合,還有學會其他的開發,比如結構,類庫什麼的。初學者一般都是從事Windows開發,當然也有準備從事Linux開發,關於服務器方面的開發,基本上是用Linux了。所以根據自己的發展方向,進行選擇吧。不論是哪個系統,操作系統的基礎理論有必要學好,因為它是全部現在操作系統的通用理論。然後再深入學習。Linux方面的我水平不高,雖然學過了Linux系統,也在自己的電腦裝過Windows/Linux雙系統,但是也只是限於Linux系統的運用層面,開發層面不清楚。學習Linux系統的運用。

看完才知道C++要這麼學,編程大牛對C++初學者的學習建議

語言不是問題了,但是在開發項目時,卻是遠遠不可的。開發項目是要高效率處理問題的。因為公司是盈利的,而且還要最大化盈利,是不允許出現大型紕漏的。鑑於Windows是微軟的操作系統產品,因此,東西最好仍是運用微軟的。因為這樣的話,能夠和系統做到最高效的對接,提高程序效率和兼容問題。MFC覆蓋了編程中全部的方面。當然,在這之前,需學會Windows編程,也就是API編程,因為MFC的功率和有些功用是API的簡略封裝,簡略的意思就是把一個API函數放在MFC函數中,將API函數需求的句柄作為MFC類中的一個成員變量,然後減少了函數的一個參數。還有的功用,基本就沒有MFC類或許類成員函數對應,因此就有必要運用API函數來處理。一同MFC是一個類庫,仍是一個程序結構。

看完才知道C++要這麼學,編程大牛對C++初學者的學習建議

所謂的程序結構,就是將Windows程序的流程進行了封裝,然後在MFC中能夠輕鬆的編程而不用重視內部許多細節。有人會說MFC開發的程序功率很低。說它功率低是因為MFC是一個結構等級的,因此考慮問題都是很高很遠的,有些方面就要考慮到很全面,就對程序增加了許多一般用不上的東西,導致程序效率過低。之前我也是這麼認為了的,然後產生了對MFC的小看,信賴從底層開發更能體現技術。但是這種主見是差錯的。功率低不低,其實不關東西的問題,表面上看,確實如此,如果以默許導遊配備生成了一個程序,會參與許多不用要的東西,程序效率就變得低了,但是,如果是一個高手,很清楚MFC,每個部分是幹什麼的摸得一覽無餘,試想,編出來的程序效率能低嗎?我想,因為是跟操作系統同源,所以實行功率更高,因為許多東西能夠直接是系統的內核的東西,而其他類庫,因為Windows是封閉的,不能夠做到深化內核的一些東西,因此就運用用戶態的東西仿照內核的,因此效率也就變低了。就像Java的虛擬機工作程序,如果能在Windows中的程序直接工作,免掉了中心的變換,效率就高了。這兒的議論是很迷糊的,只是告訴我們,真正清楚了,就不存在效率低的問題。所以,希望我們糾正一個思維,東西沒好壞,只需開發者水平高低的問題,在實踐的開發中,我們還有必要學好用好一個或許多個東西,一同還要深化,要知曉。

在學習MFC之前,當然C++必定是要學好的,一同Windows API編程也有必要學好。MFC只需C++才華運用的類庫,有些初學者還不知道。當然這都是建議,必需根據自身實際情況。當然,如果這兩個不先學好,MFC想要學好就真難了,MFC就像C++一樣,也是才學過人的。因為涵蓋了C++、Windows,還有MFC本身的文檔視圖結構和一些其他的機制,直接學MFC。Windows的學習,能夠看《Windows程序設計》,MFC初學能夠學《MFC Windows程序設計》。這些都是適宜初學者的。MFC的深化能夠學習侯捷的《深化淺出MFC》。這些都學好了,底子的開發都不成問題了。

要想進一步學習,就要學習更多具體領域的開發,就要學更多的東西了。推薦一下STL(C++的標準模板庫)和Boost庫,這些庫在實踐開發中常常運用。MFC中有容器庫,比如CArray,它是先於STL出現的,也很好用,想Java的容器運用一樣,很便當。但是真要學好容器,仍是學習STL。STL是後來增加到C++的,是一個標準的模板庫,當然容器也是標準的,不同的容器有不同的分類,而不是想MFC的容器庫一樣,一個容器類完結了各種容器,運用方便,但是瞭解起來就不是那麼簡單了。STL中vector和map是不同的容器,用法也不一樣,所以,學會STL,你就能夠很清楚容器的內部原理,運用起來就左右逢源。

看完才知道C++要這麼學,編程大牛對C++初學者的學習建議

容器的內部結構就是數據安排中的東西,比如樹,鏈表等,正是這些結構,才使得容器能夠很簡略完結了動態增加,和各種特性。然後STL中的各種算法,當然是與容器分隔的,通過適配器將容器和算法連接起來,使算法能夠操作容器,這也就是泛型編程的思維的作用。算法中則是數據結構中的算法作為基礎,STL側重功率第一,而這些算法都是世界頂級大師的創造。因為重視功效率,因此在差錯控制上就很少,所以運用時有必要注意,否則出現的差錯你都看不懂。

而STL是根據模板的,因此,想要學好STL,C++的模板需求有深化的學習,還有數據結構的知識。當然,C++的其他基礎知識也是必要的。數據結構學習嚴蔚敏的《數據結構》。書中說明的很精練,初學者要準備學不止一遍的準備,兩遍三遍都是很有必要的。即使有人教導,即使有教師說明,實在的學會和領悟到精華,還需求自己深入的瞭解和實踐,而不是知道了鏈表怎樣增加一個節點那麼簡單。各種算法不是隻是瞭解了就完事了,需求將其間的精華吸收。或許自己最算法再加以改造,進一步提升效率。要知道,書中的算法都是人想出來的,千萬不要信賴聲威,要應戰聲威。

看完才知道C++要這麼學,編程大牛對C++初學者的學習建議

當然,STL只是初學者加深的一個選擇,建議學好。即使暫時不學,把MFC中的容器類學會了,運用上是沒有問題的,想要做到登峰造極,那就有必要學習這些東西了。STL就說這麼多,然後就是具體的領域的學習,數據庫開發的學習,計算機圖形(GDI)開發、網絡開發(Socket編程)等等,這些就根據公司需求做什麼就學什麼。但是最好之前就有些基礎的,而不是什麼也不知道。

這些的學習,首先要學習基礎的理論,比如,網絡開發,TCP/IP協議都不知道,必定不能開發一個好的程序的,知道了基礎理論後,再學習相應的編程開發知識,用到什麼學什麼。此部分說的各個領域的能夠先了解基礎,然後再用到再學,但是,前面說的基礎,有必要是作業之前就要掌握,否則,作業中就有得你受了。不要簡略的信賴別人說什麼不要等什麼都學好的再去作業,但是我要告訴你,不要一點基礎都沒有就去就業。

C++的發展方向這個問題不應該是初學者該考慮的,等你吧C++學會了再去思考這個問題吧!

學習C++是長時間的,有必要沉下心,不浮躁,祝願我們每一個都會成為大神。


喜歡這篇文章的話記得收藏關注,正在學習C/C++的小夥伴可以加群一起提升自己哦!

相關推薦

推薦中...