由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - FP over head很高
相关主题
板上的高人们能给科普比较functional programming language么粉FP的人是因为把电脑想象成图灵机了
这么多人讨论 FP, 大牛推荐门语言吧估计javascript 最初设计时就基本没考虑好scope问题
[bssd]goto的现实根据玩具语言其实很容易实现的
请教什么时候变量会被load进stack,什么时候进入heap呢?Facebook’s New Spam-Killer Hints at the Future of Coding - Haskell
C++ 全局变量是怎么回事?Duck typing is great ...
C++ for Java programmer?有哪些公司用Lisp开发程序
我老给你们指条明路吧各种语言程序猿被鄙视级别排序 (转载)
抛砖引玉,来谈谈functional programming未来ruby能不能挤掉python
相关话题的讨论汇总
话题: fp话题: br话题: 语言话题: lisp话题: 实现
进入Programming版参与讨论
1 (共1页)
g****t
发帖数: 31659
1
多核也好,并发也好。FP语言的很多特点无疑在很多场景下是有用的。但是主要学FP完
全没必要。
FP自身就有两类,一类Lisp出来,一类ML出来。
学FP,那得先内部较劲。分出来Lisp和ML(Haskell,F#)
谁好谁不好。这个问题没个五年,就无法有自己的认识。
那你学哪个FP?
这可不像python vs C plus plus
类似的问题还有非常多。真做项目,你都给一个个解决吗?
再说了,现在java, C sharp,...都有加FP一些特点进来.
真的不够你用吗?
要主要走FP可以
但你得有足够的力量克服很多不会找到参考答案的问题
就是说你要有足够的力量
不然的话这投入是不划算的
w***g
发帖数: 5958
2
除非对FP及其实现(如何从lambda演算编译成x86指令, lazy evaluation何时
被求值)有比较深入的理解,一般人其实很难对FP代码的性能有比较准确的预期。
运算在什么时候发生在哪行代码,花了多少内存,都要绕几个弯才能想明白。
所以FP语言高性能,我觉得是个神话。
我这里的FP特指haskell。但我觉得不失一般性。
第一,haskell是一种纯FP语言。别的混合型语言,你说不好是哪个成分在起作用。
第二,haskell是编译型的。解释型语言讨论性能没有现实意义。
实际写多线程多核,C/C++或者java/C#,完全可以写const function。
我不认为这是FP特性。如果是const function,里面哪怕都是for loop实现的,
也还是可以很容易并行化,完全不需要写成lambda演算。所需要的,只是
理解const关键字怎么用而已。

【在 g****t 的大作中提到】
: 多核也好,并发也好。FP语言的很多特点无疑在很多场景下是有用的。但是主要学FP完
: 全没必要。
: FP自身就有两类,一类Lisp出来,一类ML出来。
: 学FP,那得先内部较劲。分出来Lisp和ML(Haskell,F#)
: 谁好谁不好。这个问题没个五年,就无法有自己的认识。
: 那你学哪个FP?
: 这可不像python vs C plus plus
: 类似的问题还有非常多。真做项目,你都给一个个解决吗?
: 再说了,现在java, C sharp,...都有加FP一些特点进来.
: 真的不够你用吗?

d******c
发帖数: 2407
3
FP主要宣传的不是高性能把,提到性能也是因为并行带来的。
FP原则能带来的是放心,我说的不是FP语言特性,什么lamda之类,也不一定要用FP语
言实现,而是那几个FP编程原则。
每个单元的影响是可控的,在范围内,单元是可以随意组合的。有全局变量和side
effect的时候,你必须考虑这些因素,但是编程的时候这些并不是很明显
一段程序是否引用了全局变量,一眼看过去并不明显
是否有side effect,也不明显
于是你只能自己记住,或者写在comments里。
全局变量的影响可能是跨越好几个函数,分散在各个地方的,更不好记住
人的注意力只能同时考虑几件事,这样思考起来太累,过段时间以后重新捡起来很困难
,别人读也很困难。
这是程序水平的提高,当然对程序员要求高。
还有强调强类型的,那是公司老板知道招的都是一大堆新手弱人容易出错,所以有越多
检查越多约束越好,减少愚蠢错误。

【在 w***g 的大作中提到】
: 除非对FP及其实现(如何从lambda演算编译成x86指令, lazy evaluation何时
: 被求值)有比较深入的理解,一般人其实很难对FP代码的性能有比较准确的预期。
: 运算在什么时候发生在哪行代码,花了多少内存,都要绕几个弯才能想明白。
: 所以FP语言高性能,我觉得是个神话。
: 我这里的FP特指haskell。但我觉得不失一般性。
: 第一,haskell是一种纯FP语言。别的混合型语言,你说不好是哪个成分在起作用。
: 第二,haskell是编译型的。解释型语言讨论性能没有现实意义。
: 实际写多线程多核,C/C++或者java/C#,完全可以写const function。
: 我不认为这是FP特性。如果是const function,里面哪怕都是for loop实现的,
: 也还是可以很容易并行化,完全不需要写成lambda演算。所需要的,只是

h**********c
发帖数: 4120
4
你说得问题我觉得更应该从建模,normal form,逻辑的优化来解决
目前我没有看到FP对于简化程序结构的任何讨论
完全是一套干儿子打法,我这东西好,你必须得有,不用躺地上打滚
比如象电路设计门电路得简化优化

【在 d******c 的大作中提到】
: FP主要宣传的不是高性能把,提到性能也是因为并行带来的。
: FP原则能带来的是放心,我说的不是FP语言特性,什么lamda之类,也不一定要用FP语
: 言实现,而是那几个FP编程原则。
: 每个单元的影响是可控的,在范围内,单元是可以随意组合的。有全局变量和side
: effect的时候,你必须考虑这些因素,但是编程的时候这些并不是很明显
: 一段程序是否引用了全局变量,一眼看过去并不明显
: 是否有side effect,也不明显
: 于是你只能自己记住,或者写在comments里。
: 全局变量的影响可能是跨越好几个函数,分散在各个地方的,更不好记住
: 人的注意力只能同时考虑几件事,这样思考起来太累,过段时间以后重新捡起来很困难

g****t
发帖数: 31659
5
你说的这些东西,C等语言写起来照样无难度。以前有家公司出过
One time assignment C。为此学fp系统还不如学OO
所以你说的和scala这种不是一回事。FP函数可以改自己的上下文,这个和goto类似有
时候可以非常高效,有不少奇技淫巧。lisp半页纸就可以实现一个eval,你想想能搞出
多少花样吧


: FP主要宣传的不是高性能把,提到性能也是因为并行带来的。

: FP原则能带来的是放心,我说的不是FP语言特性,什么lamda之类,也不
一定要
用FP语

: 言实现,而是那几个FP编程原则。

: 每个单元的影响是可控的,在范围内,单元是可以随意组合的。有全局变
量和
side

: effect的时候,你必须考虑这些因素,但是编程的时候这些并不是很明显

: 一段程序是否引用了全局变量,一眼看过去并不明显

: 是否有side effect,也不明显

: 于是你只能自己记住,或者写在comments里。

: 全局变量的影响可能是跨越好几个函数,分散在各个地方的,更不好记住

: 人的注意力只能同时考虑几件事,这样思考起来太累,过段时间以后重新
捡起来
很困难



【在 d******c 的大作中提到】
: FP主要宣传的不是高性能把,提到性能也是因为并行带来的。
: FP原则能带来的是放心,我说的不是FP语言特性,什么lamda之类,也不一定要用FP语
: 言实现,而是那几个FP编程原则。
: 每个单元的影响是可控的,在范围内,单元是可以随意组合的。有全局变量和side
: effect的时候,你必须考虑这些因素,但是编程的时候这些并不是很明显
: 一段程序是否引用了全局变量,一眼看过去并不明显
: 是否有side effect,也不明显
: 于是你只能自己记住,或者写在comments里。
: 全局变量的影响可能是跨越好几个函数,分散在各个地方的,更不好记住
: 人的注意力只能同时考虑几件事,这样思考起来太累,过段时间以后重新捡起来很困难

d******c
发帖数: 2407
6
用什么语言都能写到一定程度,无非是语言支持的方便程度不同。
所以我说的是functional programming, 不是functional programming language,语
言不是重点,重要的是原则。

【在 g****t 的大作中提到】
: 你说的这些东西,C等语言写起来照样无难度。以前有家公司出过
: One time assignment C。为此学fp系统还不如学OO
: 所以你说的和scala这种不是一回事。FP函数可以改自己的上下文,这个和goto类似有
: 时候可以非常高效,有不少奇技淫巧。lisp半页纸就可以实现一个eval,你想想能搞出
: 多少花样吧
:
:
: FP主要宣传的不是高性能把,提到性能也是因为并行带来的。
:
: FP原则能带来的是放心,我说的不是FP语言特性,什么lamda之类,也不
: 一定要
: 用FP语

c******r
发帖数: 512
7
确实是这样,比如简单的 quicksort 吧, 用C写, 50行, OCaml, 5 行。
看看, 我用5分钟, 基本确定 C code 是 O(log(n)). 50 分钟我也不能确定 OCaml
到底是多快。
所以两三个人的队伍,很可能 FP 更厉害, 高效。 20个,不好说。 200个,哪找
200个好手?

【在 w***g 的大作中提到】
: 除非对FP及其实现(如何从lambda演算编译成x86指令, lazy evaluation何时
: 被求值)有比较深入的理解,一般人其实很难对FP代码的性能有比较准确的预期。
: 运算在什么时候发生在哪行代码,花了多少内存,都要绕几个弯才能想明白。
: 所以FP语言高性能,我觉得是个神话。
: 我这里的FP特指haskell。但我觉得不失一般性。
: 第一,haskell是一种纯FP语言。别的混合型语言,你说不好是哪个成分在起作用。
: 第二,haskell是编译型的。解释型语言讨论性能没有现实意义。
: 实际写多线程多核,C/C++或者java/C#,完全可以写const function。
: 我不认为这是FP特性。如果是const function,里面哪怕都是for loop实现的,
: 也还是可以很容易并行化,完全不需要写成lambda演算。所需要的,只是

g****t
发帖数: 31659
8
你最终是要出货的。离开具体语言谈编程原则没有什么意义, in long term.
教学可以举例子用。

【在 d******c 的大作中提到】
: 用什么语言都能写到一定程度,无非是语言支持的方便程度不同。
: 所以我说的是functional programming, 不是functional programming language,语
: 言不是重点,重要的是原则。

d******c
发帖数: 2407
9
说语言不是重点的时候是在纠正把语言纠缠在一起的讨论
具体做的时候当然要落到语言上
离开语境去否定几句话也没什么意义。

【在 g****t 的大作中提到】
: 你最终是要出货的。离开具体语言谈编程原则没有什么意义, in long term.
: 教学可以举例子用。

g****t
发帖数: 31659
10
FP 函数调用有和goto一样的flexibility.
如果你只是说调用。而不是把类型论范畴论等算作FP。

【在 d******c 的大作中提到】
: 说语言不是重点的时候是在纠正把语言纠缠在一起的讨论
: 具体做的时候当然要落到语言上
: 离开语境去否定几句话也没什么意义。

相关主题
C++ for Java programmer?粉FP的人是因为把电脑想象成图灵机了
我老给你们指条明路吧估计javascript 最初设计时就基本没考虑好scope问题
抛砖引玉,来谈谈functional programming玩具语言其实很容易实现的
进入Programming版参与讨论
i***h
发帖数: 12655
11
我对FP完全门外
是不是FP最大的问题就是和现有的诺依曼硬件框架不匹配导致不接地气?
有可能真正的FP硬件吗?
c******o
发帖数: 1277
12
为什么不匹配?明明数学上上是等价的。。
oo/procedure也和诺依曼硬件框架不一样啊。。不然哪儿有那么多的编译器优化/CPU
处理指令优化
g****t
发帖数: 31659
13
没有goto的语言都不能和硬件框架一致...


: 为什么不匹配?明明数学上上是等价的。。

: oo/procedure也和诺依曼硬件框架不一样啊。。不然哪儿有那么多的编译器优化
/CPU

: 处理指令优化



【在 c******o 的大作中提到】
: 为什么不匹配?明明数学上上是等价的。。
: oo/procedure也和诺依曼硬件框架不一样啊。。不然哪儿有那么多的编译器优化/CPU
: 处理指令优化

d******e
发帖数: 2265
14
语言是重点啊。java写什么都是鸟样。
最后只好用字串, 省掉类型。

【在 d******c 的大作中提到】
: 用什么语言都能写到一定程度,无非是语言支持的方便程度不同。
: 所以我说的是functional programming, 不是functional programming language,语
: 言不是重点,重要的是原则。

d******e
发帖数: 2265
15
语言是重点啊。java写什么都是鸟样。
最后只好用字串, 省掉类型。

【在 d******c 的大作中提到】
: 用什么语言都能写到一定程度,无非是语言支持的方便程度不同。
: 所以我说的是functional programming, 不是functional programming language,语
: 言不是重点,重要的是原则。

c******o
发帖数: 1277
16
这个 goto是什么?
就是一个无条件改变程序流程,到某处。
这个fp完全能实现。 有什么不能?

【在 g****t 的大作中提到】
: 没有goto的语言都不能和硬件框架一致...
:
:
: 为什么不匹配?明明数学上上是等价的。。
:
: oo/procedure也和诺依曼硬件框架不一样啊。。不然哪儿有那么多的编译器优化
: /CPU
:
: 处理指令优化
:

c********1
发帖数: 5269
17
不管什么高级语言
最后都是编译为cpu的机器代码...

【在 i***h 的大作中提到】
: 我对FP完全门外
: 是不是FP最大的问题就是和现有的诺依曼硬件框架不匹配导致不接地气?
: 有可能真正的FP硬件吗?

g****t
发帖数: 31659
18
能用统一的办法在不同场景来实现吗?
实现能保证几十年语法不变吗?能有稳定可预测的性能吗


: 这个 goto是什么?

: 就是一个无条件改变程序流程,到某处。

: 这个fp完全能实现。 有什么不能?



【在 c******o 的大作中提到】
: 这个 goto是什么?
: 就是一个无条件改变程序流程,到某处。
: 这个fp完全能实现。 有什么不能?

w******w
发帖数: 126
19
quick sort time complexity 是 O(log(n))? 竟然跟binary search 一样了? 难道
我以前的知识都学错了? 不是 nlog(n) 吗?

OCaml

【在 c******r 的大作中提到】
: 确实是这样,比如简单的 quicksort 吧, 用C写, 50行, OCaml, 5 行。
: 看看, 我用5分钟, 基本确定 C code 是 O(log(n)). 50 分钟我也不能确定 OCaml
: 到底是多快。
: 所以两三个人的队伍,很可能 FP 更厉害, 高效。 20个,不好说。 200个,哪找
: 200个好手?

1 (共1页)
进入Programming版参与讨论
相关主题
未来ruby能不能挤掉pythonC++ 全局变量是怎么回事?
python并不算google带火的C++ for Java programmer?
原来Haskell里面的quasiquoting是来自lisp的我老给你们指条明路吧
Java EE这东西还有必要学吗抛砖引玉,来谈谈functional programming
板上的高人们能给科普比较functional programming language么粉FP的人是因为把电脑想象成图灵机了
这么多人讨论 FP, 大牛推荐门语言吧估计javascript 最初设计时就基本没考虑好scope问题
[bssd]goto的现实根据玩具语言其实很容易实现的
请教什么时候变量会被load进stack,什么时候进入heap呢?Facebook’s New Spam-Killer Hints at the Future of Coding - Haskell
相关话题的讨论汇总
话题: fp话题: br话题: 语言话题: lisp话题: 实现