声明:JavaEye新闻文章的版权属于JavaEye网站所有,严禁任何网站转载本文,否则必将追究法律责任!
众所周知,JAVA语言一直因其语法上的简洁优雅(JAVA1.5中泛型的引入或多或少改变了这点)而被大部分人所喜爱.
但另一方面,语法上的简洁也造成了使用上的一些不方便.譬如,你只想实现往控制台输出一个"Hello,world",你也得老老实实先写一个class,然后再写一个public static void main(String[] args)方法,最后才是System.out.println("Hello,world");
而如果使用Python之类的语言,可能只需一行代码就搞定了.
当然,上面这个例子看起来不是那么有说服力.
不过如果你做过GUI开发的话,你就会感受到"Everything is an object"所带来的不便之处了.为了监听GUI事件并做出相应的反应,你会大量用到匿名类(而实际上你的目的只是要传入一个回调方法而已),这样不仅做了一些额外不必要的工作,也给代码的可读性造成一定影响.
譬如这类的问题还有很多,Stevey写过一篇文章:名词的王国(Execution in the Kingdom of Nouns),用形象生动的语言描叙了为什么使用JAVA会让某些工作变得的啰嗦.他的观点是由于JAVA中的"everything is an object",在某些时候限制了我们用清晰而合理的表达方式来表述我们的思想.
在JAVA诞生以来,语法上最大的变动可能就是在JAVA 1.5中泛型的引入了.而且随着JAVA的开源,以后可能会有更多的元素被引入到JAVA语言里面来(官方的或非官方的).目前正在进行中的JDK7就有可能增加一些新的语言特性(见javapolis举行的关于JAVA7语言特性投票的结果),其中最重大的改变莫过于闭包的引入了.毫无疑问,这些语言特性的引入都是为了让我们这些Javaer活的更轻松一些.
那么,闭包能改善目前JAVA语言所存在不足吗?就是说闭包能够让我们写出简单而易读的代码吗?要知道闭包并不是一个面向对象的东东.
Bruce Eckel在他的文章Will Closures Make Java Less Verbose里讨论了这个问题.并且在文章的末尾,他提出了一个很大胆的想法JAVA 3K(其实我也一直这么想的^_^):
我们知道Python有个Python 3000计划,这个Python 3000相对之前的Python有大幅度的修改,并且不兼容之前的Python语法,这样可以完全摆脱因考虑向后兼容性而带来的不必要的负担.那么我们为什么也搞个JAVA 3000呢?它与之前的JAVA有着类似的语法,并且也能运行在JVM上,但语法上与原有JAVA语言不兼容.在JAVA 3K里面我们可以有真正的泛型,闭包,并且可以丢弃掉int那些基本类型.对于那些想继续使用原有JAVA的人来说继续用就是了,而程序员想学习新的JAVA语言也很容易.
你是如何看待这件事情的呢?
参考文章:
Execution in the Kingdom of Nouns
Seeking the Joy in Java
Will Closures Make Java Less Verbose
但另一方面,语法上的简洁也造成了使用上的一些不方便.譬如,你只想实现往控制台输出一个"Hello,world",你也得老老实实先写一个class,然后再写一个public static void main(String[] args)方法,最后才是System.out.println("Hello,world");
而如果使用Python之类的语言,可能只需一行代码就搞定了.
当然,上面这个例子看起来不是那么有说服力.
不过如果你做过GUI开发的话,你就会感受到"Everything is an object"所带来的不便之处了.为了监听GUI事件并做出相应的反应,你会大量用到匿名类(而实际上你的目的只是要传入一个回调方法而已),这样不仅做了一些额外不必要的工作,也给代码的可读性造成一定影响.
譬如这类的问题还有很多,Stevey写过一篇文章:名词的王国(Execution in the Kingdom of Nouns),用形象生动的语言描叙了为什么使用JAVA会让某些工作变得的啰嗦.他的观点是由于JAVA中的"everything is an object",在某些时候限制了我们用清晰而合理的表达方式来表述我们的思想.
在JAVA诞生以来,语法上最大的变动可能就是在JAVA 1.5中泛型的引入了.而且随着JAVA的开源,以后可能会有更多的元素被引入到JAVA语言里面来(官方的或非官方的).目前正在进行中的JDK7就有可能增加一些新的语言特性(见javapolis举行的关于JAVA7语言特性投票的结果),其中最重大的改变莫过于闭包的引入了.毫无疑问,这些语言特性的引入都是为了让我们这些Javaer活的更轻松一些.
那么,闭包能改善目前JAVA语言所存在不足吗?就是说闭包能够让我们写出简单而易读的代码吗?要知道闭包并不是一个面向对象的东东.
Bruce Eckel在他的文章Will Closures Make Java Less Verbose里讨论了这个问题.并且在文章的末尾,他提出了一个很大胆的想法JAVA 3K(其实我也一直这么想的^_^):
引用
我们知道Python有个Python 3000计划,这个Python 3000相对之前的Python有大幅度的修改,并且不兼容之前的Python语法,这样可以完全摆脱因考虑向后兼容性而带来的不必要的负担.那么我们为什么也搞个JAVA 3000呢?它与之前的JAVA有着类似的语法,并且也能运行在JVM上,但语法上与原有JAVA语言不兼容.在JAVA 3K里面我们可以有真正的泛型,闭包,并且可以丢弃掉int那些基本类型.对于那些想继续使用原有JAVA的人来说继续用就是了,而程序员想学习新的JAVA语言也很容易.
你是如何看待这件事情的呢?
参考文章:
Execution in the Kingdom of Nouns
Seeking the Joy in Java
Will Closures Make Java Less Verbose


评论 共 9 条 发表评论
Godlikeme 2008-04-05 12:23
程序语言的可执行性 vs 可理解性。多写几行不会造成执行上的问题,少写几行也不会更容易理解。
sleets 2008-04-03 13:34
beckrabbit 2008-04-03 08:56
sunwei_07 2008-04-02 22:11
leegorous 2008-04-02 21:44
小弟愚见,Java那种“罗嗦”应该是想作者更加明确地表明其意图,因为Java不会作太多的假设,所以需要我们指名道姓去invoke哪个Object的哪个方法。
如果事先有更多共识,或者说是假设、那么我们才可以直接指出我们要做什么。
ssuupv 2008-04-02 21:00
Eastsun 2008-04-02 13:53
计算机语言过20年,c照样活的很好.c++,java这些就不一定了.永远的是汇编..
再过30年,一个人自己定义设计一门语言也许就是分分钟就搞定的事情了.
别说以后的事以后再说,现在我们可选择的就很多.
没有必要为了JAVA费这么大劲.根据应用选语言就行了.
汗..
按照achun 的逻辑,那我们什么也不用做了.
语言总是在进步,而现在JAVA作为最流行的语言,为什么就不能保持这个地位,也与时俱进呢?
为什么JAVA就不能成为将来最好的语言呢?
achun 2008-04-02 13:47
计算机语言的历史才多少年?要相信会有更好的语言出现的.目前整个人类的计算机语言认识水平也就是刚刚起步罢了.
计算机语言过20年,c照样活的很好.c++,java这些就不一定了.永远的是汇编..
再过30年,一个人自己定义设计一门语言也许就是分分钟就搞定的事情了.
别说以后的事以后再说,现在我们可选择的就很多.
没有必要为了JAVA费这么大劲.根据应用选语言就行了.
factor 2008-04-02 09:46