由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 抛砖引玉,来谈谈functional programming
相关主题
粉FP的人是因为把电脑想象成图灵机了go is ugly
Python is easy and not easy玩具语言其实很容易实现的
大牛给推荐个fp语言Facebook’s New Spam-Killer Hints at the Future of Coding - Haskell
functional programming 哪本书经典适合入门Duck typing is great ...
C++ for Java programmer?FP over head很高
板上的高人们能给科普比较functional programming language么程序员薪水
我老给你们指条明路吧各个编程语言平均工资(ZT)
这么多人讨论 FP, 大牛推荐门语言吧实践研究表明,FP代码虫子少,质量高
相关话题的讨论汇总
话题: fp话题: fibo话题: oo话题: java话题: akka
进入Programming版参与讨论
1 (共1页)
G***l
发帖数: 355
1
Functional Programming这几年来越来越热。 最近几年FP开始流行。众多纯FP或者FP
为主的语言出现,比如haskell, clojure, ocaml, f#等等。 很多非FP的语言都不约而
同的加入一定的FP功能,C#,C++,Java(将要)。很多一定程度支持FP的比如Python,
Ruby之类也很流行。
FP好用吗?答案是肯定的。Emacs和它所有的插件都是lisp写的,Emacs多牛逼这里就不
多说了。工业界的例子,华尔街著名的高频交易公司Jane Stree Capital的系统就是
OCaml写的,这种系统不管是的复杂性,可扩展性还是,可靠性和性能要求都是很高的。
FP的优点在哪里?wiki的词条上面列了一些fp的特性和优点,我就不赘述了。下面说一
些我的个人体验。水平有限,思维比较杂乱,大家见谅。
写程序,不管是过程式,OO还是fp,说到底是还是数据和算法。过程式样的思维,你会
想到一个input,然后这个input怎么转化,操作,最后变成output。OO能让你灵活的拆
分开数据和算法并且模块化。但你只要用OO建模过,你就会发现一开始你想的就是有哪
些类,你想到的都是名词,之后才会想这些对象之间有什么操作或者相互关系。而事实
上,写程序复杂的地方在于算法,而且我个人的经验,不管是需求改变还是refactor,
改code时候,大多都是在改算法方面的,而数据改变的情况较少。从形式化的角度分析
,OO在behavior model方面有天然的缺陷。你看gof那些pattern,几乎都是用来弥补oo
在behavior的扩展性,灵活性等上面各种不足的。而behavior model却是fp的强项。因
为在fp里面,最基础的是function,数据是次要的,主要是如何操作数据。而且由于没
有side effect,修改添加任何function都很灵活,这真是大多数程序逻辑扩展性的重
点。再加上fp的一些currying,high order function等等特性,在behavior建模的方
面更加强大。
抛开high level modeling上OO从名词开始,FP从动词开始的区别。在写程序上,fp更
贴近思维。现在很多人学的别扭是因为你先学了imperative,思维模式已经在那了。比
如,很多pure fp里面没有循环,只有递归。很多人觉得别扭。可是算法归根到底是数
学,你仔细想想,从小到大做了那么多数学题,解题时候有用到“循环”吗?我还真没
有。但到了计算机世界就变了。斐波那契数列多简洁,可我却要写个循环。。。在算法
intensive的场合,比如一些数学的模型,compiler,DSL, AI等等地方,fp用的很多,
比如lisp可就是ai的人搞出来的。
FP不容易出错。写程序出错有几种情况,一种是需求理解错了,人家要b=2*a你却写成b
=3*a。另外一种是技术不够熟练,比如++i跟i++没搞清楚区别就用了。这两个能通过高
水平的程序员和沟通解决。另外一种是程序很复杂,人就容易就会犯错。人的能力有限
,一下给你n个数字,一分钟后让你说出来,大多人肯定都不行。虽然模块化的理念很
美好,可实际操作起来,总是有很多地方还是很复杂。而fp没有side effect,大大降
低了复杂代码逻辑里人犯错的机会,因为你写一个function的时候只要保持它的输入输
出对,完全不需要考虑和别的function的互相影响。
FP会取代OO吗?我觉得就像OO没有取代过程式一样,FP也不会取代OO。且不说c这样的
还很流行。就是在OO程序里,过程式的影子到处可见,一个方法内部的实现不就是过程
式的。未来肯定是FP和OO并行。
没有万能钥匙。FP当然有缺点。有些是天然的,FP自己的特性比如no side effect,
lazy之类带来的,所以不是任何地方都是适用FP的。另外一些是暂时的,比如会的人少
,因为过去大学都是不教fp的,就算有也是选修,而现在很多学校的教学里,
imperative并不比fp优先,学生一开始就是接触的fp的思维。再比如类库少,没有东西
一开始就类库多,随着用的人多类库自然会越来越多等等。
最后举个现实的例子,现在FP的工业界用的最多的地方之一就是花街front office,不
少公司都开始在一些适用的场合用fp。因为fp正满足了他们的要求。需求改动多,市场
风云变幻,今天要这么做,明天要那样。出错的可能要降到最低,不然直接就是银子的
损失。算法多而数据模型变动很少,毕竟stock,bond就那么些attribute,而利用这些
attribute的不同方法技术却很多。fp暂时的缺点对他们也不是问题,会的人少?自有
高薪招来的聪明人会。类库少?大多都是in house实现的东西,除开gui,后台的系统
很少用到第三方的类库。
p***o
发帖数: 1252
2
不是说FP不好,你先谈谈怎么用递归算Fibonacci数列,比如说第100项把

FP
的。

【在 G***l 的大作中提到】
: Functional Programming这几年来越来越热。 最近几年FP开始流行。众多纯FP或者FP
: 为主的语言出现,比如haskell, clojure, ocaml, f#等等。 很多非FP的语言都不约而
: 同的加入一定的FP功能,C#,C++,Java(将要)。很多一定程度支持FP的比如Python,
: Ruby之类也很流行。
: FP好用吗?答案是肯定的。Emacs和它所有的插件都是lisp写的,Emacs多牛逼这里就不
: 多说了。工业界的例子,华尔街著名的高频交易公司Jane Stree Capital的系统就是
: OCaml写的,这种系统不管是的复杂性,可扩展性还是,可靠性和性能要求都是很高的。
: FP的优点在哪里?wiki的词条上面列了一些fp的特性和优点,我就不赘述了。下面说一
: 些我的个人体验。水平有限,思维比较杂乱,大家见谅。
: 写程序,不管是过程式,OO还是fp,说到底是还是数据和算法。过程式样的思维,你会

G***l
发帖数: 355
3
你想说什么?
Haskell:
fibo 0 = 0
fibo 1 = 1
fibo n = fibo (n-1) + fibo (n-2)

【在 p***o 的大作中提到】
: 不是说FP不好,你先谈谈怎么用递归算Fibonacci数列,比如说第100项把
:
: FP
: 的。

p***o
发帖数: 1252
4
没用过Haskell,你解释一下内部是怎么实现的,难道每个fibo n都是一个type?
C/C++/Java里面fibo要是一个函数的话,n大一点那是跑不出结果的。

【在 G***l 的大作中提到】
: 你想说什么?
: Haskell:
: fibo 0 = 0
: fibo 1 = 1
: fibo n = fibo (n-1) + fibo (n-2)

G***l
发帖数: 355
5
我只是写了个最简单的。n大的话这个肯定也很慢。得写tail recursion版的。要追求
性能的话,肯定要复杂。但是从数学角度讲递归是很自然的写法。有没有搞compiler的
说说,非tail recursoin有没有可能让compiler做优化,如果能的话,最简单的写法也
能达到效率。

【在 p***o 的大作中提到】
: 没用过Haskell,你解释一下内部是怎么实现的,难道每个fibo n都是一个type?
: C/C++/Java里面fibo要是一个函数的话,n大一点那是跑不出结果的。

g****r
发帖数: 1589
6
算这玩意难道不正是FP的强项吗?

【在 p***o 的大作中提到】
: 不是说FP不好,你先谈谈怎么用递归算Fibonacci数列,比如说第100项把
:
: FP
: 的。

p***o
发帖数: 1252
7
我也觉得应该是,就是不明白具体怎么算的。

【在 g****r 的大作中提到】
: 算这玩意难道不正是FP的强项吗?
p***o
发帖数: 1252
8
好吧,查了下,还真不如用个loop呢 ...
haskell.org/haskellwiki/The_Fibonacci_sequence

【在 p***o 的大作中提到】
: 我也觉得应该是,就是不明白具体怎么算的。
G***l
发帖数: 355
9
这个简单的例子当然没什么区别。但是你不觉得recursive的定义比loop更贴近自然思
维吗?再说FP好的地方又不是说他能递归,现在流行的语言都能递归。优点在与是指一
切都是function的一种思维,建模方式,只要你用这种思维方式,斐波那契的例子你自
然就不会去想用循环写。

【在 p***o 的大作中提到】
: 好吧,查了下,还真不如用个loop呢 ...
: haskell.org/haskellwiki/The_Fibonacci_sequence

g****r
发帖数: 1589
10
这种写法应该更接近于数学定义,可读性也强一些,碰到复杂的情况这种写法可能更简
洁一些,不过这个也看各人的喜好了
用尾递归的话,compiler应该会自动编译成loop,性能上区别应该不大

【在 p***o 的大作中提到】
: 好吧,查了下,还真不如用个loop呢 ...
: haskell.org/haskellwiki/The_Fibonacci_sequence

相关主题
板上的高人们能给科普比较functional programming language么go is ugly
我老给你们指条明路吧玩具语言其实很容易实现的
这么多人讨论 FP, 大牛推荐门语言吧Facebook’s New Spam-Killer Hints at the Future of Coding - Haskell
进入Programming版参与讨论
t****a
发帖数: 1212
11
萝卜青菜,各有所爱,不用争了。
--一个铁杆FP用户

FP
的。

【在 G***l 的大作中提到】
: Functional Programming这几年来越来越热。 最近几年FP开始流行。众多纯FP或者FP
: 为主的语言出现,比如haskell, clojure, ocaml, f#等等。 很多非FP的语言都不约而
: 同的加入一定的FP功能,C#,C++,Java(将要)。很多一定程度支持FP的比如Python,
: Ruby之类也很流行。
: FP好用吗?答案是肯定的。Emacs和它所有的插件都是lisp写的,Emacs多牛逼这里就不
: 多说了。工业界的例子,华尔街著名的高频交易公司Jane Stree Capital的系统就是
: OCaml写的,这种系统不管是的复杂性,可扩展性还是,可靠性和性能要求都是很高的。
: FP的优点在哪里?wiki的词条上面列了一些fp的特性和优点,我就不赘述了。下面说一
: 些我的个人体验。水平有限,思维比较杂乱,大家见谅。
: 写程序,不管是过程式,OO还是fp,说到底是还是数据和算法。过程式样的思维,你会

t***a
发帖数: 416
12
他刚才那个fibo写法,在haskell里n大点也跑不出

【在 p***o 的大作中提到】
: 没用过Haskell,你解释一下内部是怎么实现的,难道每个fibo n都是一个type?
: C/C++/Java里面fibo要是一个函数的话,n大一点那是跑不出结果的。

p*****2
发帖数: 21240
13
不太同意LZ。前一段时间研究过尾递归。
http://blog.sina.com.cn/s/blog_b9285de20101i5s1.html
递归本身是很自然的思维,但是你要是转成尾递归的过程就很不自然,跟iteration也
差不多。
n*w
发帖数: 3393
14
目前在c#里混着用比较多。FP解放了不少枯燥的机械coding。
有读到Java 8的lambda只是目前anonymous inner class的syntactic sugar。还是不能
attach非final的parent变量。有谁可以确认?这样的话未来Java的fp还是令人失望。
p*****2
发帖数: 21240
15

有scala怕啥?

【在 n*w 的大作中提到】
: 目前在c#里混着用比较多。FP解放了不少枯燥的机械coding。
: 有读到Java 8的lambda只是目前anonymous inner class的syntactic sugar。还是不能
: attach非final的parent变量。有谁可以确认?这样的话未来Java的fp还是令人失望。

n*w
发帖数: 3393
16
有时只让用Java

【在 p*****2 的大作中提到】
:
: 有scala怕啥?

g****t
发帖数: 31659
17
Turing诞辰一百年还是怎么回事,普林斯顿弄了个纪念活动.好多图灵奖得主
作报告.
结果好像有个人很不厚道的讲,Lambda calculus会dominate掉图灵机.

FP
的。

【在 G***l 的大作中提到】
: Functional Programming这几年来越来越热。 最近几年FP开始流行。众多纯FP或者FP
: 为主的语言出现,比如haskell, clojure, ocaml, f#等等。 很多非FP的语言都不约而
: 同的加入一定的FP功能,C#,C++,Java(将要)。很多一定程度支持FP的比如Python,
: Ruby之类也很流行。
: FP好用吗?答案是肯定的。Emacs和它所有的插件都是lisp写的,Emacs多牛逼这里就不
: 多说了。工业界的例子,华尔街著名的高频交易公司Jane Stree Capital的系统就是
: OCaml写的,这种系统不管是的复杂性,可扩展性还是,可靠性和性能要求都是很高的。
: FP的优点在哪里?wiki的词条上面列了一些fp的特性和优点,我就不赘述了。下面说一
: 些我的个人体验。水平有限,思维比较杂乱,大家见谅。
: 写程序,不管是过程式,OO还是fp,说到底是还是数据和算法。过程式样的思维,你会

n*w
发帖数: 3393
18
好像不少做programming language研究的人稍微多喜欢一些Lambda calculus。
不过本版有自认大牛可能会重复地说其只不过是语法糖。

【在 g****t 的大作中提到】
: Turing诞辰一百年还是怎么回事,普林斯顿弄了个纪念活动.好多图灵奖得主
: 作报告.
: 结果好像有个人很不厚道的讲,Lambda calculus会dominate掉图灵机.
:
: FP
: 的。

n******t
发帖数: 4406
19
但是大部分实际系统级的开发,这种搞法都会把机器搞死。
其实 FP不是什么新东西。这几年火,还是因为硬件太快同事需要计算的地方
太多的原因。

【在 G***l 的大作中提到】
: 这个简单的例子当然没什么区别。但是你不觉得recursive的定义比loop更贴近自然思
: 维吗?再说FP好的地方又不是说他能递归,现在流行的语言都能递归。优点在与是指一
: 切都是function的一种思维,建模方式,只要你用这种思维方式,斐波那契的例子你自
: 然就不会去想用循环写。

n*w
发帖数: 3393
20
FP 40 年了。

【在 n******t 的大作中提到】
: 但是大部分实际系统级的开发,这种搞法都会把机器搞死。
: 其实 FP不是什么新东西。这几年火,还是因为硬件太快同事需要计算的地方
: 太多的原因。

相关主题
Duck typing is great ...各个编程语言平均工资(ZT)
FP over head很高实践研究表明,FP代码虫子少,质量高
程序员薪水阅读scala中
进入Programming版参与讨论
r*g
发帖数: 3159
21
Fp 的竞争对手是过程式编程, 而不是oo。计算性的两大理论图灵状态机和laMbda
calculus是等价的,分别对应过程式和函数式编程。oo是另一层面的东西,不能跟fp做
二选一的比较。
r*g
发帖数: 3159
22
其实现在这些fp真的只是语法糖而已。解释器编译器还是把它们转成过程式forloop什
么的。
真正在硬件层次上能实现lambda calculus, 不用寄存器了,才是fp的真正逆袭。

【在 p*****2 的大作中提到】
: 不太同意LZ。前一段时间研究过尾递归。
: http://blog.sina.com.cn/s/blog_b9285de20101i5s1.html
: 递归本身是很自然的思维,但是你要是转成尾递归的过程就很不自然,跟iteration也
: 差不多。

s***o
发帖数: 6934
23
when mentioning functional languages, why not include arguably the most
successful one in industry usage, especially distributed computing: Erlang?
Ericsson switches
Riak (this is kicking Cassandra's ass now)
CouchDB
Amazon SimpleDB
rabbitMQ
Ejabberd
IMDB
Facebook chat backend
Whatsapp
...

FP
的。

【在 G***l 的大作中提到】
: Functional Programming这几年来越来越热。 最近几年FP开始流行。众多纯FP或者FP
: 为主的语言出现,比如haskell, clojure, ocaml, f#等等。 很多非FP的语言都不约而
: 同的加入一定的FP功能,C#,C++,Java(将要)。很多一定程度支持FP的比如Python,
: Ruby之类也很流行。
: FP好用吗?答案是肯定的。Emacs和它所有的插件都是lisp写的,Emacs多牛逼这里就不
: 多说了。工业界的例子,华尔街著名的高频交易公司Jane Stree Capital的系统就是
: OCaml写的,这种系统不管是的复杂性,可扩展性还是,可靠性和性能要求都是很高的。
: FP的优点在哪里?wiki的词条上面列了一些fp的特性和优点,我就不赘述了。下面说一
: 些我的个人体验。水平有限,思维比较杂乱,大家见谅。
: 写程序,不管是过程式,OO还是fp,说到底是还是数据和算法。过程式样的思维,你会

x****u
发帖数: 44466
24
搞死机器的唯一原因是没有搞清瓶颈所在。
12306也不是不能后台用python。

【在 n******t 的大作中提到】
: 但是大部分实际系统级的开发,这种搞法都会把机器搞死。
: 其实 FP不是什么新东西。这几年火,还是因为硬件太快同事需要计算的地方
: 太多的原因。

g*****g
发帖数: 34805
25
真是无知当有趣。匿名内部类的变量本来就只要local variable是final,instance
variable不需要。就算你非要Local variable
final Wrapper w = new Wrapper(v);
new InnerClass(w) {
// update v
}
v不就能变动了?本来就是一点糖水,加不加都不影响功能。也就你这种鸵鸟在这个问
题上喋喋不休。

【在 n*w 的大作中提到】
: 目前在c#里混着用比较多。FP解放了不少枯燥的机械coding。
: 有读到Java 8的lambda只是目前anonymous inner class的syntactic sugar。还是不能
: attach非final的parent变量。有谁可以确认?这样的话未来Java的fp还是令人失望。

y***y
发帖数: 224
26

我一直都不明白为啥local variable必须是final...

【在 g*****g 的大作中提到】
: 真是无知当有趣。匿名内部类的变量本来就只要local variable是final,instance
: variable不需要。就算你非要Local variable
: final Wrapper w = new Wrapper(v);
: new InnerClass(w) {
: // update v
: }
: v不就能变动了?本来就是一点糖水,加不加都不影响功能。也就你这种鸵鸟在这个问
: 题上喋喋不休。

g*****g
发帖数: 34805
27
因为匿名内部类的生命周期可以超过本地变量,从而导致函数返回时栈去不掉,内存泄
漏。
final的话,直接拷贝一份就行。

【在 y***y 的大作中提到】
:
: 我一直都不明白为啥local variable必须是final...

z****e
发帖数: 54598
28
这是一个很经典的问题
但是我从来都是绕过它不用匿名类
哦也

【在 y***y 的大作中提到】
:
: 我一直都不明白为啥local variable必须是final...

z****e
发帖数: 54598
29
明白了,原来如此

【在 g*****g 的大作中提到】
: 因为匿名内部类的生命周期可以超过本地变量,从而导致函数返回时栈去不掉,内存泄
: 漏。
: final的话,直接拷贝一份就行。

z****e
发帖数: 54598
30
小菊花你对这种国家层面的系统没经验就不要现了
说一个错一个,真神当时举例都明说了
铁道部这种规模用java,毫无疑问
主要问题都在db那一层上
尤其是transaction
用db2或者oracle的话,websphere/weblogic/jboss就是明摆着的利器你不用
非要自己去手写appserver,就算你牛得一塌糊涂
能搞一个weblogic一样的appserver出来
你也要看看各数据库对于python的支持到了什么程度
python对于db的api多数还停留在手写sql的阶段
不象java,有jdbc,再往上还有jpa和jdo的规范
关于transaction的ejb有完整的一套方法来处理
只需要用annotation就可以很轻松地搞定各种事务之间的合并
不过你用其他语言根本到不了db那一层
在business layer就会让内存爆掉,就你这种水平去手动控制内存的管理
不泄漏才见鬼,不是看不起你,这里估计也没人能真搞定这个东西的
尤其是手写,一不小心就漏了
你还不如告诉我你用python手写一个hadoop也不是不可以
可信度还更高点
不仅是火车票,现在几乎所有的机票也都是java搞的
除了欧洲那家,美帝已经全java了,很多年以前就全java了
最早mit的几个毕业生搞的,client side用的是swing,叹为观止
欧洲那家back end是c++
但是web就是struts那些东西,欧洲那家名字叫做amadeus
这个星球上30%的机票都出自那家公司的系统
不过你这种外行肯定接触不到那么深入的系统
可能做个reseller的programmer,用点他们提供的接口倒是很有可能
不过他们有网站可以查询机票信息,从url就可以看出他们在用什么了
.action,dispatcher,一看就是struts那些东西

【在 x****u 的大作中提到】
: 搞死机器的唯一原因是没有搞清瓶颈所在。
: 12306也不是不能后台用python。

相关主题
Scala有一点不好Python is easy and not easy
real time distributed framework大牛给推荐个fp语言
粉FP的人是因为把电脑想象成图灵机了functional programming 哪本书经典适合入门
进入Programming版参与讨论
h*****4
发帖数: 4219
31
课上刚分析过,据说是在anonymous inner class里面,对这个变量的处理其实是当作
常量了,所以要锁定住。
比方说弄了个GUI,在Jlabel那里要显示一个String,当你运行了GUI之后,这个String
就不应该由外界改变了。

【在 n*w 的大作中提到】
: 目前在c#里混着用比较多。FP解放了不少枯燥的机械coding。
: 有读到Java 8的lambda只是目前anonymous inner class的syntactic sugar。还是不能
: attach非final的parent变量。有谁可以确认?这样的话未来Java的fp还是令人失望。

h*****4
发帖数: 4219
32
re

【在 g*****g 的大作中提到】
: 因为匿名内部类的生命周期可以超过本地变量,从而导致函数返回时栈去不掉,内存泄
: 漏。
: final的话,直接拷贝一份就行。

n*w
发帖数: 3393
33
It's about semantic. 所有语言都会被编译成汇编。按这样的说法oop, logic
programming也是语法糖。不过语法糖有没有一个理论上的严格定义?
随便提醒一下看客,有人给了一个java anonymous inner class的access 非final
variable 的hack. 不要那样用。那不是实现proper closure. it will be a big mess
when it gets a little complex.

【在 r*g 的大作中提到】
: 其实现在这些fp真的只是语法糖而已。解释器编译器还是把它们转成过程式forloop什
: 么的。
: 真正在硬件层次上能实现lambda calculus, 不用寄存器了,才是fp的真正逆袭。

r*g
发帖数: 3159
34
高层次的FP我看来都是语法糖而已。但FP也可以一直到底层。例如直接作labmda
calculus的硬件,象
http://en.wikipedia.org/wiki/Graph_reduction_machine

mess

【在 n*w 的大作中提到】
: It's about semantic. 所有语言都会被编译成汇编。按这样的说法oop, logic
: programming也是语法糖。不过语法糖有没有一个理论上的严格定义?
: 随便提醒一下看客,有人给了一个java anonymous inner class的access 非final
: variable 的hack. 不要那样用。那不是实现proper closure. it will be a big mess
: when it gets a little complex.

d****i
发帖数: 4809
35
都会被编译成汇编? Native的C/C++编译后难道不是0101的机器码吗?

mess

【在 n*w 的大作中提到】
: It's about semantic. 所有语言都会被编译成汇编。按这样的说法oop, logic
: programming也是语法糖。不过语法糖有没有一个理论上的严格定义?
: 随便提醒一下看客,有人给了一个java anonymous inner class的access 非final
: variable 的hack. 不要那样用。那不是实现proper closure. it will be a big mess
: when it gets a little complex.

w******p
发帖数: 166
36
recursive Fibonacci in python, gets 100th within a second:
def fibgen(n, f1, f2):
if n==0: return f1+f2
return fibgen(n-1, f2, f1+f2)
print fibgen(100,0,1)

【在 p***o 的大作中提到】
: 不是说FP不好,你先谈谈怎么用递归算Fibonacci数列,比如说第100项把
:
: FP
: 的。

n*w
发帖数: 3393
37
You are right. Machine code is more precise.

【在 d****i 的大作中提到】
: 都会被编译成汇编? Native的C/C++编译后难道不是0101的机器码吗?
:
: mess

E*****m
发帖数: 25615
38
Erlang 的massive multi-thread 超強, 但是語法實在太糟糕了。
不知道 Akka 這些技術是不是趕上 Erlang virtual machine 了。

【在 s***o 的大作中提到】
: when mentioning functional languages, why not include arguably the most
: successful one in industry usage, especially distributed computing: Erlang?
: Ericsson switches
: Riak (this is kicking Cassandra's ass now)
: CouchDB
: Amazon SimpleDB
: rabbitMQ
: Ejabberd
: IMDB
: Facebook chat backend

d********g
发帖数: 10550
39
数字大了不行,recursion无优化算不出fib(1000),而且效率很低。有个矩阵的解法还
可以:
def _mul(A, B):
a, b, c = A
d, e, f = B
return a * d + b * e, a * e + b * f, b * e + c * f
def _pow(A, n):
if n == 1:
return A
elif n & 1 == 0:
return _pow(_mul(A, A), n // 2)
else:
return _mul(A, _pow(_mul(A, A), (n - 1) // 2))
def fib(n):
return n if n < 2 else _pow((1, 1, 0), n - 1)[0]
普通笔记本算fib(1000000)也就一两秒

【在 w******p 的大作中提到】
: recursive Fibonacci in python, gets 100th within a second:
: def fibgen(n, f1, f2):
: if n==0: return f1+f2
: return fibgen(n-1, f2, f1+f2)
: print fibgen(100,0,1)

r*******n
发帖数: 3020
40
非常赞同!
转尾递归就失去了递归带来的好处,还不如loop,
clojure里解决方案是 if 。。。 recur。。。
这种就很好。

【在 p*****2 的大作中提到】
: 不太同意LZ。前一段时间研究过尾递归。
: http://blog.sina.com.cn/s/blog_b9285de20101i5s1.html
: 递归本身是很自然的思维,但是你要是转成尾递归的过程就很不自然,跟iteration也
: 差不多。

相关主题
functional programming 哪本书经典适合入门我老给你们指条明路吧
C++ for Java programmer?这么多人讨论 FP, 大牛推荐门语言吧
板上的高人们能给科普比较functional programming language么go is ugly
进入Programming版参与讨论
s***o
发帖数: 6934
41
you are absolutely right, erlang就是语法太烂, 但otp实在太强大了
最终jvm上的Akka这些肯定会赶上的,时间问题。但也有可能发展不了那么长时间又有
新东西了。

【在 E*****m 的大作中提到】
: Erlang 的massive multi-thread 超強, 但是語法實在太糟糕了。
: 不知道 Akka 這些技術是不是趕上 Erlang virtual machine 了。

z****e
发帖数: 54598
42
如果你们说语法的话,显然应该说scala,而不是akka
akka哪有什么语法,无非一堆jars而已

【在 s***o 的大作中提到】
: you are absolutely right, erlang就是语法太烂, 但otp实在太强大了
: 最终jvm上的Akka这些肯定会赶上的,时间问题。但也有可能发展不了那么长时间又有
: 新东西了。

s***o
发帖数: 6934
43
the counter part of Akka is not the erlang language but its concurrent model
.

【在 z****e 的大作中提到】
: 如果你们说语法的话,显然应该说scala,而不是akka
: akka哪有什么语法,无非一堆jars而已

p*****2
发帖数: 21240
44

好像scala里也有个类似的。不过本来也没有禁止for while

【在 r*******n 的大作中提到】
: 非常赞同!
: 转尾递归就失去了递归带来的好处,还不如loop,
: clojure里解决方案是 if 。。。 recur。。。
: 这种就很好。

z****e
发帖数: 54598
45
也不是model吧
akka是具体的实现,而model还只是一个概念

model

【在 s***o 的大作中提到】
: the counter part of Akka is not the erlang language but its concurrent model
: .

c*********e
发帖数: 16335
46
en,oop有优点也有缺点,缺点就是,什么东西都是一个object,一个object就象一个大
包裹,占用大量内存,这样scalability就会有问题。比如同时有1千万个用户登录一个
网站做交易,那就要有1千万个java beans来为每一个用户服务,非常占内存。同时,每
个用户都要做数据库交易。这样,就显出oop的缺点。现在做memory database火起来,
可能就是基于这方面的原因。

FP
的。

【在 G***l 的大作中提到】
: Functional Programming这几年来越来越热。 最近几年FP开始流行。众多纯FP或者FP
: 为主的语言出现,比如haskell, clojure, ocaml, f#等等。 很多非FP的语言都不约而
: 同的加入一定的FP功能,C#,C++,Java(将要)。很多一定程度支持FP的比如Python,
: Ruby之类也很流行。
: FP好用吗?答案是肯定的。Emacs和它所有的插件都是lisp写的,Emacs多牛逼这里就不
: 多说了。工业界的例子,华尔街著名的高频交易公司Jane Stree Capital的系统就是
: OCaml写的,这种系统不管是的复杂性,可扩展性还是,可靠性和性能要求都是很高的。
: FP的优点在哪里?wiki的词条上面列了一些fp的特性和优点,我就不赘述了。下面说一
: 些我的个人体验。水平有限,思维比较杂乱,大家见谅。
: 写程序,不管是过程式,OO还是fp,说到底是还是数据和算法。过程式样的思维,你会

s****0
发帖数: 117
47
memory database火和oop没关系。
忘了原话怎么说的,意思是现代的硬件技术没有被充分利用,所以数据库需要重新设计
。voltDB

,每

【在 c*********e 的大作中提到】
: en,oop有优点也有缺点,缺点就是,什么东西都是一个object,一个object就象一个大
: 包裹,占用大量内存,这样scalability就会有问题。比如同时有1千万个用户登录一个
: 网站做交易,那就要有1千万个java beans来为每一个用户服务,非常占内存。同时,每
: 个用户都要做数据库交易。这样,就显出oop的缺点。现在做memory database火起来,
: 可能就是基于这方面的原因。
:
: FP
: 的。

s***o
发帖数: 6934
48
i think you got the point...

【在 z****e 的大作中提到】
: 也不是model吧
: akka是具体的实现,而model还只是一个概念
:
: model

g*****g
发帖数: 34805
49
Memory is rarely the issue with high concurrency system. Memory is too cheap
these days. Put 100 instances, each serving 100K users, with 100K Bytes for
each user session, it's only 10G memory for each instance, easily handled
by a moderate server node.

,每

【在 c*********e 的大作中提到】
: en,oop有优点也有缺点,缺点就是,什么东西都是一个object,一个object就象一个大
: 包裹,占用大量内存,这样scalability就会有问题。比如同时有1千万个用户登录一个
: 网站做交易,那就要有1千万个java beans来为每一个用户服务,非常占内存。同时,每
: 个用户都要做数据库交易。这样,就显出oop的缺点。现在做memory database火起来,
: 可能就是基于这方面的原因。
:
: FP
: 的。

s***o
发帖数: 6934
50
comparing to memory, CPU is even cheaper

cheap
for

【在 g*****g 的大作中提到】
: Memory is rarely the issue with high concurrency system. Memory is too cheap
: these days. Put 100 instances, each serving 100K users, with 100K Bytes for
: each user session, it's only 10G memory for each instance, easily handled
: by a moderate server node.
:
: ,每

相关主题
玩具语言其实很容易实现的FP over head很高
Facebook’s New Spam-Killer Hints at the Future of Coding - Haskell程序员薪水
Duck typing is great ...各个编程语言平均工资(ZT)
进入Programming版参与讨论
g*****g
发帖数: 34805
51
Not really, you have limited upside on additional CPU on a rack. Plus, many
servers charge license fee by CPU power. NoSQL is not very necessary if
scaling up is cheap.

【在 s***o 的大作中提到】
: comparing to memory, CPU is even cheaper
:
: cheap
: for

E*****m
发帖数: 25615
52

Scala 語法比 Erlang 好點, 但是不上 Akka 不能和
Erlang 的長處競爭。
你是不是認真的以為我們都不知道 Akka 不是個語言?
那你太累了。

【在 z****e 的大作中提到】
: 如果你们说语法的话,显然应该说scala,而不是akka
: akka哪有什么语法,无非一堆jars而已

y***y
发帖数: 224
53

多谢!
您的这个解释我明白,之前看到过.
可我还是不懂, 为啥只有加final之后才可以拷贝一份? 就设计成传给匿名类的时候就
是拷贝一份不行么?

【在 g*****g 的大作中提到】
: 因为匿名内部类的生命周期可以超过本地变量,从而导致函数返回时栈去不掉,内存泄
: 漏。
: final的话,直接拷贝一份就行。

n*w
发帖数: 3393
54
Good question. It's more like a design "choice".

【在 y***y 的大作中提到】
:
: 多谢!
: 您的这个解释我明白,之前看到过.
: 可我还是不懂, 为啥只有加final之后才可以拷贝一份? 就设计成传给匿名类的时候就
: 是拷贝一份不行么?

g*****g
发帖数: 34805
55
不final拷贝之后没法保持数据一致。

【在 y***y 的大作中提到】
:
: 多谢!
: 您的这个解释我明白,之前看到过.
: 可我还是不懂, 为啥只有加final之后才可以拷贝一份? 就设计成传给匿名类的时候就
: 是拷贝一份不行么?

z****e
发帖数: 54598
56
这个玩意除了电信业以外其他行业都未经过检验
可能也就是网络游戏里面有几个在用
象我们这种理论上比较适合上akka的,都没有用上
不用说其它行业了,出来的时间有些迟了
另外你装傻又不是一天两天了

【在 E*****m 的大作中提到】
:
: Scala 語法比 Erlang 好點, 但是不上 Akka 不能和
: Erlang 的長處競爭。
: 你是不是認真的以為我們都不知道 Akka 不是個語言?
: 那你太累了。

n*w
发帖数: 3393
57
Java之父James Gosling的原话:
"Closures were left out of Java initially more because of time pressures
than anything else. In the early days of Java the lack of closures was
pretty painful, and so inner classes were born: an uncomfortable compromise
that attempted to avoid a number of hard issues. But as is normal in so many
design issues, the simplifications didn't really solve any problems, they
just moved them."
只是closure 的语法糖的话就不会有 “didn't really solve any problems, they
just moved them."这样的话。

【在 n*w 的大作中提到】
: Good question. It's more like a design "choice".
a*****e
发帖数: 1700
58
goodbug 对语法糖的这个词有他自己的定义,你也不要太纠结了

compromise
many

【在 n*w 的大作中提到】
: Java之父James Gosling的原话:
: "Closures were left out of Java initially more because of time pressures
: than anything else. In the early days of Java the lack of closures was
: pretty painful, and so inner classes were born: an uncomfortable compromise
: that attempted to avoid a number of hard issues. But as is normal in so many
: design issues, the simplifications didn't really solve any problems, they
: just moved them."
: 只是closure 的语法糖的话就不会有 “didn't really solve any problems, they
: just moved them."这样的话。

a*****e
发帖数: 1700
59
这个转换叫 worker/wrapper transformation,可以把上面那个 fib 的定义自动转换
为尾递归。
http://www.cs.nott.ac.uk/~gmh/wrapper.pdf 第六节。

【在 G***l 的大作中提到】
: 我只是写了个最简单的。n大的话这个肯定也很慢。得写tail recursion版的。要追求
: 性能的话,肯定要复杂。但是从数学角度讲递归是很自然的写法。有没有搞compiler的
: 说说,非tail recursoin有没有可能让compiler做优化,如果能的话,最简单的写法也
: 能达到效率。

z****e
发帖数: 54598
60
你是不是回错了?
他们已经在说另外一个东西了

【在 a*****e 的大作中提到】
: goodbug 对语法糖的这个词有他自己的定义,你也不要太纠结了
:
: compromise
: many

相关主题
实践研究表明,FP代码虫子少,质量高real time distributed framework
阅读scala中粉FP的人是因为把电脑想象成图灵机了
Scala有一点不好Python is easy and not easy
进入Programming版参与讨论
g*****g
发帖数: 34805
61
什么叫做我自己的定义。我把wiki上的定义都拿出来了。

【在 a*****e 的大作中提到】
: goodbug 对语法糖的这个词有他自己的定义,你也不要太纠结了
:
: compromise
: many

a*****e
发帖数: 1700
62
没错啊,我就是劝 nkw 想开一点,不要老是纠结在 closure 和 inner class 的差别
了,
反正 goodbug 认为没差别,就算有差别,也是糖水的差别

【在 z****e 的大作中提到】
: 你是不是回错了?
: 他们已经在说另外一个东西了

n*w
发帖数: 3393
63
我不在乎个别id怎么认为,根本放弃和某id讨论了。正好偶然看到James的这段和前面
几个帖子的内容相关就贴上来了。
能搞个投票就好了,我很好奇有多少读过这些讨论的人还认为closure 和 inner class
没差别或只是糖水的差别。

【在 a*****e 的大作中提到】
: 没错啊,我就是劝 nkw 想开一点,不要老是纠结在 closure 和 inner class 的差别
: 了,
: 反正 goodbug 认为没差别,就算有差别,也是糖水的差别

g*****g
发帖数: 34805
64
好奇有啥用。你觉得不能实现的实现给你看了。糖水的定义在wiki上,还死不承认就是
极品了。

class

【在 n*w 的大作中提到】
: 我不在乎个别id怎么认为,根本放弃和某id讨论了。正好偶然看到James的这段和前面
: 几个帖子的内容相关就贴上来了。
: 能搞个投票就好了,我很好奇有多少读过这些讨论的人还认为closure 和 inner class
: 没差别或只是糖水的差别。

n*w
发帖数: 3393
65
Troll, 自己再读下wiki和以前关于Wiki那段的讨论,及James的那段。又精确地描叙了
自己。

【在 g*****g 的大作中提到】
: 好奇有啥用。你觉得不能实现的实现给你看了。糖水的定义在wiki上,还死不承认就是
: 极品了。
:
: class

g*****g
发帖数: 34805
66
james的话还成为救命稻草了?你小真是够极品的,james说的是java语言的设计有一些
compromise,几乎所有的语言都有很多compromise。哪里提到closure相比inner class
不是糖水了?你觉得不能实现的,我都实现给你看了,你还jjww有完没完?

【在 n*w 的大作中提到】
: Troll, 自己再读下wiki和以前关于Wiki那段的讨论,及James的那段。又精确地描叙了
: 自己。

n*w
发帖数: 3393
67
Troll. 不断重复着。

class

【在 g*****g 的大作中提到】
: james的话还成为救命稻草了?你小真是够极品的,james说的是java语言的设计有一些
: compromise,几乎所有的语言都有很多compromise。哪里提到closure相比inner class
: 不是糖水了?你觉得不能实现的,我都实现给你看了,你还jjww有完没完?

G***l
发帖数: 355
68
Functional Programming这几年来越来越热。 最近几年FP开始流行。众多纯FP或者FP
为主的语言出现,比如haskell, clojure, ocaml, f#等等。 很多非FP的语言都不约而
同的加入一定的FP功能,C#,C++,Java(将要)。很多一定程度支持FP的比如Python,
Ruby之类也很流行。
FP好用吗?答案是肯定的。Emacs和它所有的插件都是lisp写的,Emacs多牛逼这里就不
多说了。工业界的例子,华尔街著名的高频交易公司Jane Stree Capital的系统就是
OCaml写的,这种系统不管是的复杂性,可扩展性还是,可靠性和性能要求都是很高的。
FP的优点在哪里?wiki的词条上面列了一些fp的特性和优点,我就不赘述了。下面说一
些我的个人体验。水平有限,思维比较杂乱,大家见谅。
写程序,不管是过程式,OO还是fp,说到底是还是数据和算法。过程式样的思维,你会
想到一个input,然后这个input怎么转化,操作,最后变成output。OO能让你灵活的拆
分开数据和算法并且模块化。但你只要用OO建模过,你就会发现一开始你想的就是有哪
些类,你想到的都是名词,之后才会想这些对象之间有什么操作或者相互关系。而事实
上,写程序复杂的地方在于算法,而且我个人的经验,不管是需求改变还是refactor,
改code时候,大多都是在改算法方面的,而数据改变的情况较少。从形式化的角度分析
,OO在behavior model方面有天然的缺陷。你看gof那些pattern,几乎都是用来弥补oo
在behavior的扩展性,灵活性等上面各种不足的。而behavior model却是fp的强项。因
为在fp里面,最基础的是function,数据是次要的,主要是如何操作数据。而且由于没
有side effect,修改添加任何function都很灵活,这真是大多数程序逻辑扩展性的重
点。再加上fp的一些currying,high order function等等特性,在behavior建模的方
面更加强大。
抛开high level modeling上OO从名词开始,FP从动词开始的区别。在写程序上,fp更
贴近思维。现在很多人学的别扭是因为你先学了imperative,思维模式已经在那了。比
如,很多pure fp里面没有循环,只有递归。很多人觉得别扭。可是算法归根到底是数
学,你仔细想想,从小到大做了那么多数学题,解题时候有用到“循环”吗?我还真没
有。但到了计算机世界就变了。斐波那契数列多简洁,可我却要写个循环。。。在算法
intensive的场合,比如一些数学的模型,compiler,DSL, AI等等地方,fp用的很多,
比如lisp可就是ai的人搞出来的。
FP不容易出错。写程序出错有几种情况,一种是需求理解错了,人家要b=2*a你却写成b
=3*a。另外一种是技术不够熟练,比如++i跟i++没搞清楚区别就用了。这两个能通过高
水平的程序员和沟通解决。另外一种是程序很复杂,人就容易就会犯错。人的能力有限
,一下给你n个数字,一分钟后让你说出来,大多人肯定都不行。虽然模块化的理念很
美好,可实际操作起来,总是有很多地方还是很复杂。而fp没有side effect,大大降
低了复杂代码逻辑里人犯错的机会,因为你写一个function的时候只要保持它的输入输
出对,完全不需要考虑和别的function的互相影响。
FP会取代OO吗?我觉得就像OO没有取代过程式一样,FP也不会取代OO。且不说c这样的
还很流行。就是在OO程序里,过程式的影子到处可见,一个方法内部的实现不就是过程
式的。未来肯定是FP和OO并行。
没有万能钥匙。FP当然有缺点。有些是天然的,FP自己的特性比如no side effect,
lazy之类带来的,所以不是任何地方都是适用FP的。另外一些是暂时的,比如会的人少
,因为过去大学都是不教fp的,就算有也是选修,而现在很多学校的教学里,
imperative并不比fp优先,学生一开始就是接触的fp的思维。再比如类库少,没有东西
一开始就类库多,随着用的人多类库自然会越来越多等等。
最后举个现实的例子,现在FP的工业界用的最多的地方之一就是花街front office,不
少公司都开始在一些适用的场合用fp。因为fp正满足了他们的要求。需求改动多,市场
风云变幻,今天要这么做,明天要那样。出错的可能要降到最低,不然直接就是银子的
损失。算法多而数据模型变动很少,毕竟stock,bond就那么些attribute,而利用这些
attribute的不同方法技术却很多。fp暂时的缺点对他们也不是问题,会的人少?自有
高薪招来的聪明人会。类库少?大多都是in house实现的东西,除开gui,后台的系统
很少用到第三方的类库。
p***o
发帖数: 1252
69
不是说FP不好,你先谈谈怎么用递归算Fibonacci数列,比如说第100项把

FP
的。

【在 G***l 的大作中提到】
: Functional Programming这几年来越来越热。 最近几年FP开始流行。众多纯FP或者FP
: 为主的语言出现,比如haskell, clojure, ocaml, f#等等。 很多非FP的语言都不约而
: 同的加入一定的FP功能,C#,C++,Java(将要)。很多一定程度支持FP的比如Python,
: Ruby之类也很流行。
: FP好用吗?答案是肯定的。Emacs和它所有的插件都是lisp写的,Emacs多牛逼这里就不
: 多说了。工业界的例子,华尔街著名的高频交易公司Jane Stree Capital的系统就是
: OCaml写的,这种系统不管是的复杂性,可扩展性还是,可靠性和性能要求都是很高的。
: FP的优点在哪里?wiki的词条上面列了一些fp的特性和优点,我就不赘述了。下面说一
: 些我的个人体验。水平有限,思维比较杂乱,大家见谅。
: 写程序,不管是过程式,OO还是fp,说到底是还是数据和算法。过程式样的思维,你会

G***l
发帖数: 355
70
你想说什么?
Haskell:
fibo 0 = 0
fibo 1 = 1
fibo n = fibo (n-1) + fibo (n-2)

【在 p***o 的大作中提到】
: 不是说FP不好,你先谈谈怎么用递归算Fibonacci数列,比如说第100项把
:
: FP
: 的。

相关主题
Python is easy and not easyC++ for Java programmer?
大牛给推荐个fp语言板上的高人们能给科普比较functional programming language么
functional programming 哪本书经典适合入门我老给你们指条明路吧
进入Programming版参与讨论
p***o
发帖数: 1252
71
没用过Haskell,你解释一下内部是怎么实现的,难道每个fibo n都是一个type?
C/C++/Java里面fibo要是一个函数的话,n大一点那是跑不出结果的。

【在 G***l 的大作中提到】
: 你想说什么?
: Haskell:
: fibo 0 = 0
: fibo 1 = 1
: fibo n = fibo (n-1) + fibo (n-2)

G***l
发帖数: 355
72
我只是写了个最简单的。n大的话这个肯定也很慢。得写tail recursion版的。要追求
性能的话,肯定要复杂。但是从数学角度讲递归是很自然的写法。有没有搞compiler的
说说,非tail recursoin有没有可能让compiler做优化,如果能的话,最简单的写法也
能达到效率。

【在 p***o 的大作中提到】
: 没用过Haskell,你解释一下内部是怎么实现的,难道每个fibo n都是一个type?
: C/C++/Java里面fibo要是一个函数的话,n大一点那是跑不出结果的。

g****r
发帖数: 1589
73
算这玩意难道不正是FP的强项吗?

【在 p***o 的大作中提到】
: 不是说FP不好,你先谈谈怎么用递归算Fibonacci数列,比如说第100项把
:
: FP
: 的。

p***o
发帖数: 1252
74
我也觉得应该是,就是不明白具体怎么算的。

【在 g****r 的大作中提到】
: 算这玩意难道不正是FP的强项吗?
p***o
发帖数: 1252
75
好吧,查了下,还真不如用个loop呢 ...
haskell.org/haskellwiki/The_Fibonacci_sequence

【在 p***o 的大作中提到】
: 我也觉得应该是,就是不明白具体怎么算的。
G***l
发帖数: 355
76
这个简单的例子当然没什么区别。但是你不觉得recursive的定义比loop更贴近自然思
维吗?再说FP好的地方又不是说他能递归,现在流行的语言都能递归。优点在与是指一
切都是function的一种思维,建模方式,只要你用这种思维方式,斐波那契的例子你自
然就不会去想用循环写。

【在 p***o 的大作中提到】
: 好吧,查了下,还真不如用个loop呢 ...
: haskell.org/haskellwiki/The_Fibonacci_sequence

g****r
发帖数: 1589
77
这种写法应该更接近于数学定义,可读性也强一些,碰到复杂的情况这种写法可能更简
洁一些,不过这个也看各人的喜好了
用尾递归的话,compiler应该会自动编译成loop,性能上区别应该不大

【在 p***o 的大作中提到】
: 好吧,查了下,还真不如用个loop呢 ...
: haskell.org/haskellwiki/The_Fibonacci_sequence

t****a
发帖数: 1212
78
萝卜青菜,各有所爱,不用争了。
--一个铁杆FP用户

FP
的。

【在 G***l 的大作中提到】
: Functional Programming这几年来越来越热。 最近几年FP开始流行。众多纯FP或者FP
: 为主的语言出现,比如haskell, clojure, ocaml, f#等等。 很多非FP的语言都不约而
: 同的加入一定的FP功能,C#,C++,Java(将要)。很多一定程度支持FP的比如Python,
: Ruby之类也很流行。
: FP好用吗?答案是肯定的。Emacs和它所有的插件都是lisp写的,Emacs多牛逼这里就不
: 多说了。工业界的例子,华尔街著名的高频交易公司Jane Stree Capital的系统就是
: OCaml写的,这种系统不管是的复杂性,可扩展性还是,可靠性和性能要求都是很高的。
: FP的优点在哪里?wiki的词条上面列了一些fp的特性和优点,我就不赘述了。下面说一
: 些我的个人体验。水平有限,思维比较杂乱,大家见谅。
: 写程序,不管是过程式,OO还是fp,说到底是还是数据和算法。过程式样的思维,你会

t***a
发帖数: 416
79
他刚才那个fibo写法,在haskell里n大点也跑不出

【在 p***o 的大作中提到】
: 没用过Haskell,你解释一下内部是怎么实现的,难道每个fibo n都是一个type?
: C/C++/Java里面fibo要是一个函数的话,n大一点那是跑不出结果的。

p*****2
发帖数: 21240
80
不太同意LZ。前一段时间研究过尾递归。
http://blog.sina.com.cn/s/blog_b9285de20101i5s1.html
递归本身是很自然的思维,但是你要是转成尾递归的过程就很不自然,跟iteration也
差不多。
相关主题
这么多人讨论 FP, 大牛推荐门语言吧Facebook’s New Spam-Killer Hints at the Future of Coding - Haskell
go is uglyDuck typing is great ...
玩具语言其实很容易实现的FP over head很高
进入Programming版参与讨论
n*w
发帖数: 3393
81
目前在c#里混着用比较多。FP解放了不少枯燥的机械coding。
有读到Java 8的lambda只是目前anonymous inner class的syntactic sugar。还是不能
attach非final的parent变量。有谁可以确认?这样的话未来Java的fp还是令人失望。
p*****2
发帖数: 21240
82

有scala怕啥?

【在 n*w 的大作中提到】
: 目前在c#里混着用比较多。FP解放了不少枯燥的机械coding。
: 有读到Java 8的lambda只是目前anonymous inner class的syntactic sugar。还是不能
: attach非final的parent变量。有谁可以确认?这样的话未来Java的fp还是令人失望。

n*w
发帖数: 3393
83
有时只让用Java

【在 p*****2 的大作中提到】
:
: 有scala怕啥?

g****t
发帖数: 31659
84
Turing诞辰一百年还是怎么回事,普林斯顿弄了个纪念活动.好多图灵奖得主
作报告.
结果好像有个人很不厚道的讲,Lambda calculus会dominate掉图灵机.

FP
的。

【在 G***l 的大作中提到】
: Functional Programming这几年来越来越热。 最近几年FP开始流行。众多纯FP或者FP
: 为主的语言出现,比如haskell, clojure, ocaml, f#等等。 很多非FP的语言都不约而
: 同的加入一定的FP功能,C#,C++,Java(将要)。很多一定程度支持FP的比如Python,
: Ruby之类也很流行。
: FP好用吗?答案是肯定的。Emacs和它所有的插件都是lisp写的,Emacs多牛逼这里就不
: 多说了。工业界的例子,华尔街著名的高频交易公司Jane Stree Capital的系统就是
: OCaml写的,这种系统不管是的复杂性,可扩展性还是,可靠性和性能要求都是很高的。
: FP的优点在哪里?wiki的词条上面列了一些fp的特性和优点,我就不赘述了。下面说一
: 些我的个人体验。水平有限,思维比较杂乱,大家见谅。
: 写程序,不管是过程式,OO还是fp,说到底是还是数据和算法。过程式样的思维,你会

n*w
发帖数: 3393
85
好像不少做programming language研究的人稍微多喜欢一些Lambda calculus。
不过本版有自认大牛可能会重复地说其只不过是语法糖。

【在 g****t 的大作中提到】
: Turing诞辰一百年还是怎么回事,普林斯顿弄了个纪念活动.好多图灵奖得主
: 作报告.
: 结果好像有个人很不厚道的讲,Lambda calculus会dominate掉图灵机.
:
: FP
: 的。

n******t
发帖数: 4406
86
但是大部分实际系统级的开发,这种搞法都会把机器搞死。
其实 FP不是什么新东西。这几年火,还是因为硬件太快同事需要计算的地方
太多的原因。

【在 G***l 的大作中提到】
: 这个简单的例子当然没什么区别。但是你不觉得recursive的定义比loop更贴近自然思
: 维吗?再说FP好的地方又不是说他能递归,现在流行的语言都能递归。优点在与是指一
: 切都是function的一种思维,建模方式,只要你用这种思维方式,斐波那契的例子你自
: 然就不会去想用循环写。

n*w
发帖数: 3393
87
FP 40 年了。

【在 n******t 的大作中提到】
: 但是大部分实际系统级的开发,这种搞法都会把机器搞死。
: 其实 FP不是什么新东西。这几年火,还是因为硬件太快同事需要计算的地方
: 太多的原因。

r*g
发帖数: 3159
88
Fp 的竞争对手是过程式编程, 而不是oo。计算性的两大理论图灵状态机和laMbda
calculus是等价的,分别对应过程式和函数式编程。oo是另一层面的东西,不能跟fp做
二选一的比较。
r*g
发帖数: 3159
89
其实现在这些fp真的只是语法糖而已。解释器编译器还是把它们转成过程式forloop什
么的。
真正在硬件层次上能实现lambda calculus, 不用寄存器了,才是fp的真正逆袭。

【在 p*****2 的大作中提到】
: 不太同意LZ。前一段时间研究过尾递归。
: http://blog.sina.com.cn/s/blog_b9285de20101i5s1.html
: 递归本身是很自然的思维,但是你要是转成尾递归的过程就很不自然,跟iteration也
: 差不多。

s***o
发帖数: 6934
90
when mentioning functional languages, why not include arguably the most
successful one in industry usage, especially distributed computing: Erlang?
Ericsson switches
Riak (this is kicking Cassandra's ass now)
CouchDB
Amazon SimpleDB
rabbitMQ
Ejabberd
IMDB
Facebook chat backend
Whatsapp
...

FP
的。

【在 G***l 的大作中提到】
: Functional Programming这几年来越来越热。 最近几年FP开始流行。众多纯FP或者FP
: 为主的语言出现,比如haskell, clojure, ocaml, f#等等。 很多非FP的语言都不约而
: 同的加入一定的FP功能,C#,C++,Java(将要)。很多一定程度支持FP的比如Python,
: Ruby之类也很流行。
: FP好用吗?答案是肯定的。Emacs和它所有的插件都是lisp写的,Emacs多牛逼这里就不
: 多说了。工业界的例子,华尔街著名的高频交易公司Jane Stree Capital的系统就是
: OCaml写的,这种系统不管是的复杂性,可扩展性还是,可靠性和性能要求都是很高的。
: FP的优点在哪里?wiki的词条上面列了一些fp的特性和优点,我就不赘述了。下面说一
: 些我的个人体验。水平有限,思维比较杂乱,大家见谅。
: 写程序,不管是过程式,OO还是fp,说到底是还是数据和算法。过程式样的思维,你会

相关主题
程序员薪水阅读scala中
各个编程语言平均工资(ZT)Scala有一点不好
实践研究表明,FP代码虫子少,质量高real time distributed framework
进入Programming版参与讨论
x****u
发帖数: 44466
91
搞死机器的唯一原因是没有搞清瓶颈所在。
12306也不是不能后台用python。

【在 n******t 的大作中提到】
: 但是大部分实际系统级的开发,这种搞法都会把机器搞死。
: 其实 FP不是什么新东西。这几年火,还是因为硬件太快同事需要计算的地方
: 太多的原因。

g*****g
发帖数: 34805
92
真是无知当有趣。匿名内部类的变量本来就只要local variable是final,instance
variable不需要。就算你非要Local variable
final Wrapper w = new Wrapper(v);
new InnerClass(w) {
// update v
}
v不就能变动了?本来就是一点糖水,加不加都不影响功能。也就你这种鸵鸟在这个问
题上喋喋不休。

【在 n*w 的大作中提到】
: 目前在c#里混着用比较多。FP解放了不少枯燥的机械coding。
: 有读到Java 8的lambda只是目前anonymous inner class的syntactic sugar。还是不能
: attach非final的parent变量。有谁可以确认?这样的话未来Java的fp还是令人失望。

y***y
发帖数: 224
93

我一直都不明白为啥local variable必须是final...

【在 g*****g 的大作中提到】
: 真是无知当有趣。匿名内部类的变量本来就只要local variable是final,instance
: variable不需要。就算你非要Local variable
: final Wrapper w = new Wrapper(v);
: new InnerClass(w) {
: // update v
: }
: v不就能变动了?本来就是一点糖水,加不加都不影响功能。也就你这种鸵鸟在这个问
: 题上喋喋不休。

g*****g
发帖数: 34805
94
因为匿名内部类的生命周期可以超过本地变量,从而导致函数返回时栈去不掉,内存泄
漏。
final的话,直接拷贝一份就行。

【在 y***y 的大作中提到】
:
: 我一直都不明白为啥local variable必须是final...

z****e
发帖数: 54598
95
这是一个很经典的问题
但是我从来都是绕过它不用匿名类
哦也

【在 y***y 的大作中提到】
:
: 我一直都不明白为啥local variable必须是final...

z****e
发帖数: 54598
96
明白了,原来如此

【在 g*****g 的大作中提到】
: 因为匿名内部类的生命周期可以超过本地变量,从而导致函数返回时栈去不掉,内存泄
: 漏。
: final的话,直接拷贝一份就行。

z****e
发帖数: 54598
97
小菊花你对这种国家层面的系统没经验就不要现了
说一个错一个,真神当时举例都明说了
铁道部这种规模用java,毫无疑问
主要问题都在db那一层上
尤其是transaction
用db2或者oracle的话,websphere/weblogic/jboss就是明摆着的利器你不用
非要自己去手写appserver,就算你牛得一塌糊涂
能搞一个weblogic一样的appserver出来
你也要看看各数据库对于python的支持到了什么程度
python对于db的api多数还停留在手写sql的阶段
不象java,有jdbc,再往上还有jpa和jdo的规范
关于transaction的ejb有完整的一套方法来处理
只需要用annotation就可以很轻松地搞定各种事务之间的合并
不过你用其他语言根本到不了db那一层
在business layer就会让内存爆掉,就你这种水平去手动控制内存的管理
不泄漏才见鬼,不是看不起你,这里估计也没人能真搞定这个东西的
尤其是手写,一不小心就漏了
你还不如告诉我你用python手写一个hadoop也不是不可以
可信度还更高点
不仅是火车票,现在几乎所有的机票也都是java搞的
除了欧洲那家,美帝已经全java了,很多年以前就全java了
最早mit的几个毕业生搞的,client side用的是swing,叹为观止
欧洲那家back end是c++
但是web就是struts那些东西,欧洲那家名字叫做amadeus
这个星球上30%的机票都出自那家公司的系统
不过你这种外行肯定接触不到那么深入的系统
可能做个reseller的programmer,用点他们提供的接口倒是很有可能
不过他们有网站可以查询机票信息,从url就可以看出他们在用什么了
.action,dispatcher,一看就是struts那些东西

【在 x****u 的大作中提到】
: 搞死机器的唯一原因是没有搞清瓶颈所在。
: 12306也不是不能后台用python。

h*****4
发帖数: 4219
98
课上刚分析过,据说是在anonymous inner class里面,对这个变量的处理其实是当作
常量了,所以要锁定住。
比方说弄了个GUI,在Jlabel那里要显示一个String,当你运行了GUI之后,这个String
就不应该由外界改变了。

【在 n*w 的大作中提到】
: 目前在c#里混着用比较多。FP解放了不少枯燥的机械coding。
: 有读到Java 8的lambda只是目前anonymous inner class的syntactic sugar。还是不能
: attach非final的parent变量。有谁可以确认?这样的话未来Java的fp还是令人失望。

h*****4
发帖数: 4219
99
re

【在 g*****g 的大作中提到】
: 因为匿名内部类的生命周期可以超过本地变量,从而导致函数返回时栈去不掉,内存泄
: 漏。
: final的话,直接拷贝一份就行。

n*w
发帖数: 3393
100
It's about semantic. 所有语言都会被编译成汇编。按这样的说法oop, logic
programming也是语法糖。不过语法糖有没有一个理论上的严格定义?
随便提醒一下看客,有人给了一个java anonymous inner class的access 非final
variable 的hack. 不要那样用。那不是实现proper closure. it will be a big mess
when it gets a little complex.

【在 r*g 的大作中提到】
: 其实现在这些fp真的只是语法糖而已。解释器编译器还是把它们转成过程式forloop什
: 么的。
: 真正在硬件层次上能实现lambda calculus, 不用寄存器了,才是fp的真正逆袭。

相关主题
粉FP的人是因为把电脑想象成图灵机了functional programming 哪本书经典适合入门
Python is easy and not easyC++ for Java programmer?
大牛给推荐个fp语言板上的高人们能给科普比较functional programming language么
进入Programming版参与讨论
r*g
发帖数: 3159
101
高层次的FP我看来都是语法糖而已。但FP也可以一直到底层。例如直接作labmda
calculus的硬件,象
http://en.wikipedia.org/wiki/Graph_reduction_machine

mess

【在 n*w 的大作中提到】
: It's about semantic. 所有语言都会被编译成汇编。按这样的说法oop, logic
: programming也是语法糖。不过语法糖有没有一个理论上的严格定义?
: 随便提醒一下看客,有人给了一个java anonymous inner class的access 非final
: variable 的hack. 不要那样用。那不是实现proper closure. it will be a big mess
: when it gets a little complex.

d****i
发帖数: 4809
102
都会被编译成汇编? Native的C/C++编译后难道不是0101的机器码吗?

mess

【在 n*w 的大作中提到】
: It's about semantic. 所有语言都会被编译成汇编。按这样的说法oop, logic
: programming也是语法糖。不过语法糖有没有一个理论上的严格定义?
: 随便提醒一下看客,有人给了一个java anonymous inner class的access 非final
: variable 的hack. 不要那样用。那不是实现proper closure. it will be a big mess
: when it gets a little complex.

w******p
发帖数: 166
103
recursive Fibonacci in python, gets 100th within a second:
def fibgen(n, f1, f2):
if n==0: return f1+f2
return fibgen(n-1, f2, f1+f2)
print fibgen(100,0,1)

【在 p***o 的大作中提到】
: 不是说FP不好,你先谈谈怎么用递归算Fibonacci数列,比如说第100项把
:
: FP
: 的。

n*w
发帖数: 3393
104
You are right. Machine code is more precise.

【在 d****i 的大作中提到】
: 都会被编译成汇编? Native的C/C++编译后难道不是0101的机器码吗?
:
: mess

E*****m
发帖数: 25615
105
Erlang 的massive multi-thread 超強, 但是語法實在太糟糕了。
不知道 Akka 這些技術是不是趕上 Erlang virtual machine 了。

【在 s***o 的大作中提到】
: when mentioning functional languages, why not include arguably the most
: successful one in industry usage, especially distributed computing: Erlang?
: Ericsson switches
: Riak (this is kicking Cassandra's ass now)
: CouchDB
: Amazon SimpleDB
: rabbitMQ
: Ejabberd
: IMDB
: Facebook chat backend

d********g
发帖数: 10550
106
数字大了不行,recursion无优化算不出fib(1000),而且效率很低。有个矩阵的解法还
可以:
def _mul(A, B):
a, b, c = A
d, e, f = B
return a * d + b * e, a * e + b * f, b * e + c * f
def _pow(A, n):
if n == 1:
return A
elif n & 1 == 0:
return _pow(_mul(A, A), n // 2)
else:
return _mul(A, _pow(_mul(A, A), (n - 1) // 2))
def fib(n):
return n if n < 2 else _pow((1, 1, 0), n - 1)[0]
普通笔记本算fib(1000000)也就一两秒

【在 w******p 的大作中提到】
: recursive Fibonacci in python, gets 100th within a second:
: def fibgen(n, f1, f2):
: if n==0: return f1+f2
: return fibgen(n-1, f2, f1+f2)
: print fibgen(100,0,1)

r*******n
发帖数: 3020
107
非常赞同!
转尾递归就失去了递归带来的好处,还不如loop,
clojure里解决方案是 if 。。。 recur。。。
这种就很好。

【在 p*****2 的大作中提到】
: 不太同意LZ。前一段时间研究过尾递归。
: http://blog.sina.com.cn/s/blog_b9285de20101i5s1.html
: 递归本身是很自然的思维,但是你要是转成尾递归的过程就很不自然,跟iteration也
: 差不多。

s***o
发帖数: 6934
108
you are absolutely right, erlang就是语法太烂, 但otp实在太强大了
最终jvm上的Akka这些肯定会赶上的,时间问题。但也有可能发展不了那么长时间又有
新东西了。

【在 E*****m 的大作中提到】
: Erlang 的massive multi-thread 超強, 但是語法實在太糟糕了。
: 不知道 Akka 這些技術是不是趕上 Erlang virtual machine 了。

z****e
发帖数: 54598
109
如果你们说语法的话,显然应该说scala,而不是akka
akka哪有什么语法,无非一堆jars而已

【在 s***o 的大作中提到】
: you are absolutely right, erlang就是语法太烂, 但otp实在太强大了
: 最终jvm上的Akka这些肯定会赶上的,时间问题。但也有可能发展不了那么长时间又有
: 新东西了。

s***o
发帖数: 6934
110
the counter part of Akka is not the erlang language but its concurrent model
.

【在 z****e 的大作中提到】
: 如果你们说语法的话,显然应该说scala,而不是akka
: akka哪有什么语法,无非一堆jars而已

相关主题
板上的高人们能给科普比较functional programming language么go is ugly
我老给你们指条明路吧玩具语言其实很容易实现的
这么多人讨论 FP, 大牛推荐门语言吧Facebook’s New Spam-Killer Hints at the Future of Coding - Haskell
进入Programming版参与讨论
p*****2
发帖数: 21240
111

好像scala里也有个类似的。不过本来也没有禁止for while

【在 r*******n 的大作中提到】
: 非常赞同!
: 转尾递归就失去了递归带来的好处,还不如loop,
: clojure里解决方案是 if 。。。 recur。。。
: 这种就很好。

z****e
发帖数: 54598
112
也不是model吧
akka是具体的实现,而model还只是一个概念

model

【在 s***o 的大作中提到】
: the counter part of Akka is not the erlang language but its concurrent model
: .

c*********e
发帖数: 16335
113
en,oop有优点也有缺点,缺点就是,什么东西都是一个object,一个object就象一个大
包裹,占用大量内存,这样scalability就会有问题。比如同时有1千万个用户登录一个
网站做交易,那就要有1千万个java beans来为每一个用户服务,非常占内存。同时,每
个用户都要做数据库交易。这样,就显出oop的缺点。现在做memory database火起来,
可能就是基于这方面的原因。

FP
的。

【在 G***l 的大作中提到】
: Functional Programming这几年来越来越热。 最近几年FP开始流行。众多纯FP或者FP
: 为主的语言出现,比如haskell, clojure, ocaml, f#等等。 很多非FP的语言都不约而
: 同的加入一定的FP功能,C#,C++,Java(将要)。很多一定程度支持FP的比如Python,
: Ruby之类也很流行。
: FP好用吗?答案是肯定的。Emacs和它所有的插件都是lisp写的,Emacs多牛逼这里就不
: 多说了。工业界的例子,华尔街著名的高频交易公司Jane Stree Capital的系统就是
: OCaml写的,这种系统不管是的复杂性,可扩展性还是,可靠性和性能要求都是很高的。
: FP的优点在哪里?wiki的词条上面列了一些fp的特性和优点,我就不赘述了。下面说一
: 些我的个人体验。水平有限,思维比较杂乱,大家见谅。
: 写程序,不管是过程式,OO还是fp,说到底是还是数据和算法。过程式样的思维,你会

s****0
发帖数: 117
114
memory database火和oop没关系。
忘了原话怎么说的,意思是现代的硬件技术没有被充分利用,所以数据库需要重新设计
。voltDB

,每

【在 c*********e 的大作中提到】
: en,oop有优点也有缺点,缺点就是,什么东西都是一个object,一个object就象一个大
: 包裹,占用大量内存,这样scalability就会有问题。比如同时有1千万个用户登录一个
: 网站做交易,那就要有1千万个java beans来为每一个用户服务,非常占内存。同时,每
: 个用户都要做数据库交易。这样,就显出oop的缺点。现在做memory database火起来,
: 可能就是基于这方面的原因。
:
: FP
: 的。

s***o
发帖数: 6934
115
i think you got the point...

【在 z****e 的大作中提到】
: 也不是model吧
: akka是具体的实现,而model还只是一个概念
:
: model

g*****g
发帖数: 34805
116
Memory is rarely the issue with high concurrency system. Memory is too cheap
these days. Put 100 instances, each serving 100K users, with 100K Bytes for
each user session, it's only 10G memory for each instance, easily handled
by a moderate server node.

,每

【在 c*********e 的大作中提到】
: en,oop有优点也有缺点,缺点就是,什么东西都是一个object,一个object就象一个大
: 包裹,占用大量内存,这样scalability就会有问题。比如同时有1千万个用户登录一个
: 网站做交易,那就要有1千万个java beans来为每一个用户服务,非常占内存。同时,每
: 个用户都要做数据库交易。这样,就显出oop的缺点。现在做memory database火起来,
: 可能就是基于这方面的原因。
:
: FP
: 的。

s***o
发帖数: 6934
117
comparing to memory, CPU is even cheaper

cheap
for

【在 g*****g 的大作中提到】
: Memory is rarely the issue with high concurrency system. Memory is too cheap
: these days. Put 100 instances, each serving 100K users, with 100K Bytes for
: each user session, it's only 10G memory for each instance, easily handled
: by a moderate server node.
:
: ,每

g*****g
发帖数: 34805
118
Not really, you have limited upside on additional CPU on a rack. Plus, many
servers charge license fee by CPU power. NoSQL is not very necessary if
scaling up is cheap.

【在 s***o 的大作中提到】
: comparing to memory, CPU is even cheaper
:
: cheap
: for

E*****m
发帖数: 25615
119

Scala 語法比 Erlang 好點, 但是不上 Akka 不能和
Erlang 的長處競爭。
你是不是認真的以為我們都不知道 Akka 不是個語言?
那你太累了。

【在 z****e 的大作中提到】
: 如果你们说语法的话,显然应该说scala,而不是akka
: akka哪有什么语法,无非一堆jars而已

y***y
发帖数: 224
120

多谢!
您的这个解释我明白,之前看到过.
可我还是不懂, 为啥只有加final之后才可以拷贝一份? 就设计成传给匿名类的时候就
是拷贝一份不行么?

【在 g*****g 的大作中提到】
: 因为匿名内部类的生命周期可以超过本地变量,从而导致函数返回时栈去不掉,内存泄
: 漏。
: final的话,直接拷贝一份就行。

相关主题
Duck typing is great ...各个编程语言平均工资(ZT)
FP over head很高实践研究表明,FP代码虫子少,质量高
程序员薪水阅读scala中
进入Programming版参与讨论
n*w
发帖数: 3393
121
Good question. It's more like a design "choice".

【在 y***y 的大作中提到】
:
: 多谢!
: 您的这个解释我明白,之前看到过.
: 可我还是不懂, 为啥只有加final之后才可以拷贝一份? 就设计成传给匿名类的时候就
: 是拷贝一份不行么?

g*****g
发帖数: 34805
122
不final拷贝之后没法保持数据一致。

【在 y***y 的大作中提到】
:
: 多谢!
: 您的这个解释我明白,之前看到过.
: 可我还是不懂, 为啥只有加final之后才可以拷贝一份? 就设计成传给匿名类的时候就
: 是拷贝一份不行么?

z****e
发帖数: 54598
123
这个玩意除了电信业以外其他行业都未经过检验
可能也就是网络游戏里面有几个在用
象我们这种理论上比较适合上akka的,都没有用上
不用说其它行业了,出来的时间有些迟了
另外你装傻又不是一天两天了

【在 E*****m 的大作中提到】
:
: Scala 語法比 Erlang 好點, 但是不上 Akka 不能和
: Erlang 的長處競爭。
: 你是不是認真的以為我們都不知道 Akka 不是個語言?
: 那你太累了。

n*w
发帖数: 3393
124
Java之父James Gosling的原话:
"Closures were left out of Java initially more because of time pressures
than anything else. In the early days of Java the lack of closures was
pretty painful, and so inner classes were born: an uncomfortable compromise
that attempted to avoid a number of hard issues. But as is normal in so many
design issues, the simplifications didn't really solve any problems, they
just moved them."
只是closure 的语法糖的话就不会有 “didn't really solve any problems, they
just moved them."这样的话。

【在 n*w 的大作中提到】
: Good question. It's more like a design "choice".
a*****e
发帖数: 1700
125
goodbug 对语法糖的这个词有他自己的定义,你也不要太纠结了

compromise
many

【在 n*w 的大作中提到】
: Java之父James Gosling的原话:
: "Closures were left out of Java initially more because of time pressures
: than anything else. In the early days of Java the lack of closures was
: pretty painful, and so inner classes were born: an uncomfortable compromise
: that attempted to avoid a number of hard issues. But as is normal in so many
: design issues, the simplifications didn't really solve any problems, they
: just moved them."
: 只是closure 的语法糖的话就不会有 “didn't really solve any problems, they
: just moved them."这样的话。

a*****e
发帖数: 1700
126
这个转换叫 worker/wrapper transformation,可以把上面那个 fib 的定义自动转换
为尾递归。
http://www.cs.nott.ac.uk/~gmh/wrapper.pdf 第六节。

【在 G***l 的大作中提到】
: 我只是写了个最简单的。n大的话这个肯定也很慢。得写tail recursion版的。要追求
: 性能的话,肯定要复杂。但是从数学角度讲递归是很自然的写法。有没有搞compiler的
: 说说,非tail recursoin有没有可能让compiler做优化,如果能的话,最简单的写法也
: 能达到效率。

z****e
发帖数: 54598
127
你是不是回错了?
他们已经在说另外一个东西了

【在 a*****e 的大作中提到】
: goodbug 对语法糖的这个词有他自己的定义,你也不要太纠结了
:
: compromise
: many

g*****g
发帖数: 34805
128
什么叫做我自己的定义。我把wiki上的定义都拿出来了。

【在 a*****e 的大作中提到】
: goodbug 对语法糖的这个词有他自己的定义,你也不要太纠结了
:
: compromise
: many

a*****e
发帖数: 1700
129
没错啊,我就是劝 nkw 想开一点,不要老是纠结在 closure 和 inner class 的差别
了,
反正 goodbug 认为没差别,就算有差别,也是糖水的差别

【在 z****e 的大作中提到】
: 你是不是回错了?
: 他们已经在说另外一个东西了

n*w
发帖数: 3393
130
我不在乎个别id怎么认为,根本放弃和某id讨论了。正好偶然看到James的这段和前面
几个帖子的内容相关就贴上来了。
能搞个投票就好了,我很好奇有多少读过这些讨论的人还认为closure 和 inner class
没差别或只是糖水的差别。

【在 a*****e 的大作中提到】
: 没错啊,我就是劝 nkw 想开一点,不要老是纠结在 closure 和 inner class 的差别
: 了,
: 反正 goodbug 认为没差别,就算有差别,也是糖水的差别

相关主题
Scala有一点不好Python is easy and not easy
real time distributed framework大牛给推荐个fp语言
粉FP的人是因为把电脑想象成图灵机了functional programming 哪本书经典适合入门
进入Programming版参与讨论
g*****g
发帖数: 34805
131
好奇有啥用。你觉得不能实现的实现给你看了。糖水的定义在wiki上,还死不承认就是
极品了。

class

【在 n*w 的大作中提到】
: 我不在乎个别id怎么认为,根本放弃和某id讨论了。正好偶然看到James的这段和前面
: 几个帖子的内容相关就贴上来了。
: 能搞个投票就好了,我很好奇有多少读过这些讨论的人还认为closure 和 inner class
: 没差别或只是糖水的差别。

n*w
发帖数: 3393
132
Troll, 自己再读下wiki和以前关于Wiki那段的讨论,及James的那段。又精确地描叙了
自己。

【在 g*****g 的大作中提到】
: 好奇有啥用。你觉得不能实现的实现给你看了。糖水的定义在wiki上,还死不承认就是
: 极品了。
:
: class

g*****g
发帖数: 34805
133
james的话还成为救命稻草了?你小真是够极品的,james说的是java语言的设计有一些
compromise,几乎所有的语言都有很多compromise。哪里提到closure相比inner class
不是糖水了?你觉得不能实现的,我都实现给你看了,你还jjww有完没完?

【在 n*w 的大作中提到】
: Troll, 自己再读下wiki和以前关于Wiki那段的讨论,及James的那段。又精确地描叙了
: 自己。

n*w
发帖数: 3393
134
Troll. 不断重复着。

class

【在 g*****g 的大作中提到】
: james的话还成为救命稻草了?你小真是够极品的,james说的是java语言的设计有一些
: compromise,几乎所有的语言都有很多compromise。哪里提到closure相比inner class
: 不是糖水了?你觉得不能实现的,我都实现给你看了,你还jjww有完没完?

d*******r
发帖数: 3299
135
这个自动变换看起来很有意思的样子,怎么没人讨论了.

【在 a*****e 的大作中提到】
: 这个转换叫 worker/wrapper transformation,可以把上面那个 fib 的定义自动转换
: 为尾递归。
: 见 http://www.cs.nott.ac.uk/~gmh/wrapper.pdf 第六节。

1 (共1页)
进入Programming版参与讨论
相关主题
实践研究表明,FP代码虫子少,质量高C++ for Java programmer?
阅读scala中板上的高人们能给科普比较functional programming language么
Scala有一点不好我老给你们指条明路吧
real time distributed framework这么多人讨论 FP, 大牛推荐门语言吧
粉FP的人是因为把电脑想象成图灵机了go is ugly
Python is easy and not easy玩具语言其实很容易实现的
大牛给推荐个fp语言Facebook’s New Spam-Killer Hints at the Future of Coding - Haskell
functional programming 哪本书经典适合入门Duck typing is great ...
相关话题的讨论汇总
话题: fp话题: fibo话题: oo话题: java话题: akka