作者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