锁定老帖子 主题:JAVA 需要引入闭包吗
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间: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这些给加上更有用一些。 |
|
返回顶楼 | |
发表时间:2009-06-11
RednaxelaFX 写道 闭包和对象本是同根生……
‘根’是哪呢 既然有了‘对象’为什么又把兄弟‘闭包’拉进来呢 这个‘闭包’兄弟 到底有什么杀手锏(‘对象’不能做) ? |
|
返回顶楼 | |
发表时间:2009-06-11
RednaxelaFX 写道 赶紧把tailcall和fixnum这些给加上更有用一些。
说实话我也不理解为什么java和c#到现在都不支持尾递归优化。 |
|
返回顶楼 | |
发表时间:2009-06-11
最后修改:2009-06-11
fixnum 有可能降低 benmark 评分呢。
bytecode 层面 tailcall 伤筋动骨,估计没戏吧。 |
|
返回顶楼 | |
发表时间:2009-06-11
最后修改:2009-06-11
步行者 写道 WhisperXD 写道 步行者 写道 WhisperXD 写道 太懒 不想为了解决一个方法学两种或多种实现。
我想这足够block这个需求了。除非做不到。 一个方法学 如果有多种实现 ,那也是符合这个方法学的 OO实现中 引入闭包 就需要做一个思维转换,对象 函数化 我是说不想学。 不是方法学,你可能看错了。 我对用什么方法解决问题并不关心。 我关心的是如何解决问题 如果能解决问题,那我关心的是如何成本最低。 包括学习成本在内都是考虑的因素。 包括其他人看代码以后的学习成本,如果一个代码已经被无数人描述为精妙到很难理解,那么除非它有不可替代的作用,否则就是垃圾一堆。 语言只是工具,工具的作用是什么不需我重复了,高效低成本解决问题就行了。 呵呵 看错了 不过只有实现 和 设计契合,才能有更高可维护性 确实 我现在就要怀疑一下 闭包 有没有什么不可替代的作用 没有什么东西是不可替代的 . 只有更好的方法.和更多的选择. 闭包可以减少很多代码量和无用逻辑. 也符合oo的规范. |
|
返回顶楼 | |
发表时间:2009-06-11
evabibi 写道 步行者 写道 WhisperXD 写道 步行者 写道 WhisperXD 写道 太懒 不想为了解决一个方法学两种或多种实现。
我想这足够block这个需求了。除非做不到。 一个方法学 如果有多种实现 ,那也是符合这个方法学的 OO实现中 引入闭包 就需要做一个思维转换,对象 函数化 我是说不想学。 不是方法学,你可能看错了。 我对用什么方法解决问题并不关心。 我关心的是如何解决问题 如果能解决问题,那我关心的是如何成本最低。 包括学习成本在内都是考虑的因素。 包括其他人看代码以后的学习成本,如果一个代码已经被无数人描述为精妙到很难理解,那么除非它有不可替代的作用,否则就是垃圾一堆。 语言只是工具,工具的作用是什么不需我重复了,高效低成本解决问题就行了。 呵呵 看错了 不过只有实现 和 设计契合,才能有更高可维护性 确实 我现在就要怀疑一下 闭包 有没有什么不可替代的作用 没有什么东西是不可替代的 . 只有更好的方法.和更多的选择. 闭包可以减少很多代码量和无用逻辑. 也符合oo的规范. “闭包可以减少很多代码量和无用逻辑. 也符合oo的规范. ” 为什么也符合 OO 规范? |
|
返回顶楼 | |
发表时间:2009-06-11
啥叫OO规范?
|
|
返回顶楼 | |
发表时间:2009-06-11
步行者 写道 evabibi 写道 步行者 写道 WhisperXD 写道 步行者 写道 WhisperXD 写道 太懒 不想为了解决一个方法学两种或多种实现。
我想这足够block这个需求了。除非做不到。 一个方法学 如果有多种实现 ,那也是符合这个方法学的 OO实现中 引入闭包 就需要做一个思维转换,对象 函数化 我是说不想学。 不是方法学,你可能看错了。 我对用什么方法解决问题并不关心。 我关心的是如何解决问题 如果能解决问题,那我关心的是如何成本最低。 包括学习成本在内都是考虑的因素。 包括其他人看代码以后的学习成本,如果一个代码已经被无数人描述为精妙到很难理解,那么除非它有不可替代的作用,否则就是垃圾一堆。 语言只是工具,工具的作用是什么不需我重复了,高效低成本解决问题就行了。 呵呵 看错了 不过只有实现 和 设计契合,才能有更高可维护性 确实 我现在就要怀疑一下 闭包 有没有什么不可替代的作用 没有什么东西是不可替代的 . 只有更好的方法.和更多的选择. 闭包可以减少很多代码量和无用逻辑. 也符合oo的规范. “闭包可以减少很多代码量和无用逻辑. 也符合oo的规范. ” 为什么也符合 OO 规范? 方法也是对象 不是更OO吗? |
|
返回顶楼 | |
发表时间:2009-06-11
最后修改:2009-06-11
http://www.ibm.com/developerworks/cn/java/j-jtp04247.html
对于你说有没有用的给你看这个... |
|
返回顶楼 | |
发表时间:2009-06-11
evabibi 写道
方法也是对象 不是更OO吗?
那我只能说你 混淆 了对象的概念 。
|
|
返回顶楼 | |