如何才能有效的學(xué)習(xí)程序語(yǔ)言
學(xué)習(xí)編程語(yǔ)言不外乎有兩種情況:做好了,你會(huì)感受到掌握新事物之后的快感;做不好,就會(huì)感覺(jué)到接二連三的沮喪,直至放棄。為了幫助大家更好的學(xué)習(xí)程序語(yǔ)言, 以下是學(xué)習(xí)啦小編分享給大家的學(xué)習(xí)程序語(yǔ)言的方法,希望可以幫到你!
學(xué)習(xí)程序語(yǔ)言的方法一
持續(xù)測(cè)試自己以抵抗勝任力錯(cuò)覺(jué)
最不濟(jì)的學(xué)習(xí)方法中的一種就是重讀或者重看材料。這種重復(fù)會(huì)給你一種感覺(jué)——似乎不用花什么氣力,你就理解了話(huà)題所涵蓋的內(nèi)容。研究者們把這種現(xiàn)象稱(chēng)作勝任力錯(cuò)覺(jué)。
更好的一種方式(你可以掌握的最佳技巧之一)則是持續(xù)地測(cè)試自己。不要重讀一個(gè)函數(shù)、類(lèi)或者一個(gè)對(duì)象是什么,而是讓自己定義這些概念或者把它們用到短小的程序當(dāng)中——強(qiáng)迫你用某種方式顯示自己的理解。這一過(guò)程常常很不舒服的,但是對(duì)形成長(zhǎng)期記憶非常有效。更進(jìn)一步,你可以在閱讀材料之前先去行測(cè)試,舉個(gè)例子,嘗試在閱讀一個(gè)章節(jié)之前做做練習(xí)。值得一提的是,這也被證明有助于記憶的形成。
測(cè)試對(duì)于學(xué)習(xí)的顯著影響被稱(chēng)為測(cè)試效用,下面是一些具體方法可以利用:
在閱讀章節(jié)或者看視頻之前,嘗試猜測(cè)你將要學(xué)習(xí)的東西,并寫(xiě)下來(lái)。
在閱讀章節(jié)之前先做做這個(gè)章節(jié)的練習(xí)題。
一直做練習(xí),即使是最難的那些。暫時(shí)(永遠(yuǎn))放棄一個(gè)練習(xí)也是可以的,不過(guò)至少要嘗試一遍。(下個(gè)章節(jié)會(huì)詳細(xì)談到)
閱讀短小的程序并且嘗試不看源碼重新寫(xiě)一個(gè)。或者,再小一些,寫(xiě)個(gè)函數(shù)也行。
在學(xué)習(xí)了對(duì)象、類(lèi)、方法或者高階函數(shù)等新概念之后,立即編碼做示例。
創(chuàng)建闡述這些概念的圖示,以及這些概念之間的區(qū)別和聯(lián)系。
學(xué)習(xí)程序語(yǔ)言的方法二
把你剛剛學(xué)到的概念寫(xiě)成博客。
嘗試把概念解釋給非技術(shù)的朋友聽(tīng)。(在寫(xiě)《Clojure for Brave and True》的時(shí)候,我常常這么干。這樣能夠以外行的話(huà)闡述一個(gè)想法,進(jìn)而迫使你深入理解想法本身。)
這些技巧的大部分都要規(guī)約到編寫(xiě)代碼上!說(shuō)到編程,由于程序都是重文本和概念性的,所以很容易以為我們僅僅通過(guò)閱讀(代碼)就在學(xué)習(xí)。但同時(shí)它也是一門(mén)手藝,就像其它手藝一樣你得操練才能嫻熟。編碼是露露你對(duì)程序作有錯(cuò)誤假設(shè)的最佳方式。你越快地這么做,就會(huì)越快地糾正錯(cuò)誤和提升技能。
如果你想了解更多測(cè)試效應(yīng)的事情,敬請(qǐng)查看堅(jiān)持:成功學(xué)習(xí)的科學(xué)(make it stick: The Science of Successful Learning)。
學(xué)習(xí)程序語(yǔ)言的方法三
花時(shí)間放空自己
如果你糾結(jié)在一個(gè)問(wèn)題上,或者對(duì)剛才讀到的東西不能理解,就去散散步甚或洗個(gè)澡 —— 只要能進(jìn)入一種舒緩、放空的狀態(tài)就行。解除障礙的最佳方式之一就是歇一會(huì)兒,這可能聽(tīng)上去有點(diǎn)反直覺(jué),但確實(shí)如此。
問(wèn)題是,當(dāng)全神貫注解決問(wèn)題時(shí),我們很容易陷入思維障礙(mental blinder)。我的意思是,這差不多就是“關(guān)注”(字面上)的意思。不過(guò),全神貫注會(huì)導(dǎo)致我們只能一直探索解決方案空間的一小部分。一旦放空,我們的潛意識(shí)就可以探索并聯(lián)結(jié)我們經(jīng)驗(yàn)中的廣泛領(lǐng)域。
對(duì)我來(lái)說(shuō),這就像當(dāng)你試圖在紙質(zhì)地圖上找到一個(gè)目的地(是否還記得嗎?)。你不用刻意就確信你想抵達(dá)的城市應(yīng)該就在這里!在地圖的左上角的區(qū)域,所以你看了一遍又一遍,都沒(méi)有成功。然后你放下地圖,做了深呼吸并讓目光游離了一會(huì)兒。當(dāng)你重新看地圖時(shí),確切的地點(diǎn)立馬映入眼簾。
我們?cè)?jīng)都有過(guò)這樣的經(jīng)驗(yàn),在洗澡的時(shí)候突發(fā)靈感。現(xiàn)在你對(duì)于為什么這么做有了更好的了解,那么也就能刻意地使用這個(gè)技巧。個(gè)人來(lái)講,如果糾結(jié)住某事,我真的會(huì)洗個(gè)澡,這個(gè)技巧的功效顯著,而且我是多么干凈(注:洗澡這件事)。
如果你想多學(xué)一些關(guān)于思考的關(guān)注和分散模式,敬請(qǐng)查看A Mind for Numbers: How to Excel at Math and Science (Even If You FLunked Algebra)
學(xué)習(xí)程序語(yǔ)言的方法四
別浪費(fèi)時(shí)間沮喪
和上一個(gè)章節(jié)相關(guān):別浪費(fèi)時(shí)間為代碼沮喪了。沮喪會(huì)讓我們做一些愚蠢的事情,比如重新編譯或者重刷瀏覽器,期望這次會(huì)有所不同。
把沮喪看作你的知識(shí)有差距的信號(hào)。一旦你意識(shí)到自己沮喪了,它可以幫你后退一步,清晰地識(shí)別問(wèn)題。如果你寫(xiě)的代碼不起作用,坦率地向自己或者別人說(shuō)明你期望的結(jié)果。使用科學(xué)的方法,就非預(yù)期行為的根因提出一個(gè)假說(shuō)。然后測(cè)試你的假說(shuō)。再次試驗(yàn)后,如果依然解決不了,就把這個(gè)問(wèn)題放到一邊,待會(huì)兒回來(lái)。
在一些似乎沒(méi)法解決的問(wèn)題上,我不知有多少次惱怒地扔掉了自己的筆記本電腦。隔天再看,一個(gè)顯而易見(jiàn)的解決方案立馬跳入腦海。甚至上周就發(fā)生過(guò)。
學(xué)習(xí)程序語(yǔ)言的方法五
確認(rèn)你正在處理語(yǔ)言的哪個(gè)方面
個(gè)人觀(guān)點(diǎn),我覺(jué)得記住這些是有用的——當(dāng)學(xué)習(xí)一門(mén)編程語(yǔ)言的時(shí)候,你實(shí)際上正在學(xué)四件事情。
怎么寫(xiě)代碼:語(yǔ)法、語(yǔ)義以及資源管理
語(yǔ)言的范式:面向?qū)ο螅瘮?shù)式,邏輯等
產(chǎn)物的生態(tài)圈:如何構(gòu)建、運(yùn)行可執(zhí)行文件以及如何使用庫(kù)
工具:編輯器,編譯器,調(diào)試器,代碼質(zhì)量檢測(cè)器(linter)
這四項(xiàng)很容易搞混,不幸的結(jié)果是,當(dāng)你遇到問(wèn)題最終完全找錯(cuò)了地方。
舉個(gè)例子,某些完全的編程新手,可能準(zhǔn)備開(kāi)始構(gòu)建iOS應(yīng)用。他們可能會(huì)試著讓自己的應(yīng)用運(yùn)行在朋友的手機(jī)上,只能看到有關(guān)需要開(kāi)發(fā)人員證書(shū)或其他信息的消息。這是產(chǎn)物生態(tài)圈的一部分,不過(guò)小白可能將此視為編寫(xiě)代碼的問(wèn)題。他們可能會(huì)瀏覽自己寫(xiě)的每行代碼來(lái)嘗試解決問(wèn)題,盡管問(wèn)題和代碼沒(méi)有半毛錢(qián)關(guān)系。
如果我系統(tǒng)地處理這些方面,我會(huì)發(fā)現(xiàn)學(xué)習(xí)一種語(yǔ)言會(huì)更加容易。我將在其它的博客文章中羅列一些待回答的寬泛?jiǎn)栴}的列表,應(yīng)該能幫助你學(xué)習(xí)任何語(yǔ)言。
學(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ì)感到沮喪。
猜你喜歡: