那就推薦一本消遣書吧

上學最寶貴的收穫之一是結交學識過人的朋友。自己悶頭學得山窮水盡時,高手輕輕一句點撥,眼前便峯迴路轉,柳暗花明。每次上完課,有幸和朋友小聚,請教弱智問題,聽朋友妙語解惑,實在是難得的人生樂事。讀The Little Schemer,也有同樣的感受。讀The Little Schemer的過程,就是被良師引導的過程。
 
用作者的話說,The Little Schemer是一本教人理解計算本質的書。編程語言Scheme不過是傳道的載體。書的體例獨特。每頁分成兩列。每列寥寥幾行代碼,數段散句。左邊一列問個問題。右邊一列給出答案。作者就用這種輕鬆對話的形式講解遞歸和函數編程。例如下面的截圖。
 
 
這本書最吸引我的地方是它講解的方式:書裏彷彿沒有什麼難點,也沒有長篇討論。每章都是逐層推進的問題和相應的解答。比如翻看書第一頁,就是“atom是不是atom?”。我差點以爲買了本缺頁的書,下意識的向前翻了一下,看是不是漏掉了開頭。J 在這些精心設計的例子啓發下,我們自然地總結出編程的概念和方法。一切水到渠成。和朋友討論做報告的技巧時,我們的口頭禪是“Don't tell. Show.”這本書是絕佳範例。這其實是非常高效的訓練,對初學者尤其有用。從現象裏歸納出共性、由實踐中抽象出模式,在表象下看到本質是解決問題的重要技巧。編程語言也好,公式也好,不過是表達我們思路的手段。何況很多強有力的編程技巧也是前人從無數代碼裏提煉而來。還有什麼比自己體驗提煉過程更讓人印象深刻的學習手段呢?書不厚。180來頁。10章。每章讀時都覺得簡單,甚至有點瑣碎。但書的進度其實毫不含糊。第8章已經引導我們領悟Continuation Passing Style的奧祕。第九章解釋了Y-組合子的前世今生,而第十章乾脆實現了一個Scheme的解釋器。單是第8章就值回書價(本來也不貴。如果連續集The Seasoned Schemer和The Reasoned Schemer一起買,還有折扣)。想象一下,一個對Scheme編程甚至對編程一無所知的新手讀完這章後,突然發現CPS函數上掛着的那一大坨累贅事物(黑話所謂的continuation)變得清晰曉暢,已經融入自己的靈魂,是何等爽快的體驗。
 
 
我對書唯一不滿的地方是它全用各種食物做數據。魚子醬,沙門魚,曲奇什麼的滿篇都是。個人覺得和家譜樹一樣無趣。對了,作者沒有寫任何可以激勵讀者的內容,比如爲什麼CPS有用。這也許會打擊一部分老大的積極性。
 
喜歡The Little Schemer的老大們,多半也會喜歡續集The Seasoned Schemer。用序言的話說,The Little Schemer展示了列表是Lisp編程的心臟,而The Seasoned Schemer展示了函數是Lisp編程的靈魂。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章