2009年6月18日星期四

The Functional Web : 舊瓶新酒是否會變出新思維?




這期的IEEE ComputeringNow有篇報導, Steve Vinoski談到網路程式的趨勢The Functional Web, 也就是以Functional Programming來架構網路程式 ... 什麼是Functional Programming? 什麼是The Functional Web? 哪些是舊把戲? 哪些是新思維?

先來談談Functional Programming (FP)...

對於網路世代來說, FP是老得不能再老的東西了, 我們可以翻譯成函式編程, 也就是相對於Imperative Programming(指令式編程)

這兩個有何差異? 對於Imperative Programming(指令式編程)來說, 不同的狀態(state)下, 相同的表示法可能有不同的結果, 用白話來說就是你問我餓不餓? 我回答說不餓, 但是可能我一個小時後的回答是很餓...

而Functional Programming就是不管狀態如何, 只要輸入相同就會有相同的結果, 例如Hungry-Function(who,when), 只要輸入Who跟When相同, 就可以得到同樣的結果

所以Imperative Programming也可以來完成Functional Programming的目的, 只是語法會比較複雜, 所以談到FP, 有假的FP, 也有純種的FP

Steve Vinoski談的FP就是指真的是為了functional而來的程式語言, 用這種FP來架構的就叫The Functional Web

哪些是假的FP? 大概你叫得出來的都是, 如C, C++, JAVA, Python 諸如此類 ... 哪些是真的FP? 也有很多, Steve Vinoski只提到一個 --- Scala, 並且用在Lift架構上

你從最簡單的"Hello World"就可以知道, Scala的精簡程度, 而Lift是一個Framework, 你也可以從Lift Demo來看看長什麼樣子

所以雖然Functional Programming與The Functional Web都不是新概念, 但是卻有新長相, Steve Vinoski的The Functional Web有些Cloud Computing跟SOA的味道, 也有現今流行的Mashup的意味

不過筆者還沒真正使用, 不敢亂下斷語, 後續再評論了, 若有人先一步使用了, 也歡迎提供您的意見來交流!

參考資料:
Welcome to the Functional Web
Scala and Lift


標籤: , ,

繼續閱讀:台灣搜尋引擎優化與行銷研究院