如 果人们非要拿C++和Java来做比较,我建议他们去阅读The Design and Evolution of C++,看看C++为何是今天这个样子,用我在设计C++时听从的原则来检验这两种语言。这些原则与SUN的Java开发小组所持的理念显然是不一样的。 除了表面语法的类似性以外,C++与Java是大相径庭的语言。在不少方面,Java更像Smalltalk。(Sun的培训教材清楚地写道:Java在设计上采用了与C++类似的语法,与Smalltalk类似的语义。因此能够说Java与C++是貌合神离,与Smalltalk才是心有灵犀。)Java 语言相对简单,这部分是一种错觉,部分是由于这种语言还不完整。随着时间的推移,Java在体积和复杂程度上都会大大增加。在体积上它会增加两到三倍,而 且会出现一些实现相关的扩展或者库。这是一条每一个成功的商业语言都必须走过的发展之路。随便分析一种你认为在很大范围内取得了成功的语言,我知道确定是无 有例外者,并且实际上这很是有道理。
上边这段话是在Java 1.1推出以前写 的。我确信Java须要相似模板的机制,而且须要加强对于固有类型的支持。简单地说,就是为了基本的完整性也应该作这些工做。另外还须要作不少小的改动, 大部分是扩展。1998年秋,我从James Gosling(Java语言的创始人)那里获得一份建议书,说是要在Java中增长固有类型、操做符重载以及数学计算支持。
还有一篇论文,是数学分析领域的世界级大师,伯克利大学的W. Kahan教授所写的How Java's Floating-Point Hurts Everyone Everywhere(且看Java的浮点运算如何危害了普天下的芸芸众生,点击超连接进入详情),揭露了Java的一些秘密。我发如今电视和出版物中关于Java的鼓吹是不许确的,并且气势汹汹,让人讨厌。大肆叫嚣凡是非Java的代码都是垃圾,这是对程序员的侮辱;建议把全部的保留代码都用Java重写,这是丧心病狂,既不现实也不负责任。Sun和他的追随者彷佛以为为了对付微软罪恶的“帝国时代”,就必须如此自吹自擂。可是侮辱和欺诈只会把那些喜欢使用不一样编程语言的程序员逼到微软阵营里去。
Java并不是平台无关,它自己就是平台。跟Windows同样,它也是一个专有的商业平台。也就是说,你能够为Windows/Intel编写代码,也能够为Java/JVM编写代码,在任何一种状况下,你都是在为一个属于某个公司的平台写代码,这些代码都是与该公司的商业利益扯在一块儿的。固然你可使用任何一种语言,结合操做系统的机制来编写可供JVM执行的程序,可是JVM之类的东西是强烈地偏向于Java语言的。它一点也不像是通用的、公平的、语言中立的VM/OS。私下里,我会坚持使用可移植的C++做大部分工做,用不一样的语言做余下的工做。
“Java is not platform-independent, it is the platform”,B. S (Bjarne Stroustrup)的这句评语对于C++用户有着很大的影响,有些C++高手甚至把这句话做为本身的签名档,以代表对Java的态度和誓死捍卫C++的决心。 html