程式設計師從書本學習程式設計的 5 個建議

鴨梨山大發表於2015-04-14

【伯樂線上譯註】本文文章是「Coding by the Book」系列中的一篇。它的姊妹文章是《程式設計師如何選擇程式設計技術書?》和《程式設計師應該讀的 7 本計算機書》。


學習程式設計有很多種方式,比如線上教程、網路課程或是高強度的程式設計訓練營。教程是不錯,不過它能教給你的只有基本知識。不管是線上還是線下的課程(譯註:這指國外),都非常昂貴,還會限制你的時間安排。雖然你也可以通過多種渠道去向你的同事求助,但是你如果想要理解他們給出的答案,你還需要具有足夠的知識量。

這就是為什麼大多數想學程式設計—或只是重拾一門技術的人—最終還是會求助於書籍的原因。如果你肯付出努力,書本確實可以幫助你學到任何你需要的東西,並且將來還可以用作非常好的參考資源。(譯註:比如 Stack Overflow 上有個《哪本最具影響力的書,是每個程式設計師都應該讀的?》,伯樂線上以前就整理翻譯成《國外程式設計師推薦:每個程式設計師都應讀的書》,十分推薦。)

1. 通讀全書

不徹底地讀完解釋性的材料是一個常見的誤區。跳過程式碼執行原理的解釋而直接去看程式碼示例會將你領向失敗。之所以你要買一本計算機書籍,就是為了獲取程式碼示例,以及它附帶的解釋。

計算機書通常包含了你應該邊讀邊標記的一些額外的資訊,例如一些需要花大量時間去研究的參考資料。你可以使用這些參考資料幫助你去尋找不同的程式碼實現方式或不同的測試程式碼示例的輸入方式。

當然了,單單一本書並不能教會你在當今複雜的程式設計環境下的所有東西。因此,許多計算機書籍還細心地引用了組織好的線上資源,裡面也許包含了許多你所查詢的內容的準確資訊。

2. 集中精力

確保你在讀書時能保持注意力。當你發現你突然在想一次釣魚之行或是電視上的球賽,就是你該放下書的時候。隨性地閱讀是不夠的,你需要專心致志或有一個練習的目標。如果你需要回顧之前在你神遊到釣魚之行時所閱讀的內容確保你真正理解了,也別太在意。

3. 下載程式碼

程式設計書通常附帶了可下載的原始碼。下載原始碼,載入編譯器中編譯它,然後看它實現了什麼,這個過程非常重要。這些可以執行的程式碼對於我們理解程式設計技術至關重要。它們確保你可以看到一個沒有任何問題(例如拼寫錯誤等等)的可工作的示例。

在你開始理解程式碼的執行後,接下來你或許想要試著自己手寫一下,以加強你對其原理的理解。拼寫錯誤是新手程式設計師最主要的挫敗感的來源之一,所以下載示例的原始碼作為你的參考吧,這樣你可以更快地找到自己的錯誤並糾正它們。除了手寫程式碼,也要將其用鍵盤打出來。

4. 使用debugger進行單步除錯

取決於你想學的語言以及你使用 Integrated Development Environment (IDE)的程度,你可能對於當你跑一個應用時確切發生了什麼沒有一個清晰的概念。很多現代程式語言的目標是任務自動化。當你瞭解程式是如何執行後,這一特性還是很好的,但它同樣可能會成為你學習路上的一道坎。

在例程中單步除錯幫助你理解細節。隨著你一步一步向前執行,你可以觀察變數的值,考察它們如何變化,以及確定它們為何以那種方式變化。使用debugger的功能去改變變數的值,你可以看到這些變化是怎樣影響應用的。 再看看應用記憶體,去了解它是怎麼儲存資訊的,然後檢視呼叫棧去準確地瞭解一個呼叫是怎麼完成的。總之,要在你單步除錯時,探索應用中的所有可能的方面。

這種方法讓你可以探索其他的應用開發和設計之路。比如,在適當的環境下,你有時可以進入檔案庫中觀察它們是如何做關於應用的工作的。在一些案例中,你可以探索位元組碼或是反彙編應用程式碼去看底層如何運作。

注意:由於有些程式是時間敏感的,用debugger做單步除錯可能導致應用不正常執行。此外,你有可能需要在某些節點重啟應用,因為環境將會崩潰,你將得不到你所要的結果。單步除錯最適合用於短的程式碼段。

5. 把玩並掌握程式碼

到了這一步,你可能會覺得你已經從這本書所給予的資訊中提取出了全部。然而,你還是沒有把玩示例程式碼並試著讓它以別的方式執行。試驗是學習的關鍵。將書本中的示例程式碼試驗一下,是提升你技能的好方法。當你做了各種各樣的延伸時,你應該開始理解程式碼的變化如何在整體上影響應用。這類知識無法通過其他方式學習——你需要通過試驗去精準地理解一門語言所提供的特性。

最後,你將開始創造出與書中程式碼不太一樣的應用。這時,你走到了一個新的階段。在這個階段中,你開始自信地建立自己的應用,並且真正地理解了它們是如何運作的。

七個重要階段

學會程式設計意味著你對語言的理解程度足夠讓你去實現所有的需求,創造出有用的應用。舉個例子來說,在錄用你做開發工作之前,僱主們需要你去達到這樣的技能水平。

獲取這些技能的唯一途徑就是去練習,練習,接著練習直到你將程式融會貫通。當你學習使用某種語言程式設計時,程式設計師們應該努力去達成下面七個成就。

  1. 學習語言的基礎,如資料儲存、關鍵字、決策判定和迴圈指令。
  2. 看如何用該語言去完成特定任務。
  3. 探究該語言如何通過它的庫獲得提升。
  4. 鑽研該語言的細節並且理解它底層的執行機制。
  5. 利用該語言進行試驗,看看關聯的改變如何互相影響。
  6. 使用學到的技術去開始建立簡單的應用。
  7. 通過創造越來越複雜的應用和研究其他該語言的資源去不斷地提升技能。

這看起來很多,但有很多程式設計師可以證明在一本技術書的幫助下你確實可以達成這些所有的成就…如果你通過正確的方式閱讀的話。

相關文章