1. 程式人生 > >一個非常正確且強大的程式設計學習方法

一個非常正確且強大的程式設計學習方法


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

另一方面,當你還是小學的時候,你被迫花時間來背乘法口訣表。為什麼要背呢?因為你的基礎乘法口訣表可以是構建更復雜的乘除法的基礎。這和你記憶程式語言的語法並沒有什麼不同:如果你寫 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。
  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 語句,迴圈,變數,物件,函式,陣列等),你已經學會了鏈式或樹型的資料結構。這時,無疑你已經準備好轉移到更高階的主題。


本文最初發表在codecloud.net,文章內容屬作者個人觀點,不代表本站立場。