先聲明,我還是個函數式程式設計 (Functional Programming) 的新手,而且對於使用這種 Paradigm 的程式語言我也只認識 Haskell 而已,因此這個系列裡有很多想法可能只是我的偏見、誤解與錯覺,所以如果我講錯了,就還請多多包涵。
對 Functional Prgoramming 起興趣,是在很久以前在約耳談軟體系列中看到『爪哇學校的危害』一文,裡頭談到了這種程式設計典範,說了下面這句話:
In a purely functional program, the value of a variable never changes, and yet, it changes all the time! A paradox!
想當然爾,完全沒接處過 Functional Programming 的我,腦海中冒出的第一個念頭就是:變數不能改動,那是要玩什麼啊!
之後在網路上找了一下 Functional Programming 的資料,就把目標鎖定在 Haskell 這個看來不錯的程式語言,而且也到學校的圖書館找了一本英文的教科書來看(中文的根本沒有)。
但不幸的是,讀了半天,我還是搞不懂 Functional Programming 到底是什麼,有什麼好處,因為教科書上的程式碼範例和思考邏輯,都和我自己在寫的程式沒什麼兩樣。
舉例而言,想要把一個圖形給黑白轉的時候,就寫一個函式,參數是原先的圖形,反回值是新的圖形,函式的內容是把每一個像素由黑變白、由白變黑。
這不是廢話嘛!不然還得怎麼做?就這樣,我很快地放下手邊的教科書,不再去理他。
一直到前一陣子我在 Stack Overflow 這個程式設計的討論網站裡看到有些人提到,學 Functional Programming 可以學到另一種思考的方式,我這才決定重新好好學起。
而且拜這本 Real World Haskell 所賜,雖然我還只讀到第三章,但這次我終於比較知道函數式程式設計到底是什麼東西,還有 Haskell 到底有什麼特別之處。
因此接下來的這個系列,我會記錄我在學習 Haskell 時碰到的問題、解法,以及對於 Functional Programming 和 Haskell 的一些想法。
回響