一個非常Strong的程式設計學習方法

codecloud發表於2015-06-28

  一旦你發現一個學習工具,它採用自下而上的方法,那麼什麼才是最好的學習方法?我對這有一個具有爭議性的觀點:我認為儘可能快地記住基礎知識對初學者而言是絕對有必要的。當成為更高階的學習者,記憶很快成為一個被丟棄了的方式。你可能聽到過別人輕視地說(“不要死記,要內部消化”,“我在消化記住的東西”,“我討厭測試,我不得不回想起記憶中的東西”)。

  另一方面,當你還是小學的時候,你被迫花時間來背乘法口訣表。為什麼要背呢?因為你的基礎乘法口訣表可以是構建更復雜的乘除法的基礎。這和你記憶程式語言的語法並沒有什麼不同:如果你寫if或for迴圈越自然,那麼你寫出更復雜的語句塊也更容易。

  我也承認記憶並不總是學習所有東西的最好方法,但是我相信對於程式設計初學者而言,是實踐程式設計所絕對必須的。為什麼呢?因為它可以減少阻力,如果有什麼東西會帶給初學者挫折,那就是阻力。

  考慮到這一點,這裡有一些具體的建議給那些正在學習或準備學習Web應用開發的初學者。實際上,說得更遠點更抽象點,這就是一個如何開始學習軟體開發的一個好計劃。很顯然,這不是一個適合所有人的計劃,但是我認為它一定適合大部分初學者。

  1. 學習一門弱型別的程式語言,不要先學習那種具有強制型別的、物件導向的程式語言。嚴格而言,如果有人對你提到class(類)或繼承,那麼你就應該去選擇其它的途徑了。雖然我認同類和繼承相關技術是軟體開發中必不可少的,但是我強烈認為它們不應該是初學者的選擇。
  2. 鑑於此,我認為JavaScript是初學者而言最理想的程式語言,因為:(a)JS直譯器在絕大部分瀏覽器上都可用,(b)它的物件導向特性並不是強制型的,(c)在工業界被廣泛使用(是的,即使是web之外的客戶端,即使是現在擔任裝置工程師的我也做嵌入JavaScript的工作。)
  3. 說得更具體點,我建議你學習用JavaScript如何學習去下面的事,特別是以這個順序:
  4. 學習如何列印出一些東西,學習如何宣告和定義變數,學習基本算術運算操作(包括餘數操作),學習迴圈(特別是for迴圈),學習把抽象重複的程式碼寫成函式,學習字串和用迴圈操作字串,學習陣列和陣列的迴圈方法(特別是foreach迴圈),學習建立和操作物件資料集。
  5. 記住上面的這些並每天寫一個程式來實踐,直到這些都輕而易舉地想起來。
  6. 學習Git的基本操作,學習通過命令列使用Git。這意味著要先學習四個Unix/Linux命令(ls,pwd,mkdir,cd)。當學習了這幾個命令,也就學會了以“樹型”或層次結構的呈現方式查詢檔案系統。
  7. 一旦你掌握了上面的幾個Unix/Linux命令,並會從命令列進入檔案系統,你就應該學幾個基礎的Git命令。主要是 git init, git status, git add and git commit。(推薦:Git 教程)
  8. 一旦你掌握了Git的基本操作,在學習下面的技術時將其整合到你的工作流中。
  9. 學習HTML基礎,能夠憑記憶建立簡單的HTML頁面。學習DOM和如何理解HTML作為指定的分層樹結構。花點時間來思考它如何關係到你在前面步驟中學到的分層檔案系統。
  10. 學習CSS選擇器,瞭解它如何讓你選定DOM的某些部分。瞭解DOM元素之間的關係。瞭解一個DOM元素作為另一個DOM元素的父元素或子元素的含義。理解這與後代和祖先之間的關係有什麼不同。記住選擇器可以讓你通過這些關係來選定某些元素。
  11. 學習jQuery,並主要專注於DOM的操作能力。學會用jQuery對DOM插入或刪除元素,實踐視覺化如何影響用DOM定義的樹型結構。
  12. 實踐jQuery中的事件處理和DOM操作(比如,實踐操作DOM當使用者點選某個東西,或在指定的時間間隔)。
  13. 多練習JavaScript物件,並把它們當作可變的聚合器。學習如何用JavaScript來表示更復雜的資料而不是基本資料型別。學會應用並操作這些資料結構。理解並定義JSON、理解它如何與JavaScript物件相關聯。
  14. 學會使用jQuery的getJSON函式從檔案中獲取資料到JavaScript物件中。使用類似的技術,用一個簡單的JSONP API去練習用AJAX拉取資料。練習向DOM插入和刪除這個資料。

  在這個階段,做一個簡單的幻燈片來迴圈播放Flickr圖片,這將是一個令人難以置信的專案,將真正考驗你的能力,使用之前學過的基礎技術來實現它。

  如果你做了這一步,那麼你已經掌握了大量必備的程式設計和電腦科學基本概念。具體來說,你掌握了計算機程式的最重要元素(如果if-else語句,迴圈,變數,物件,函式,陣列等),你已經學會了鏈式或樹型的資料結構。這時,無疑你已經準備好轉移到更高階的主題。

  英文原文:A Strong Approach To Learn Programming 翻譯:http://codecloud.net

相關文章