突然想到Functional Programming
Philip Wadler 在ACM SIGPLAN Notices, Aug 1998上的文章
“Why no one uses functional languages” 讨论了FP的障碍,主要不是技术上的,
而是商业上的和政治上(politics in its general meaning)。比如很多程序员都
只受过Imperaive Programming的训练,还没有人投资去搞出足够成熟的库和开发
环境(特别是debugger和profiler),和已有的语言的接口支持不够等。
但通过调查长期使用functinal language和imperative language的人发现,
FP的开发周期,不管是coding, debugging, 还是maintainance,都更加容易。
从理论上将,如果一个程序员不用担心side effects, misordered updates,
和dangling or uninitialized references, 而且能从小到大逐步地构造复杂的
数据结构(FL的长项的说),那他的开发速度能大大加快。Philip Wadler
在ACM SIGPLAN Notices, Feb 1998的”An Angry half-dozen”里有具体的调查数据和
讨论。不知道微是不是也是出于相同的考虑,决定开发F#,来弥补FP商业开发环境的不足
。
呵呵,顺便说说Logic Programming,也有人说LP的理念更加引人,因为程序员只需制订
对未知量的逻辑规则,使得编成大大简化,而且使人们可以把编程和Specification及
Formal Specification Verification相对容易地连接起来,保证了大型项目从一开始就
是正确的(项目大了,保证Specification consistency很难的说, 所以很多人都在搞
什么auto verifier)。确实也有大型商业系统用LP开发,据说效果不错(很久前读的文
章,reference忘了)。但偶个人的经验是,LP用起来不爽。Horn Clause不能实现所有
的First Order Predicate Calculus,比如A=>P1|P2|P3,相同语意的否定(不是Prolog
里那个”not”的说)等。所以偶用Prolog时总得用Prolog特有的方式思考,而不是用熟知的
那套逻辑思考,有束手束脚的感觉。还有就是如果不相当熟悉各种所谓的Execution
Order的话,写出的代码会非常非常慢(还有多少人能玩儿转cut, fail, repeat,
retract什么的? :-D)当然也可以说偶的LP学得不好,哪位老大指点一二?
转载自:https://blog.csdn.net/g9yuayon/article/details/32825