序言
C++是一門略微比其他語言難一點(diǎn)的語言蒿叠,它更偏向于底層芬探,而且它包含的思想比較多,如果你只學(xué)習(xí)語言本身奈籽,不關(guān)注它所涉及的思想亮元,將會在未來的實(shí)際應(yīng)用中舉步維艱,所以學(xué)習(xí)該門語言需要你付出雙倍的精力來學(xué)習(xí)它的附屬知識唠摹。
學(xué)習(xí)編程語言后你要做哪些
編程語言本身的思想都是貫通的,無論你學(xué)習(xí)C/C++奉瘤,JAVA還是PHP,Object_C,Python勾拉。他們都是一種思想,當(dāng)你學(xué)會其中一門去學(xué)其他的就會變得相對容易盗温。
學(xué)會一門語言后可以去做這些事情藕赞,你主要找一個方向努力即可:
- 傳統(tǒng)開發(fā)(如開發(fā)各種管理系統(tǒng))
- 移動開發(fā)(如開發(fā)手機(jī)APP)
- 互聯(lián)網(wǎng)開發(fā)(如淘寶,京東等)
- 嵌入式開發(fā)(如開發(fā)路由器卖局,手機(jī)斧蜕,空氣凈化器等電子設(shè)備)
當(dāng)你工作一段時間后你可以做職業(yè)方向調(diào)整,一直做技術(shù)砚偶,最終變?yōu)榧夹g(shù)負(fù)責(zé)人或者大牛批销。
C++學(xué)習(xí)路線
C++的入門門檻太高,可能學(xué)習(xí)了一段時間后還做不了什么東西染坯,導(dǎo)致信心大受打擊均芽,進(jìn)而放棄。小編把自己的經(jīng)驗(yàn)分享給大家单鹿,希望幫助新人少走些彎路掀宋。
在此我們不討論具體的技術(shù)細(xì)節(jié),只說我們應(yīng)該學(xué)習(xí)什么東西仲锄。
【文章福利】: 推薦小編的C語言/C++交流群:836880131劲妙!整理了一些個人覺得比較好的學(xué)習(xí)書籍、視頻資料共享在群文件里面儒喊,有需要的可以自行添加镣奋!
入門篇
純小白或者非計(jì)算機(jī)專業(yè)入門的讀者,先找本薄的C++的教程怀愧,比如劉璟與周玉龍合編的《高級C++語言程序設(shè)計(jì)》唆途,這本書搭配了一本《高級C++語言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)》學(xué)習(xí)過程中要自己動手完成實(shí)驗(yàn)指導(dǎo)上的小程序。
在有一定C++語言基礎(chǔ)后掸驱,推薦閱讀《C++ Primer》肛搬。這本書幾乎涵蓋了C++所有的知識點(diǎn)。
高級的毕贼、先進(jìn)的一些內(nèi)容温赔,比如C++11的內(nèi)容,可以看《深入理解C++11:C++ 11新特性解析與應(yīng)用》鬼癣;Boost庫的使用陶贼,可以讀羅劍鋒的《BOOST程序庫完全開發(fā)指南 深入C++“準(zhǔn)”標(biāo)準(zhǔn)庫》啤贩。
理論基礎(chǔ)篇
程序員必備的編程基礎(chǔ):數(shù)據(jù)結(jié)構(gòu)和算法、計(jì)算機(jī)網(wǎng)絡(luò)拜秧、操作系統(tǒng)痹屹、設(shè)計(jì)模式
無論使用哪種編程語言、從事什么編程方向枉氮,只要做編程開發(fā)志衍,這四個計(jì)算機(jī)基礎(chǔ)就無法避開×奶妫可以這么說楼肪,掌握這四個基礎(chǔ)知識比掌握一門編程語言更加重要。
1. 數(shù)據(jù)結(jié)構(gòu)和算法
這個直接決定了面試的成斎乔摹春叫!幾種基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)類型得爛熟于心,比如:字符串泣港、鏈表暂殖、二叉樹、堆当纱、棧央星、隊(duì)列、哈希等惫东;基本的幾大算法也要了如指掌莉给,比如查找、排序廉沮、動態(tài)規(guī)劃颓遏、分治算法等等。
參考資料:
入門篇:《大話數(shù)據(jù)結(jié)構(gòu)》滞时、《算法圖解》叁幢。
基礎(chǔ)篇:《數(shù)據(jù)結(jié)構(gòu)與算法分析》(這本書有三個版本,分別是C語言版本坪稽、C++語言版本和java語言版本)曼玩。
進(jìn)階篇:如果覺得自己水平已經(jīng)還可以,推薦閱讀《算法導(dǎo)論》窒百。
2. 計(jì)算機(jī)網(wǎng)絡(luò)
計(jì)算機(jī)網(wǎng)絡(luò)指的就是TCP/IP協(xié)議棧黍判,可以說它是當(dāng)下互聯(lián)網(wǎng)通信的基石,無論如何一定要對TCP/IP的協(xié)議棧了如指掌篙梢,主要就是學(xué)習(xí)和掌握原理顷帖,包括:ARP協(xié)議、IP協(xié)議、ICMP協(xié)議贬墩、TCP和UDP協(xié)議榴嗅、DNS協(xié)議、HTTP協(xié)議陶舞、HTTPS協(xié)議嗽测。
推薦書籍:
《TCP/IP詳解》(該系列書籍有三卷)。
網(wǎng)絡(luò)知識體系入門推薦:《TCP/IP詳解卷1:協(xié)議》肿孵。
仔細(xì)閱讀完卷1后唠粥,可以根據(jù)自己實(shí)際需要閱讀卷2和卷3。
3. 操作系統(tǒng)
該部分重點(diǎn)包括:進(jìn)程和線程的相關(guān)原理(原子性颁井、并發(fā)、鎖)蠢护、內(nèi)存相關(guān)原理(內(nèi)存分布雅宾、內(nèi)存調(diào)度)。
推薦書籍:《深入理解計(jì)算機(jī)系統(tǒng)》
4. 設(shè)計(jì)模式
設(shè)計(jì)模式有23種葵硕,一般來說眉抬, 23種設(shè)計(jì)模式中我們只需要熟練常見的幾個如:單例模式、工廠模式懈凹、代理模式蜀变、策略模式、模板方法模式介评。
推薦書籍:《大話設(shè)計(jì)模式》库北、《設(shè)計(jì)模式之禪》。
應(yīng)用實(shí)踐編程
這部分會涉及一些工具们陆、編程環(huán)境和具體編程實(shí)踐寒瓦,應(yīng)該說這一部分學(xué)完,自己應(yīng)該能做點(diǎn)東西出來或者說能看懂一些實(shí)際項(xiàng)目的代碼坪仇。
1. Linux操作系統(tǒng)的使用
很多人編程入門的初學(xué)者都是在Windows環(huán)境上進(jìn)行的杂腰,而實(shí)際企業(yè)級開發(fā)幾乎是Linux環(huán)境下進(jìn)行的,所以Linux系統(tǒng)必須要會椅文,包括:常見的Linux操作命令喂很、基本的Shell編程。
推薦書籍:《鳥哥的Linux私房菜》
2. 編譯/調(diào)試工具
首先是跟編譯相關(guān)的:編譯工具皆刺!
很多人學(xué)C語言少辣、C++都在類似Visual Studio這種集成IDE里進(jìn)行代碼編譯,這個其實(shí)也用了編譯器羡蛾,只不過是微軟自家的MS編譯器毒坛,而且所有操作均可視化。而企業(yè)里開發(fā)很少會基于Windows系統(tǒng),所以Linux平臺上的編譯器更為重要煎殷,最典型的就是GCC屯伞,甚至有些公司有自己定制過的交叉編譯工具,但沒關(guān)系豪直,只要 GCC熟悉劣摇,其他問題都不大。
最后說到調(diào)試工具弓乙,Linux平臺上的 GDB調(diào)試工具要熟練使用末融,會借助于它進(jìn)行調(diào)試。
推薦資料: 這部分沒有書可推薦暇韧,英文好的同學(xué)可以直接看 GNU官網(wǎng)關(guān)于 GCC和 GDB的文檔勾习,中文材料可以看:《debuging with gdb》(中文版)和陳皓先生的《跟我一起寫makefile》
3. Linux環(huán)境編程
企業(yè)里C語言和C++幾乎都是基于Linux平臺的,這一部分我們沒辦法避開
- Linux系統(tǒng)編程
眾所周知懈玻,Windows系統(tǒng)編程里有各種各樣的Windows API巧婶,同理Linux系統(tǒng)API的使用就更加重要。
- 多線程編程
此處指的是多線程編程實(shí)踐相關(guān)的東西涂乌,一般包括:線程艺栈、資源、信號湾盒、同步湿右、互斥、鎖等等一些具體的編程方法罚勾。
- 網(wǎng)絡(luò)編程
此處的網(wǎng)絡(luò)編程主要指的是具體Linux系統(tǒng)上的網(wǎng)絡(luò)編程 API和 IO函數(shù)的編程實(shí)踐毅人。
推薦書籍: 這三部分綜合在一起,推薦必看書籍包括《Unix環(huán)境高級編程》尖殃、《inux高性能服務(wù)器編程》堰塌、《POSIX多線程程序設(shè)計(jì)》
項(xiàng)目經(jīng)驗(yàn)
以上的內(nèi)容如果都精通了,也算是個比較厲害的程序員了分衫。但是對程序員來說场刑,項(xiàng)目經(jīng)驗(yàn)更加重要。一個好的項(xiàng)目可以讓你把各種技術(shù)進(jìn)行綜合運(yùn)用蚪战,并且能學(xué)到一些新的知識牵现。比如說做游戲的就需要學(xué)習(xí)圖形方面的知識,做播放器的要學(xué)習(xí)編解碼器方面的知識邀桑。
很多程序員會忽略項(xiàng)目的經(jīng)驗(yàn)瞎疼,而單純的談技術(shù)能力,這是錯誤的壁畸。其實(shí)這就是理論和實(shí)踐的關(guān)系贼急,技術(shù)就是理論知識茅茂,做項(xiàng)目就是實(shí)踐,理論對實(shí)踐有知道作用太抓,實(shí)踐能加深我們對理論的深入理解空闲。
溝通能力
溝通能力是一個高級程序員要具備的軟實(shí)力。
我這里想說的溝通能力并不是一般說的能說會道走敌,夸夸其談碴倾,說話天花亂墜。而是建立在技術(shù)基礎(chǔ)之上的溝通能力掉丽。
總結(jié)
最后跌榔,C語言學(xué)習(xí)方法總結(jié)一句話:
多看,多敲捶障,多思考
把C++的學(xué)習(xí)變成一種樂趣僧须。
推薦一下小編的C/C++學(xué)習(xí)交流群:836880131 群里有不錯的學(xué)習(xí)教程,從入門到項(xiàng)目實(shí)戰(zhàn)项炼。學(xué)習(xí)開發(fā)用到的開發(fā)工具担平,完整項(xiàng)目源碼免費(fèi)分享等以及解答學(xué)習(xí)問題。大家在學(xué)習(xí)過程中有不懂的可以加入一起交流芥挣,對你學(xué)習(xí)C/C++語言會有很大幫助驱闷!
C++的世界是復(fù)雜的耻台,也代表著它是無窮無盡的空免,新的想法就意味著全新的程序,自己編寫程序盆耽,就好像遨游在我的世界中蹋砚,雖然我們一定會遇到各種BUG和崩潰的程序,但趁著發(fā)未落摄杂、鬢未白坝咐,認(rèn)真學(xué)習(xí)C++吧!N龌帧墨坚!