編程新手入門學(xué)習(xí)方法及書籍推薦(如何學(xué)習(xí)電腦編程)
C是一個(gè)結(jié)構(gòu)化語(yǔ)言,它的重點(diǎn)在于算法和數(shù)據(jù)結(jié)構(gòu)。C程序的設(shè)計(jì)首要考慮的是如何通過一個(gè)過程,對(duì)輸入(或環(huán)境條件)進(jìn)行運(yùn)算處理得到輸出(或?qū)崿F(xiàn)過程(事務(wù))控制)。
C++,首要考慮的是如何構(gòu)造一個(gè)對(duì)象模型,讓這個(gè)模型能夠契合與之對(duì)應(yīng)的問題域,這樣就可以通過獲取對(duì)象的狀態(tài)信息得到輸出或?qū)崿F(xiàn)過程(事務(wù))控制。 所以C與C++的最大區(qū)別在于它們的用于解決問題的思想方法不一樣。之所以說(shuō)C++比C更先進(jìn),是因?yàn)椤?設(shè)計(jì)這個(gè)概念已經(jīng)被融入到C++之中 ”。
C與C++的最大區(qū)別:在于它們的用于解決問題的思想方法不一樣。之所以說(shuō)C++比C更先進(jìn),是因?yàn)椤?設(shè)計(jì)這個(gè)概念已經(jīng)被融入到C++之中 ”,而就語(yǔ)言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,錯(cuò)!算法是程序設(shè)計(jì)的基礎(chǔ),好的設(shè)計(jì)如果沒有好的算法,一樣不行。而且,“C加上好的設(shè)計(jì)”也能寫出非常好的東西。
接下來(lái)會(huì)陸續(xù)介紹各自編程語(yǔ)言和各個(gè)領(lǐng)域的學(xué)習(xí)建議,本文先講C語(yǔ)言。
1、C語(yǔ)言適合當(dāng)?shù)谝婚T編程語(yǔ)言學(xué)習(xí)
①、C語(yǔ)言語(yǔ)法相對(duì)簡(jiǎn)單,但又比較完整和嚴(yán)謹(jǐn),包含該有的各種元素。學(xué)完C語(yǔ)言語(yǔ)法,要學(xué)習(xí)其它編程語(yǔ)言就很容易了。
②、C語(yǔ)言接近底層,可以了解內(nèi)存和計(jì)算機(jī)的基本原理。
③、許多基礎(chǔ)課程比如算法與數(shù)據(jù)結(jié)構(gòu)教材都是以C語(yǔ)言為例子的,特別是中國(guó)版的書籍。
如果你是大一剛開始學(xué)習(xí)編程,建議選擇C語(yǔ)言做入門。
2、C語(yǔ)言學(xué)習(xí)的步驟
學(xué)習(xí)語(yǔ)法和基礎(chǔ)算法 ---> 了解C語(yǔ)言應(yīng)用領(lǐng)域 ---> 確定是否從事C語(yǔ)言相關(guān)工作 ---> 深入學(xué)習(xí)基礎(chǔ)課程 ---> 學(xué)習(xí)領(lǐng)域相關(guān)的課程
3、C語(yǔ)言語(yǔ)法學(xué)習(xí)
①、書籍推薦:
推薦《C程序設(shè)計(jì)語(yǔ)言》和 習(xí)題解答
②、學(xué)習(xí)建議
視頻結(jié)合書籍,把書籍上的代碼都一個(gè)個(gè)自己敲出來(lái)運(yùn)行,做到每段小程序都熟悉記憶。
不要一直在那邊背語(yǔ)法,多寫代碼,多演化代碼,驗(yàn)證語(yǔ)法。
建議以Linux為學(xué)習(xí)環(huán)境,掌握Linux下的相關(guān)工具,比如GCC
③、驗(yàn)證結(jié)果
《C程序設(shè)計(jì)語(yǔ)言:習(xí)題解答》里面的題目不用看書可以自己敲打?qū)崿F(xiàn)出來(lái)就差不多了。
可以用計(jì)算機(jī)等級(jí)考試二級(jí)(C語(yǔ)言)的歷年試題驗(yàn)證學(xué)習(xí)結(jié)果。也可以自己報(bào)名考試看看,以95分做目標(biāo)。
④、進(jìn)階學(xué)習(xí)
可以先跳過這個(gè),看看是否從事C語(yǔ)言相關(guān)工作,如果是的話,再來(lái)看這個(gè)。
語(yǔ)法進(jìn)階書籍推薦:
邏輯思維進(jìn)階
南開大學(xué)C語(yǔ)言100題,自己實(shí)現(xiàn)代碼并驗(yàn)證。繼續(xù)進(jìn)階,可以刷OJ
4、C語(yǔ)言應(yīng)用領(lǐng)域
是不是有些同學(xué)學(xué)完C語(yǔ)法后都不知道做什么項(xiàng)目。因?yàn)閱渭儗W(xué)會(huì)C語(yǔ)法開發(fā)不了什么項(xiàng)目,你需要掌握C語(yǔ)言應(yīng)用領(lǐng)域,然后學(xué)習(xí)周邊相關(guān)知識(shí)。
相對(duì)于PHP、Java,C語(yǔ)言的開發(fā)效率較低,沒有框架甚至沒有庫(kù)。數(shù)據(jù)結(jié)構(gòu)要自己寫,對(duì)操作系統(tǒng)底層要很熟悉,代碼很容易出現(xiàn)內(nèi)存相關(guān)的錯(cuò)誤。
C語(yǔ)言主要用于驅(qū)動(dòng)開發(fā)、操作系統(tǒng)、內(nèi)核開發(fā),嵌入式(單片機(jī))、交換機(jī)、路由器等網(wǎng)絡(luò)設(shè)備的開發(fā)。
如果你想要會(huì)用C語(yǔ)言開發(fā)項(xiàng)目,就需要掌握相關(guān)領(lǐng)域知識(shí)。
5、方向選擇
學(xué)完語(yǔ)法和了解C語(yǔ)言應(yīng)用領(lǐng)域后,就要面臨著選擇。三個(gè)方向:①、選擇從事C語(yǔ)言相關(guān)的工作;②、選擇繼續(xù)學(xué)習(xí)C++,C++主要應(yīng)用領(lǐng)域游戲服務(wù)端開發(fā)、圖形圖像、C/S客戶端界面開發(fā)、中間件;③、選擇其它方向的學(xué)習(xí),比如Java
6、深入學(xué)習(xí)基礎(chǔ)課程
選擇從事C/C++語(yǔ)言相關(guān)的工作,就需要深入學(xué)習(xí)基礎(chǔ)課程。因?yàn)閺氖翪++相關(guān)工作,往往對(duì)性能有要求,需要理解操作系統(tǒng)和計(jì)算機(jī)組成原理。
以下課程在從事C++相關(guān)工作是應(yīng)該要掌握的:
《算法與數(shù)據(jù)結(jié)構(gòu)》
《計(jì)算機(jī)組織與體系結(jié)構(gòu)》
《編譯原理》
《操作系統(tǒng)原理》
有能力的可以學(xué)習(xí)《Linux內(nèi)核結(jié)構(gòu)》
具體每個(gè)基礎(chǔ)課程的學(xué)習(xí)就不展開了,以后談。學(xué)習(xí)書籍建議,可以參考清華北大計(jì)算機(jī)系相關(guān)課程指定的教程,返回上一級(jí),搜索數(shù)字 0001 查看北京大學(xué)和清華大學(xué) 計(jì)算機(jī)專業(yè)本科完整課程表。
7、學(xué)習(xí)領(lǐng)域相關(guān)的課程
這個(gè)就比較廣泛,根據(jù)希望從事的領(lǐng)域有選擇性的學(xué)習(xí)。比如,你想從事嵌入式開發(fā),那你就要學(xué)習(xí) 嵌入式操作系統(tǒng)等。
8、項(xiàng)目實(shí)踐
學(xué)完理論,找項(xiàng)目嘗試練習(xí)。
哪里找項(xiàng)目呢?
①、找培訓(xùn)教程,別人培訓(xùn)班的實(shí)踐題目或者看網(wǎng)上培訓(xùn)教程的實(shí)踐題目
②、找高年級(jí)或老師幫忙布置實(shí)踐題目
③、通過Google、GitHub等程序猿社區(qū),去找找實(shí)踐題目
找到題目后,看看自己一個(gè)人或者組織幾個(gè)人能不能搞定。如果搞不定,再根據(jù)所缺的知識(shí)去補(bǔ)充知識(shí)。
請(qǐng)養(yǎng)成良好的閱讀習(xí)慣,看完如果覺得喜歡的話請(qǐng)關(guān)注轉(zhuǎn)發(fā)評(píng)論收藏一下 感謝!
————————
對(duì)于很多初學(xué)者來(lái)說(shuō),有一群一起學(xué)習(xí)一起解答的小伙伴很重要!如果你想更好地提升你的編程核心能力(內(nèi)功)不妨從現(xiàn)在開始!
編程學(xué)習(xí)書籍分享:
編程學(xué)習(xí)視頻分享:
整理分享(多年學(xué)習(xí)的源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長(zhǎng)比自己琢磨更快哦!