发信人: 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.]
Thursday, November 27, 2014
请不要盲目崇拜FP语言
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment