programming  

May 19, 2016 • Michael Chen

在學習某個程式語言的過程中,第一步總是先熟悉其語法,然後慢慢擴展到其他的部分。在這個過程中,如果能夠搭配適當的小型練習題,對於學習該語言會有相當的幫助。然而,不同語言的流行度各自相異,不一定都會有適當的教材可用。而本書的出現,適時地填補了語法和實作間的空缺。

在學習到第二個,甚至第三個程式語言時,會發現到,雖然程式語言的語法和模式各有不同,但是觀念上是相通的。大部分的程式語言,都有著類似的觀念,像是變數形態、操作子、判斷分支、迴圈、資料結構、輸入/輸出等,雖然在語法上各有不同,但其實,骨子裡都是在這些觀念上打轉。當然,各個程式語言還是有其特殊的部分,是其他程式語言沒有的,不過,很少會有某個問題,只能用某一個特定的程式語言的某個語法才能解決;我們在轉換程式語言時,會自然地用其他的方法去完成相同或類似的結果。本書的安排,也是基於這樣的原則,問題的設計上,由簡單而困難,慢慢地使用到較深入的觀念,透過這樣的練習,學習者可用通用的問題解決的方式來學習程式語言。

本書一共有十個章節,57 個習題,其中前六章是基本的核心語法的運用,第七章是資料結構,第八章是檔案輸入/出,第九章和第十章則是實務上的應用。如果能夠順利地完成前八章的內容,基本上,已經可以把該語言順利地應用在自己的實務上,後兩章的習題相對較耗時,如果時間不是很充分,其實不需完成也沒關係。雖然大部分的習題看起來相當簡單,不過,試著實際去完成,對於熟悉某個程式語言,有相當的幫助。

細心的讀者,可能發現到,本書缺乏物件導向相關的練習,而是以傳統的程序式程式來練習。由於物件導向是目前主流的程式設計模式,隨著程式的規模變大,使用物件導向的好處會更加明顯。許多語言都內建物件導向方面的相關語法,在物件導向這一塊缺席,是較為可惜的地方。其實,只要在該章節註明,若該語言缺乏物件導向,就跳過這一部分的功能即可,而不需要忽略這一部分的練習。

筆者以 Ruby 和 Go 等數個程式語言,練習本書的範例,對於筆者學習這些語言,有相當的幫助。其實,即使沒有做完整本書的習題,只要有恆心,持續練習,就可以增進對該語言的了解。