學(xué)習(xí)啦>學(xué)習(xí)方法>通用學(xué)習(xí)方法>學(xué)習(xí)經(jīng)驗(yàn)>

如何才能高效的學(xué)習(xí)編程語(yǔ)言

時(shí)間: 欣怡1112 分享

  編程語(yǔ)言種類(lèi)繁多,用途各異,然而一旦掌握其中之一,其他的也就迎刃而解。那么如何才能高效的學(xué)習(xí)編程語(yǔ)言?以下是學(xué)習(xí)啦小編分享給大家的高效的學(xué)習(xí)編程語(yǔ)言的方法,希望可以幫到你!

  高效的學(xué)習(xí)編程語(yǔ)言的方法

  1、確定目標(biāo)

  Learn a Programming Language Step 1 Version 2.jpg

  學(xué)習(xí)編程語(yǔ)言既充滿樂(lè)趣,又充滿挑戰(zhàn)。有些花費(fèi)多年時(shí)間學(xué)習(xí)一門(mén)編程語(yǔ)言的大學(xué)生到最后也無(wú)法確定自己的方向到底是什么,所以,在你開(kāi)始前,最好先想清楚,你是想成為一名程序員,還是游戲開(kāi)發(fā)者,還是機(jī)器人專(zhuān)家?

  2、選擇一種編程語(yǔ)言

  Learn a Programming Language Step 2 Version 2.jpg

  初學(xué)者一定要從主流語(yǔ)言開(kāi)始學(xué)習(xí),比如中級(jí)語(yǔ)言C和C++。這兩種語(yǔ)言是任何一名合格、專(zhuān)業(yè)的程序員都必須掌握的,因?yàn)樗鼈兎Q(chēng)得上是軟件開(kāi)發(fā)界的主流。但是最好不要從高級(jí)語(yǔ)言開(kāi)始學(xué),如Java,因?yàn)檫@些語(yǔ)言對(duì)于初學(xué)者來(lái)說(shuō)難度未免太高(高級(jí)語(yǔ)言可以以后再學(xué),但是C語(yǔ)言和C++應(yīng)該作為你的基礎(chǔ))。然而對(duì)于完完全全的門(mén)外漢的來(lái)說(shuō),可能C和C++都有點(diǎn)困難,那么你也可以從Python開(kāi)始學(xué),這種語(yǔ)言被大家廣泛認(rèn)為是適合初學(xué)者的。

  此外,每一種語(yǔ)言都要學(xué)習(xí)至少一年。要熟悉編程范式,尤其是面向過(guò)程及面向?qū)ο筮@兩種;要廣泛閱讀,多用編譯器及IDE(網(wǎng)上有許多免費(fèi)的)練習(xí)編程。

  掌握一種語(yǔ)言后,先不要急著運(yùn)用,而要去多買(mǎi)些數(shù)據(jù)結(jié)構(gòu)方面的書(shū)來(lái)看,學(xué)習(xí)搜索、分類(lèi)、二叉樹(shù)及鏈表創(chuàng)建等概念。因?yàn)闊o(wú)論你是要制作游戲還是開(kāi)發(fā)軟件,數(shù)據(jù)結(jié)構(gòu)都是必須要考慮的。

  隨后,你就可以開(kāi)始學(xué)習(xí)更加高難度的語(yǔ)言,如Java。對(duì)于進(jìn)階學(xué)習(xí)者來(lái)說(shuō),可能還需要學(xué)習(xí)分而治之(Devide-and-conquer)、貪婪算法(Greedy Method)及回溯(Backtracking)等計(jì)算機(jī)算法,這又要花上至少一年的時(shí)間。

  3、熱愛(ài)數(shù)學(xué)

  Learn a Programming Language Step 3 Version 2.jpg

  許多人都由于這樣那樣的原因而對(duì)數(shù)學(xué)頗不感冒,而作為一名優(yōu)秀的程序員,卻要整天與一籮筐的數(shù)學(xué)問(wèn)題打交道。正如你所見(jiàn),學(xué)編程真的是說(shuō)起來(lái)容易做起來(lái)難,而它的難并不在于你對(duì)一種語(yǔ)言的了解程度,而在于這種語(yǔ)言牽扯到的數(shù)學(xué)問(wèn)題。編程中的大多數(shù)問(wèn)題都能在數(shù)學(xué)模型(如斐波那契數(shù)列、弗洛伊德算法、傅立葉級(jí)數(shù)等等)中找到端倪,更不用說(shuō)數(shù)學(xué)公式在解決編程問(wèn)題中的廣泛應(yīng)用了。所以,現(xiàn)在開(kāi)始,去學(xué)習(xí)各種公式及其特性吧,還要仔細(xì)鉆研算術(shù)及微積分,因?yàn)椴欢當(dāng)?shù)學(xué),就好比巧婦難為無(wú)米之炊。

  4、要保持內(nèi)在的動(dòng)力

  Learn a Programming Language Step 4 Version 3.jpg

  記住,羅馬建成非一日之功,所以不要在短時(shí)間里給自己填壓太多知識(shí)。學(xué)習(xí)編程語(yǔ)言并不容易,因?yàn)檫@是一門(mén)需要時(shí)常調(diào)用邏輯思維的知識(shí)。你要做的,就是理解程序背后的邏輯,然后不斷練習(xí),直到熟能生巧為止。如果你只是死記硬背一些程序,那么你就錯(cuò)過(guò)了學(xué)習(xí)過(guò)程中的樂(lè)趣,而且一些概念你也未必真的理解。所以,學(xué)習(xí)編程需要不斷地挑戰(zhàn)自己,但也不要操之過(guò)急。

  5、要有耐心

  Learn a Programming Language Step 5 Version 3.jpg

  有時(shí),即使是卓有成就的程序員也會(huì)被簡(jiǎn)單的小問(wèn)題難住,所以,遇到問(wèn)題時(shí),一定要讓自己放松下來(lái)。找張草稿紙,想想有什么現(xiàn)成的公式可用,或者自己想一個(gè)公式出來(lái)。你看,這就是你為什么要學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和數(shù)學(xué)。在成為熟練的程序員以前,一個(gè)人往往需要花費(fèi)大把的時(shí)間來(lái)構(gòu)思用于解決特定問(wèn)題的程序。這一過(guò)程中,你可以去Project Euler或者Codecademy這樣的網(wǎng)站上看看,上面有簡(jiǎn)單的編程作業(yè)及教程,可以用以練習(xí)并提高技能。

  6、絕不輕言放棄

  Learn a Programming Language Step 6 Version 2.jpg

  如果你在編程過(guò)程中經(jīng)常粗心犯錯(cuò),那么整個(gè)過(guò)程就會(huì)變成一場(chǎng)曠日持久的折磨,然而一旦問(wèn)題解決,所有的沮喪都會(huì)煙消云散。在學(xué)習(xí)各種算法(傅立葉級(jí)數(shù)、向量、邊界問(wèn)題、線性代數(shù)、矩陣)的同時(shí),也要注意休息。在解決特別復(fù)雜的問(wèn)題時(shí),要按時(shí)放松大腦,讓困擾在心頭的難題暫時(shí)轉(zhuǎn)移到潛意識(shí)中。另外要有合理的工作計(jì)劃,當(dāng)你編程編到倦怠的時(shí)候,就可以小憩一會(huì)兒,或者出去散一會(huì)兒步,但是永遠(yuǎn)不要說(shuō)放棄。

  高效的學(xué)習(xí)編程語(yǔ)言的建議

  明確目的,外部模型,內(nèi)部型型

  任何時(shí)候你學(xué)習(xí)使用新工具,明確學(xué)習(xí)的目的,外部模型和內(nèi)部模型都是十分有用的。

  當(dāng)你了解了工具的目的時(shí),你的大腦會(huì)加載有用的上下文細(xì)節(jié),使你更容易吸收新知識(shí)。這就好比拼圖:當(dāng)你看到完整拼圖之后,更容易把各部件拼到一起。這個(gè)道理適用于語(yǔ)言本身及及語(yǔ)言庫(kù)。

  工具的外部模型就是它呈現(xiàn)出來(lái)的接口以及它想讓你思考問(wèn)題解決的方式。Clojure 的外部模型就是一個(gè)Lisp,它想讓你把編程當(dāng)做大部分以數(shù)據(jù)為中心,不可變的轉(zhuǎn)換過(guò)程。Ansible 希望你把服務(wù)器的整備工作想成定義最終狀態(tài),而不是定義抵達(dá)那種狀態(tài)所要采取的步驟。

  工具的內(nèi)部模型就是如何將輸入到其接口轉(zhuǎn)換成一些底層的抽象。Clojure 把 Lisp 轉(zhuǎn)換成 JVM 的字節(jié)碼。Ansible 把任務(wù)定義轉(zhuǎn)換成了 shell 命令。在一個(gè)理想國(guó)中,你不需要理解工具的內(nèi)部模型,但事實(shí)上,理解內(nèi)部模型總是有用的,因?yàn)樵谀承┛瓷先ッ曰蠡蛘呙艿牟糠炙梢宰屇阌袀€(gè)一致的視圖。舉個(gè)例子,當(dāng) DNA 雙螺旋模型被發(fā)現(xiàn)的時(shí)候,它幫助科學(xué)家們了解更高級(jí)的現(xiàn)象。從我的角度來(lái)講,當(dāng)然,這篇博文也是歷來(lái)所有偉大科學(xué)成就之一。

  很多教程經(jīng)?;煜ぞ叩耐獠亢蛢?nèi)部模型,使學(xué)習(xí)者感到困惑。意識(shí)到這點(diǎn)可以幫你輕松辨別何時(shí)你會(huì)感到沮喪。

  間隔重復(fù)幫助記憶

  間隔重復(fù)被證明是長(zhǎng)期記憶中新信息編碼的最佳方法之一。 這個(gè)想法是以不斷增加的時(shí)間間隔來(lái)測(cè)驗(yàn)自己,以使用最少重復(fù)次數(shù)最小化記憶衰減。 衛(wèi)報(bào)寫(xiě)了一篇很好的介紹性文章。

  睡眠和練習(xí)

  保重身體!身體可不僅僅是你腦袋的載體。如果你想保持專(zhuān)注和高效的學(xué)習(xí),就要足夠的睡眠和練習(xí),而不是(beats the pants off)狂飲咖啡因和能量飲料。

  學(xué)習(xí)編程語(yǔ)言的誤區(qū)

  誤區(qū)1:啃完幾本書(shū),就能系統(tǒng)的學(xué)會(huì)編程了

  是什么讓你相信買(mǎi)一本書(shū)就能學(xué)會(huì)編程?是幻覺(jué)。

  編程方面的書(shū)一般挺厚的,拿在手里,感覺(jué)知識(shí)沉甸甸的,翻開(kāi)一看,感覺(jué)講的很系統(tǒng)很詳細(xì)。你會(huì)覺(jué)得自己已經(jīng)下定決心要學(xué)好編程了。但你絕對(duì)不會(huì)讀完超過(guò)五章的內(nèi)容。

  不是因?yàn)槟闾珣卸?,而是因?yàn)閯傞_(kāi)始學(xué)習(xí)就深入到細(xì)枝末節(jié)中并不是一個(gè)好的選擇,練習(xí)是學(xué)習(xí)一門(mén)技能最重要的環(huán)節(jié),而如果不上手練習(xí),你會(huì)把書(shū)里教的知識(shí)忘得一干二凈。

  誤區(qū)2:先學(xué)別的語(yǔ)言做鋪墊,再學(xué)你想學(xué)的語(yǔ)言

  總有人會(huì)告訴你,「打好基礎(chǔ)很重要,你得先學(xué) C 語(yǔ)言。」

  或者是,「直接學(xué)編程語(yǔ)言太難了,你可以先學(xué) Scratch 培養(yǎng)感覺(jué)。」

  這簡(jiǎn)直是人為加長(zhǎng)學(xué)習(xí)路徑。

  誤區(qū)3:看著源碼學(xué)編程,對(duì)著敲一遍

  這種觀點(diǎn)說(shuō),github 上不是有很多好的開(kāi)源項(xiàng)目嘛,你照著敲一遍代碼,然后就能領(lǐng)悟了。

  這應(yīng)該是受了應(yīng)試教育時(shí)背課文的迫害吧……對(duì)于初學(xué)者,這樣學(xué)習(xí)效率太低了,因?yàn)槊恳恍心愣伎床欢?,而且沒(méi)有思考的模仿只是機(jī)械運(yùn)動(dòng)而已,除了提升打字速度應(yīng)該不會(huì)有其他任何效果。

  好了,說(shuō)了這么多誤區(qū),那么對(duì)的是什么呢?如果你學(xué)習(xí)編程是為了做出點(diǎn)東西出來(lái),而不是為了做科研去研究各種編程語(yǔ)言語(yǔ)法之間的細(xì)微差異,那么上手做項(xiàng)目是最快的學(xué)習(xí)路徑。

  但是,如果沒(méi)有選擇正確的學(xué)習(xí)方法,這其中的痛苦,足以讓一個(gè)初學(xué)者沒(méi)辦法堅(jiān)持下去。編程是即時(shí)反饋的,當(dāng)你學(xué)其他技能,不會(huì)有人對(duì)著你大喊「你錯(cuò)了!」,但是程序會(huì)向你持續(xù)報(bào)錯(cuò)。而當(dāng)你嘗試了幾小時(shí),用了各種方法,程序卻在說(shuō),「你還是錯(cuò)的!」,你會(huì)很沮喪甚至很憤怒。

  那么,從寫(xiě)出第一句 hello world,到能上手做一個(gè)真實(shí)的項(xiàng)目,到底需要怎么學(xué)?

  結(jié)合了學(xué)習(xí)的認(rèn)知模型,我們總結(jié)了一套適用于初學(xué)者的編程學(xué)習(xí)方法,也是實(shí)戰(zhàn)課程體系的核心思路:

  1、循序漸進(jìn):把一個(gè)真實(shí)項(xiàng)目拆解成若干階段,分階段學(xué)習(xí)、練習(xí),逐漸提升難度

  2、杠桿知識(shí):學(xué)習(xí)和項(xiàng)目最相關(guān)的核心知識(shí),借用能提升開(kāi)發(fā)效率的工具框架,讓最少的投入獲得最大的杠桿產(chǎn)出

  3、建立連接:人腦是通過(guò)突觸相連接的,學(xué)習(xí)的過(guò)程就是在強(qiáng)化已有的連接,建立新的連接。而根據(jù)已經(jīng)掌握的知識(shí)點(diǎn)拓展、用生活中的例子去類(lèi)比,能讓你更快的學(xué)會(huì)。

  4、持續(xù)反饋:通過(guò)老師或者是搜索,掌握獨(dú)立解決排錯(cuò)的方法,最終掌握自學(xué)的方法。

  當(dāng)然,這些只是很簡(jiǎn)要的概述,想要真正應(yīng)用這套方法去制定自己的學(xué)習(xí)計(jì)劃,需要一個(gè)系列連載來(lái)詳細(xì)介紹具體的執(zhí)行方法才行。掌握這套學(xué)習(xí)方法之后,你可以根據(jù)自己的情況去選擇適合自己目標(biāo)的學(xué)習(xí)材料,從而少走彎路。

猜你喜歡:

1.如何才能快速的學(xué)習(xí)編程技術(shù)

2.c語(yǔ)言學(xué)習(xí)心得6篇

3.有效學(xué)習(xí)的十大方法

4.編程語(yǔ)言用什么方法學(xué)習(xí)

5.設(shè)計(jì)編程需要什么語(yǔ)言

3749425