Thursday, November 27, 2014

请不要盲目崇拜FP语言

发信人: Decon (Decon), 信区: Programming
标  题: 请不要盲目崇拜FP语言
发信站: BBS 未名空间站 (Thu Nov 27 17:08:37 2014, 美东)

Functional 语言在学术上解决特定问题i可以,在实践中大规模应用不行。这样的语言
严重依赖虚拟机/编译器,因为当前计算机体系结构本质并不是这么设计的:

===============================
例如:打印100行Hello world,用如果用汇编语言里面无非就是
1))往ECX 中装入一个100
2)打印hello world
3)ECX减去1
4)测试ECX
5)根据结果跳转(JNZ比如)。

这个和C 里面的For语言对应的很好,一条对一条。而FP呢?如果编译器不够智能地猜
出你要做记数循环,采用递归实现意味着你需要执行100次calling convention (以
X86为例):

1)上级栈地址压栈,设新栈地址
2)参数和返回结果压栈(100, 99,98...)
3)执行函数(函数里一个if statement判断是否到头,再打印Hello world)
4)清理堆栈,返回结果

然后这破事要在栈上搞弄100次。执行效率至少慢了400-1000%(Call/Ret指令很费CPU
周期,而且函数压栈这些都是内存操作),这么差的效率怎么玩I/O?

除此之外,还有一些别的问题:比如乱序执行,分支预判,还有对给定执行Path的执行
Testing/Debugging 都莫名其妙变的极其复杂。

====================

华尔街可能用FP比较多,因为他们那里大部份是很优秀的数学家,大部分数学家编程能
力很一般,他们关心的是如何把算法直接写成程序,很少关心效率,复用,容易读等普
通计算机工业界关心的问题,而且他们的计算成本相对收益就是九牛一毛。

普通工业界根本没必要大规模用FP

--
※ 修改:·Decon 於 Nov 27 17:15:09 2014 修改本文·[FROM: 131.]
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 131.]

http://www.mitbbs.com/article_t/Programming/31385631.html

No comments:

Post a Comment