作者noctem (noctem)
看板PLT
標題Re: [閒聊] 邏輯式語言與函數式語言
時間Fri Mar 2 00:03:47 2007
※ 引述《godfat (godfat 真常)》之銘言:
: 就我所知,一般會拿來跟 functional 比較的是 imperative,
: 即函數形式或命令形式的程式風格。而 functional programming
: 一直不是主流方式,就我所知主要是因為在 turning machine 上
: functional 的執行效率比之 imperative 是差一大截的。
: 所以在電腦執行速度越來越快的情況下,functional programming
: 我想還會變得再更流行一些。或是哪天還會有全新的電腦架構流行起來,
: 讓 functional program 的執行效率可以有很大的進步,這樣可能會掀起
: 更大的浪潮。
我想目前的趨勢仍是靠前者。目前 functional programming (以下
簡稱 fp)最重要的會議 ICFP 的前身叫做 FPCA -- Functional Proramming
and Computer Architecture, 表示當時的熱門話題除了 fp, 還包括開
發適合 fp 的電腦架構。現在回想起來,這其實是走回了 Lisp
machines 失敗的老路 -- 專為 Lisp 設計的機器又貴、軟體又少,
買來幾年之後就反而比速度一直快速增加的新工作站還慢。
但當時 lazy evaluation 剛剛成為熱門研究話題,大家都認為
要有效率地實現 lazy evaluation 一定得要特別的硬體架構。
直到 fp 在普通硬體上的實作方式經過幾輪演化之後慢慢成熟
(代表作大概是 Peyton Jones 的一篇 paper, 後來成為 GHC --
目前最重要的 Haskell compiler 之一的基本架構),研究特定
硬體架構的走向就比較式微了。FPCA 也轉變成 Internatioanl
Conference on Functional Programming. Peyton Jones 等人
在一篇回顧中提到,其實很多實作技巧現在看來都很自然,但當時
大家似乎都走到了死胡同,覺得 lazy evaluatio 只能靠 graph
reduction 來實作,而後者又一定需要特殊的硬體。
我的感覺中,如 OCaml 之類的語言其實在執行效率上不比 C 差
太多,實用性已經蠻高了。不過 OCaml 是個 eager 的語言。
Lazy 的 Haskell 效率還是差一截。可能是 lazy evaluatio 的
負擔。另外就是記憶體使用的問題。 lazy 語言寫起 prototype
很漂亮,但是執行起來一不小心就浪費了不必要浪費的記憶體(
所謂的 space leak),總是要用工具分析很久才知道問題出在哪。
: 不知道分散式(distributed)對此是否也有很大的關聯?
Hmm.. 據我所知用 fp 來作 parallel programming 的研究是有
的。Distributed computing 好像更少些。中研院有個老師幾年前
曾試過把 OCaml 跟 MPI 連在一起,不過後來就沒有後續了。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.192.157.71
1F:推 godfat:感謝回答 :D 03/02 00:24
2F:推 PsMonkey:囧.... (看不懂之推... [泣]) 03/02 02:17
3F:推 ephesians:lazy是用來節省計算成本,結果仍浪費成本啊! XD 03/02 06:45