[原创]细数java七宗罪
七 将main置入类内,莫名其妙的结构,常令初学者感到困惑。六 语句死板冗繁化。如类内每个成员函数皆要写上public属性,而写main则要加上四重修饰,其死板冗繁可见一斑。
五 运算符重载的缺失。
四 没有指针。作为标榜其语言优越性的没有指针,其实反为其语言的一大缺陷,令到如简单的动态数组的创建也要用其它方法弥补之。
三 杂沓的类型转换语句。有的类型转换常常出现可几种方法达到同样效果的情况,学习时总令人不知所措。
二 强制捕捉异常。为安全牺牲灵活与简洁,不给程序员丝毫选择的空间。
一 罪恶之极:严重变态的输入输出流。学习其io 流你要花几倍于学其它部份的时间与精力,甚至未必凑效。往往跨过这道坎,你便打过了十八铜人阵,可以出山了。
搜索更多相关的解决方案:
java
----------------解决方案--------------------------------------------------------
[QUOTE]七 将main置入类内,莫名其妙的结构,常令初学者感到困惑。[/QUOTE]
Java 里必须有class, 所有的都以Object的形式出现,而main 函数也是一个方法,从属于某一类的Object,所以将main方法放在某个类里更能体现OOP
[QUOTE]六 语句死板冗繁化。如类内每个成员函数皆要写上public属性,而写main则要加上四重修饰,其死板冗繁可见一斑。[/QUOTE]
这样使得每个方法的属性更清楚些,也没什么不可。
[QUOTE]五 运算符重载的缺失。[/QUOTE]
就我认为C++中的符号重载也不是必须有不可,当然C++中提供了重载的可能,便使得程序员多了一份灵活性,但是这不是必须的,从一定意义上来讲,这是一种技巧,一种花架子而已,比如你可以写个 operator +(...) 我可以写个 plus(...)
所以,从本质上来讲没有多大的分歧。
[QUOTE]四 没有指针。作为标榜其语言优越性的没有指针,其实反为其语言的一大缺陷,令到如简单的动态数组的创建也要用其它方法弥补之。[/QUOTE]
从一定意义上来讲编程语言是为程序员而设定的,不是为张大妈,李大姐而设计的,当然张大妈,李大姐也可以去学一点编程的技术。我们看到,稍微写个小程序,没有什么多大的困难,那个HelloWorld的程序我想几乎人人会写,作为一个学生,写个小程序是很自然的事,但是即便是计算机系毕业的人,甚至是计算系的博士生,真正会写程序的真的不多,所以才显得编程这么神秘。如果你写个小程序还很费周折,那就很难想象你真的会编程。一个大的Project,超过100个,甚至1000个class都有可能。一般的学生,或者说,一般的代码员,最多搞个几十个class。给他一个大的Project的程序,估计他连东南西北都找不着。那么你就可以知道了,一个指针的错误所可能引起的程序错误是很大的,而且往往是致命的。程序编译成功,甚至程序运行成功都不表示程序100%的Robust。任何有经验的程序员都有可能犯错,更何况是面对一个庞大的Project,都出错了再去找,真的是找也找不着的。所以从这个意义上来讲,将指针抹去,是绝对明智的。
[QUOTE]三 杂沓的类型转换语句。有的类型转换常常出现可几种方法达到同样效果的情况,学习时总令人不知所措。[/QUOTE]
我不知你想表达什么,类型转换是很清楚的事。还要请注意,你所说的还是在Primary Type 比如 double 转换为 int
如果在Object 层面就不是随意可以转换的。除非他们之间有继承的关系。
[QUOTE]二 强制捕捉异常。为安全牺牲灵活与简洁,不给程序员丝毫选择的空间。[/QUOTE]
安区是第一位的,否则,Java 不可能成为网络语言,那么java 的生命力就没有了。
[QUOTE]一 罪恶之极:严重变态的输入输出流。学习其io 流你要花几倍于学其它部份的时间与精力,甚至未必凑效。往往跨过这道坎,你便打过了十八铜人阵,可以出山了。[/QUOTE]
这一点我倒是可以认同你,他完全可以将IO更抽象一点,比如 cout 取代 System.out.print
那个文件输入就更麻烦了,这一点,Sun应该考虑向C++ 的IO 学习。
补充说明一点,Sun不搞JSDN是让我很不满意的一点。而Microsoft 搞了MSDN 给C++程序员提供了很大的帮助.
但是Microsoft 也有做的不足的方面,那就是Microsoft 缺少一个很好的论坛, 而Sun 有他一个很好的论坛.
我一般有问题都去Sun的那个论坛.
----------------解决方案--------------------------------------------------------
做成那样就是为了封装嘛,你自己可以再封装一下,弄得简单点。cout,cin你不觉得不够面向对象么?简直就是printf和scanf的翻版,太面向过程了
----------------解决方案--------------------------------------------------------
回复:(kai)[QUOTE]七 将main置入类内,莫名其妙的结...
真诚感谢版主对我的观点的批注。读后令我自愧无地,其实是自己在深入学习过程中遇到困难时产生了一些情绪。不过写起程序来,我还是用C++比较顺手。 ----------------解决方案--------------------------------------------------------