iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 1
3
Software Development

mostly:functional 從零開始的異世界程式觀 --- 函數式程式設計的試煉系列 第 1

在開始之前…

簡介字數不夠用,但是又有不得不碎念的事,只好放到這邊來了。下一篇才是預想中真正的開始。

這系列是想來講個故事。一個關於函數式程式設計的故事。

本來是這樣開始寫的:『…學習函數式程式設計,網路上或是書籍資料大致上可以分為兩類,一是正統函數式語言的教學;另一類則是用較普及的語言 ( 如 JavaScript ) 來試圖解釋函數式程式設計的概念。當然兩者都是非常合理的策略,且有許多很棒的結果了。

…但這兩類教學也有各自的缺點。前者會讓工作上用不到的人怯步,而若以 JavaScript 為例,由於語言的特性不同,無法使用 pattern matching 等語法,加上語言的預設運作基礎就是改變狀態,甚或會導致讀者得出「這根本沒什麼用」的結論。…』

但是這樣寫實在太乏味了,一點都不有趣。所以就寫成了一個異世界(觀)的故事了。


聲明: 本作旨在以虛擬的故事,戲劇性的從零開始描述函數式程式設計的世界觀。試圖給出一條平價九成正確,而且有趣的解決途徑。

這世界上有個不理想且並非不普遍的情況,是只用 class oriented 的觀點解決所有的問題,並將此做法升高到信仰層次

但必須要強調的是,在用得好的情況下(如 Sandi Matz 的 POODR),我也喜歡物件導向的一些觀點。物件導向及函數式彼此各有強項與弱項,常常一個的強項剛好是另一者的弱項。而它們兩者也可以很好的組合在一起。

畢竟正如 Alan Kay (Smalltalk 設計者) 所說的

Erlang is much closer to the original ideas I had about “objects” and how to use them.

而且由於是平價九成正確,所以當然誠心的歡迎所有的拍打、建議與討論。

希望你能從這裡得到一些樂趣,不管是哪一種樂趣。


下一篇
mostly:functional 第一章:召喚
系列文
mostly:functional 從零開始的異世界程式觀 --- 函數式程式設計的試煉35

尚未有邦友留言

立即登入留言