突然想到Functional Programming

PhilipWadler在ACMSIGPLANNotices,Aug1998上的文章
"Whynooneusesfunctionallanguages"讨论了FP的障碍,主要不是技术上的,
而是商业上的和政治上(politicsinitsgeneralmeaning)。比如很多程序员都
只受过ImperaiveProgramming的训练,还没有人投资去搞出足够成熟的库和开发
环境(特别是debugger和profiler),和已有的语言的接口支持不够等。
但通过调查长期使用functinallanguage和imperativelanguage的人发现,
FP的开发周期,不管是coding,debugging,还是maintainance,都更加容易。
从理论上将,如果一个程序员不用担心sideeffects,misorderedupdates,
和danglingoruninitializedreferences,而且能从小到大逐步地构造复杂的
数据结构(FL的长项的说),那他的开发速度能大大加快。PhilipWadler
在ACMSIGPLANNotices,Feb1998的"AnAngryhalf-dozen"里有具体的调查数据和
讨论。不知道微是不是也是出于相同的考虑,决定开发F#,来弥补FP商业开发环境的不足


呵呵,顺便说说LogicProgramming,也有人说LP的理念更加引人,因为程序员只需制订
对未知量的逻辑规则,使得编成大大简化,而且使人们可以把编程和Specification及
FormalSpecificationVerification相对容易地连接起来,保证了大型项目从一开始就
是正确的(项目大了,保证Specificationconsistency很难的说,所以很多人都在搞
什么autoverifier)。确实也有大型商业系统用LP开发,据说效果不错(很久前读的文
章,reference忘了)。但偶个人的经验是,LP用起来不爽。HornClause不能实现所有
的FirstOrderPredicateCalculus,比如A=>P1|P2|P3,相同语意的否定(不是Prolog
里那个"not"的说)等。所以偶用Prolog时总得用Prolog特有的方式思考,而不是用熟知的
那套逻辑思考,有束手束脚的感觉。还有就是如果不相当熟悉各种所谓的Execution
Order的话,写出的代码会非常非常慢(还有多少人能玩儿转cut,fail,repeat,
retract什么的?:-D)当然也可以说偶的LP学得不好,哪位老大指点一二?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值