论坛首页 Java企业应用论坛

JAVA 需要引入闭包吗

浏览 38527 次
该帖已经被评为精华帖
作者 正文
   发表时间:2009-06-11   最后修改:2009-06-11
闭包和对象本是同根生……(传送门1
“继承/封装/多态”那要说也只能算是Java对象的特征,并不意味着别的对象系统也一样。

“Java最初不要闭包是为了保持语言的简单,是为程序员着想” << 没那回事啦。Bill Joy一早就说要闭包,结果跟James Gosling他们闹翻了,因为Gosling他们市场目的性更强,要赶工把半成品推出去(传送门2)。总不能跟人家说我们没实现某功能是因为赶工来不及吧,干脆美其名曰要保持语言的简单。不然后来也不会想到加入匿名内部类。

Java里不是一切都是对象,方法不是对象,基本类型也不是。Gosling说这是为了效率考虑,但从现在那么多类似的系统看来,Gosling的效率说更像是个人风格而已。所以说Java是“纯面向对象语言”……它确实只能很好的支持面向对象范型,但并不是完整的支持了这范型,是种“纯纯的残缺美”。注意了,“残缺”在这里不是贬义修饰,而是一种个性的体现。附带的好处是概念比较少,不用学那么多(不考虑装拆箱之类的问题的话)

至于现在的Java要不要加入闭包呢?BGGA方案功能强大但是看起来还是有点怪。Neal Gafter跳到微软去了之后还在继续推动BGGA方案的宣传,辛苦了。FCM看起来正常些,如果要加的话我会倾向FCM。不加也罢,赶紧把tailcall和fixnum这些给加上更有用一些。
3 请登录后投票
   发表时间:2009-06-11  
RednaxelaFX 写道
闭包和对象本是同根生……

‘根’是哪呢
既然有了‘对象’为什么又把兄弟‘闭包’拉进来呢
这个‘闭包’兄弟  到底有什么杀手锏(‘对象’不能做) ?
0 请登录后投票
   发表时间:2009-06-11  
RednaxelaFX 写道
赶紧把tailcall和fixnum这些给加上更有用一些。

说实话我也不理解为什么java和c#到现在都不支持尾递归优化。
0 请登录后投票
   发表时间:2009-06-11   最后修改:2009-06-11
fixnum 有可能降低 benmark 评分呢。

bytecode 层面 tailcall 伤筋动骨,估计没戏吧。
0 请登录后投票
   发表时间:2009-06-11   最后修改:2009-06-11
步行者 写道
WhisperXD 写道
步行者 写道
WhisperXD 写道
太懒 不想为了解决一个方法学两种或多种实现。

我想这足够block这个需求了。除非做不到。


一个方法学 如果有多种实现 ,那也是符合这个方法学的

OO实现中 引入闭包 就需要做一个思维转换,对象 函数化


我是说不想学。

不是方法学,你可能看错了。

我对用什么方法解决问题并不关心。

我关心的是如何解决问题

如果能解决问题,那我关心的是如何成本最低。

包括学习成本在内都是考虑的因素。

包括其他人看代码以后的学习成本,如果一个代码已经被无数人描述为精妙到很难理解,那么除非它有不可替代的作用,否则就是垃圾一堆。

语言只是工具,工具的作用是什么不需我重复了,高效低成本解决问题就行了。



呵呵 看错了

不过只有实现 和 设计契合,才能有更高可维护性
确实 我现在就要怀疑一下 闭包 有没有什么不可替代的作用



没有什么东西是不可替代的 .

只有更好的方法.和更多的选择.




闭包可以减少很多代码量和无用逻辑.

也符合oo的规范.



0 请登录后投票
   发表时间:2009-06-11  
evabibi 写道
步行者 写道
WhisperXD 写道
步行者 写道
WhisperXD 写道
太懒 不想为了解决一个方法学两种或多种实现。

我想这足够block这个需求了。除非做不到。


一个方法学 如果有多种实现 ,那也是符合这个方法学的

OO实现中 引入闭包 就需要做一个思维转换,对象 函数化


我是说不想学。

不是方法学,你可能看错了。

我对用什么方法解决问题并不关心。

我关心的是如何解决问题

如果能解决问题,那我关心的是如何成本最低。

包括学习成本在内都是考虑的因素。

包括其他人看代码以后的学习成本,如果一个代码已经被无数人描述为精妙到很难理解,那么除非它有不可替代的作用,否则就是垃圾一堆。

语言只是工具,工具的作用是什么不需我重复了,高效低成本解决问题就行了。



呵呵 看错了

不过只有实现 和 设计契合,才能有更高可维护性
确实 我现在就要怀疑一下 闭包 有没有什么不可替代的作用



没有什么东西是不可替代的 .

只有更好的方法.和更多的选择.




闭包可以减少很多代码量和无用逻辑.

也符合oo的规范.




“闭包可以减少很多代码量和无用逻辑.

也符合oo的规范. ”

为什么也符合 OO 规范?
0 请登录后投票
   发表时间:2009-06-11  
啥叫OO规范?
0 请登录后投票
   发表时间:2009-06-11  
步行者 写道
evabibi 写道
步行者 写道
WhisperXD 写道
步行者 写道
WhisperXD 写道
太懒 不想为了解决一个方法学两种或多种实现。

我想这足够block这个需求了。除非做不到。


一个方法学 如果有多种实现 ,那也是符合这个方法学的

OO实现中 引入闭包 就需要做一个思维转换,对象 函数化


我是说不想学。

不是方法学,你可能看错了。

我对用什么方法解决问题并不关心。

我关心的是如何解决问题

如果能解决问题,那我关心的是如何成本最低。

包括学习成本在内都是考虑的因素。

包括其他人看代码以后的学习成本,如果一个代码已经被无数人描述为精妙到很难理解,那么除非它有不可替代的作用,否则就是垃圾一堆。

语言只是工具,工具的作用是什么不需我重复了,高效低成本解决问题就行了。



呵呵 看错了

不过只有实现 和 设计契合,才能有更高可维护性
确实 我现在就要怀疑一下 闭包 有没有什么不可替代的作用



没有什么东西是不可替代的 .

只有更好的方法.和更多的选择.




闭包可以减少很多代码量和无用逻辑.

也符合oo的规范.




“闭包可以减少很多代码量和无用逻辑.

也符合oo的规范. ”

为什么也符合 OO 规范?



方法也是对象 不是更OO吗?



0 请登录后投票
   发表时间:2009-06-11   最后修改:2009-06-11
http://www.ibm.com/developerworks/cn/java/j-jtp04247.html

对于你说有没有用的给你看这个...

0 请登录后投票
   发表时间:2009-06-11  
evabibi 写道
方法也是对象 不是更OO吗?



 

那我只能说你 混淆 了对象的概念 。

 

0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics