一個非常正確且強大的程式設計學習方法
阿新 • • 發佈:2019-01-03
一旦你發現一個學習工具,它採用自上而下的方法,那麼什麼是最好的學習方法?我對這有一個具有爭議性的觀點:我認為儘可能快地記住基礎知識對初學者而言是絕對有必要的。當成為更高階的學習者,記憶很快成為一個被丟棄了的方式。你可能聽到過別人輕視地說(“不要死記,要內部消化”,“我在消化記住的東西”,“我討厭測試,我不得不回想起記憶中的東西”)。
另一方面,當你還是小學的時候,你被迫花時間來背乘法口訣表。為什麼要背呢?因為你的基礎乘法口訣表可以是構建更復雜的乘除法的基礎。這和你記憶程式語言的語法並沒有什麼不同:如果你寫 if 或 for 迴圈越自然,那麼你寫出更復雜的語句塊也更容易。
我也承認記憶並不總是學習所有東西的最好方法,但是我相信對於程式設計初學者而言,是實踐程式設計所絕對必須的。為什麼呢?因為它可以減少阻力,如果有什麼東西會帶給初學者挫折,那就是阻力。
考慮到這一點,這裡有一些具體的建議給那些正在學習或準備學習 Web 應用開發的初學者。實際上,說得更遠點更抽象點,這就是一個如何開始學習軟體開發的一個好計劃。很顯然,這不是一個適合所有人的計劃,但是我認為它一定適合大部分初學者。
- 學習一門弱型別的程式語言,不要先學習那種具有強制型別的、面向物件的程式語言。嚴格而言,如果有人對你提到 class (類)或繼承,那麼你就應該去選擇其它的途徑了。雖然我認同類和繼承相關技術是軟體開發中必不可少的,但是我強烈認為它們不應該是初學者的選擇。
- 鑑於此,我認為 JavaScript 是初學者而言最理想的程式語言,因為:(a) JS 直譯器在絕大部分瀏覽器上都可用,(b)它的面向物件特性並不是強制型的,(c)在工業界被廣泛使用(是的,即使是 web 之外的客戶端,即使是現在擔任裝置工程師的我也做嵌入 JavaScript 的工作。)
- 說得更具體點,我建議你學習用 JavaScript 如何學習去下面的事,特別是以這個順序:
- 學習如何打印出一些東西,學習如何宣告和定義變數,學習基本算術運算操作(包括餘數操作),學習迴圈(特別是 for 迴圈),學習把抽象重複的程式碼寫成函式,學習字串和用迴圈操作字串,學習陣列和陣列的迴圈方法(特別是 foreach 迴圈),學習建立和操作物件資料集。
- 記住上面的這些並每天寫一個程式來實踐,直到這些都輕而易舉地想起來。
- 學習 Git 的基本操作,學習通過命令列使用 Git。這意味著要先學習四個 Unix/Linux 命令(ls,pwd,mkdir,cd)。當學習了這幾個命令,也就學會了以“樹型”或層次結構的呈現方式查詢檔案系統。
- 一旦你掌握了上面的幾個 Unix/Linux 命令,並會從命令列進入檔案系統,你就應該學幾個基礎的 Git 命令。主要是 git init, git status, git add and git commit。
- 一旦你掌握了 Git 的基本操作,在學習下面的技術時將其整合到你的工作流中。
- 學習 HTML 基礎,能夠憑記憶建立簡單的 HTML 頁面。學習 DOM 和如何理解 HTML 作為指定的分層樹結構。花點時間來思考它如何關係到你在前面步驟中學到的分層檔案系統。
- 學習 CSS 選擇器,瞭解它如何讓你選定 DOM 的某些部分。瞭解 DOM 元素之間的關係。瞭解一個 DOM 元素作為另一個 DOM 元素的父元素或子元素的含義。理解這與後代和祖先之間的關係有什麼不同。記住選擇器可以讓你通過這些關係來選定某些元素。
- 學習 jQuery,並主要專注於 DOM 的操作能力。學會用 jQuery 對 DOM 插入或刪除元素,實踐視覺化如何影響用 DOM 定義的樹型結構。
- 實踐 jQuery 中的事件處理和 DOM 操作(比如,實踐操作 DOM 當用戶點選某個東西,或在指定的時間間隔)。
- 多練習 JavaScript 物件,並把它們當作可變的聚合器。學習如何用 JavaScript 來表示更復雜的資料而不是基本資料型別。學會應用並操作這些資料結構。理解並定義 JSON、理解它如何與 JavaScript 物件相關聯。
- 學會使用 jQuery 的 getJSON 函式從檔案中獲取資料到 JavaScript 物件中。使用類似的技術,用一個簡單的 JSONP API 去練習用 AJAX 拉取資料。練習向 DOM 插入和刪除這個資料。
在這個階段,做一個簡單的幻燈片來迴圈播放 Flickr 圖片,這將是一個令人難以置信的專案,將真正考驗你的能力,使用之前學過的基礎技術來實現它。
如果你做了這一步,那麼你已經掌握了大量必備的程式設計和電腦科學基本概念。具體來說,你掌握了計算機程式的最重要元素(如果 if-else 語句,迴圈,變數,物件,函式,陣列等),你已經學會了鏈式或樹型的資料結構。這時,無疑你已經準備好轉移到更高階的主題。
本文最初發表在codecloud.net,文章內容屬作者個人觀點,不代表本站立場。