锁定老帖子 主题:Scala拾趣--从Java7说开来
该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-05-13
Java应该保持简洁~~
|
|
返回顶楼 | |
发表时间:2008-05-13
对其他语言了解不多,只熟悉点Java和Ruby.对于Java这个规范语言来说,我的感觉就是这些特性让Java变得越来越乱.大概看了一下Defining a BeanProperty,整体感觉既不像Java又不像Ruby,有点不伦不类,这种结合使得没了Java的严谨和Ruby的简洁,总体感觉就是乱.
|
|
返回顶楼 | |
发表时间:2008-05-13
同意,太灵活了,反而会使学习成本加大,看别人的代码会更难理解
一行搞定一个功能看起来不错,可以让别人看你写的代码就麻烦了 |
|
返回顶楼 | |
发表时间:2008-05-13
hax 写道 用Factory和Builder能提供灵活性,比如使用其他的XML DOM实现。M$的习惯一向是只此一家,别无分店,所以直接new就可以了。当然,我也认为java的XML可以简化,但是这不是什么大不了的问题。 XPath那个你冤枉Java了。Java的API是遵循W3C DOM Level 3 XPath的。如果你要骂,应该骂W3C去,嘿嘿。还有,骂之前请注意了,W3C的API允许对XPath表达式进行重用(当然也可以不重用),而MS的selectNodes方法虽然方便,但是没法重用XPath。还有返回值上的类型有限定。XPath其实可以返回并非节点和节点集类型的。所以MS的API是不严谨的。 你得承认,对于大部分状况下,MS的方案更简单,更容易。 拿XmlDocument来说,如果真有替换XML DOM API的必要性,Microsoft也会采用别的方案来实现更换XML dom,可能比如更换DomProvider(在MS的DataReader中就是如此)。 此外就拿XmlDocument的Load动作来说。 doc.Load("http://www.w3c.org/some.xml"); doc.Load("C:\W3C\some.xml"); doc.Load("\\w3c\\some.xml"); Microsoft接替了java程序员大部分的工作,使得程序员可以专注于当前的问题(要加载某一个xml文件),而不需要象Java一样,还要关注要如何加载。。。 我的重点不是在于它的烦琐,而是在于,Sun缺乏一种更简单,更明白的表达方式,这导致的Sun的语法象绕口令,而MS的语法则接近自然语言。另外Microsoft淘汰SAX,而采用Pull的方式,也是出于直观的考虑。 这典型的就是java.io包,这里头的烦琐到接近委琐的状态。 |
|
返回顶楼 | |
发表时间:2008-05-13
这典型的就是java.io包,这里头的烦琐到接近委琐的状态
============== 同意这句话。 |
|
返回顶楼 | |
发表时间:2008-05-13
avaj 写道 这典型的就是java.io包,这里头的烦琐到接近委琐的状态
============== 同意这句话。 保留意见 我觉得Java很多API从设计上来说还是蛮不错的。 比如IO,Swing etc. 给使用者提供了很大的灵活性。 但使用起来确实不那么方便,也容易把新手搞晕~ M$的东西偏向与傻瓜式,上手容易。 但灵活性估计就没那么好了,一切都在M$的掌控中,你只能跟着他转。 |
|
返回顶楼 | |
发表时间:2008-05-13
Eastsun 写道 avaj 写道 这典型的就是java.io包,这里头的烦琐到接近委琐的状态
============== 同意这句话。 保留意见 我觉得Java很多API从设计上来说还是蛮不错的。 比如IO,Swing etc. 给使用者提供了很大的灵活性。 但使用起来确实不那么方便,也容易把新手搞晕~ M$的东西偏向与傻瓜式,上手容易。 但灵活性估计就没那么好了,一切都在M$的掌控中,你只能跟着他转。 Java.io的复杂在thinking in java中有颇有诟病。 灵活性必须要在用必要的方面。比如对Micirosoft提供Data Provider的灵活性。至于替换一个XML dom,则大大值得考虑。 我从来没觉得Microsoft的东西是傻瓜式,这种所谓的傻瓜式只是对初级程序员而言,(当然大部分从业者都是初级程序员吧?),牛人照样能写出I4O(Indexed Linq)这样的东西。从某种意义上,Microsoft推出Linq to Collection这种东西,使得C#更接近自然语言。 |
|
返回顶楼 | |
发表时间:2008-06-16
Eastsun 写道 ray_linn 写道 总的看来,Java 7将是C# 3.5的一次大抄袭而已。
说起“抄袭”,谁抄谁还不好说。 C#整个语言不就是模仿Java的么? 现在这些特性还只是提议而已,最终会不会加到Java7中去还未有分晓。 除了闭包我不是太肯定需不需要加入到Java7中去,其他的特性我觉得还是不要加的为好。 保持Java的简洁优雅比加入那些乌七八糟的特性更重要,我以为。 我觉得提议都不该,提议的人多了,sun公司头脑一发热就加进去了 应该向c学习,几十年不变 要么就学习python,勇敢的破坏向后兼容 |
|
返回顶楼 | |
发表时间:2008-06-16
泡 泡 写道 icanfly 写道 Eastsun 写道 问题是如果需要兼容,就不太可能实现的很优雅
譬如JAVA5中的泛型。。。和鸡肋差不多。 以及将要加入的闭包,其实现方式也够呛。 这种打补丁式的改进总不会太完美。 PS:弄一个JAVA3000出来也不错,抛弃向后兼容性。 我同意,JAVA顾虑得太多,应该学学Python,要使用旧JAVA语法的用JAVA旧的版本,要使用新的语法可以用新的版本,这样不但JAVA类库中有些“鸡肋”可以踢除,本身语言简洁性也得到提高!希望JAVA语言的开发工程师们不要老停留在要兼顾以前版本的陈旧思想里了! 那么庞大的开源类库,谁去转成新版本,不向下兼容导致的问题更多 开源类库有很多是半死不活的, 如果没有人维护, 即使java保持兼容性, 这些类库最终也是会被用户抛弃 如果用的人多, 自然有人会转过来 python3000在python社区里面并没有引起多大的反对声音 java并没有兼容c和c++, 不照样是流行起来了 兼容性根本不是问题 |
|
返回顶楼 | |