`
caozuiba
  • 浏览: 899494 次
文章分类
社区版块
存档分类
最新评论

C++之父评论C++与Java

 
阅读更多

  如果人们非要拿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的这句评语对于C++用户有着很大的影响,有些C++高手甚至把这句话作为自己的签名档,以表明对Java的态度和誓死捍卫C++的决心。

分享到:
评论

相关推荐

    The Design and Evolution of C++

    c++之父的经典书籍

    计算机经典书籍.doc

    C++程序设计语言(特别版)---c++八大金刚----Bjarne Stroustrup“C++之父” ... c++八大金刚: 1、Essentital c++---lippman---C++之父,旁枝暂略,主攻核心,轻薄短小,初学者 ... 4、c C程序设计语言(第2...

    java基础入门教程

    在 这 次 会 上 ,Java的 创 始 人 之 一 James Gosling 说 :"Java 不仅 仅只 是 applets, 它 能 做任 何 事 情 ",Dta 咨 询 公 司 的 高 级软 件 工 程 师 Rich Kadel说 :"Java 不仅 仅 是 一 种 程 序 设计 语言 ,...

    Java自学项目,包含java例程及文档说明.rar

    1995年由SUN公司推出,Java之父:詹姆斯·高斯林,SUN公司在2009年被Oracle收购。 2.1 平台版本 J2SE:标准版,也是其他两个版本的基础。在JDK1.5时正式更名为JavaSE。 J2ME:小型版,一般用来开发嵌入式程序,已经...

    JAVA--达内培训笔记

    1、Java之父Golsling 1995年5月23日 Java诞生 1998年12月 1.2版本 Java2 J2SE J2EE J2ME 2004年12月 1.5版本(5.0) Java JavaSE JavaEE JavaME 2、Java SE --- Java标准平台 Java EE --- 企业级平台 Java ...

    软件工程工具书.docx

    (C语言之父不是谭浩强) C Primer Plus 第五版 C++ Primer Plus 第五版 C++编程思想 总感觉没有Java编程思想那样出色。 提高: C陷阱与缺陷 C与指针 如果C程序员只能选择两本书,第二本就是这个了。 第一本?第一本...

    《数据结构课程设计》《机器智能》《自然语言处理》语言C++、Java、Python.zip

    诺依曼被称为计算机之父。他的体系结构计算机由运算器,控制器,存储器,输入设备,输出设备五大部件构成。C语言拥有一套完整的理论体系经过了漫长的发展历史,在编程语言中具有举足轻重的地位。 [1] C 语言是一种...

    JAVA面试题最全集

    一、Java基础知识 1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。 2.字符串的操作: 写一个方法,实现字符串的反转,如:输入abc,输出cba 写一个方法,实现字符串的替换,如:输入...

    C++如何用智能指针管理内存资源

    1.简介 C++作为一门应用广泛的高级编程语言,却没有像Java、C#等语言拥有垃圾回收(Garbage Collection )机制来自动进行内存管理,这也是C++一直被诟病的一点。...RAII是C++的之父Bjarne Stroustrup教授提

    java 面试题 总结

    如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    然 new 运算符返回对一个对象的引用,但与 C、C++中的指针不同,对象的引用是指 向一个中间的数据结构,它存储有关数据类型的信息以及当前对象所在的堆的地址, 而对于对象所在的实际的内存地址是不可操作的,这就保证...

    编程狂人第八期(2014-1-13)

    编程狂人是推酷网旗下的周刊,内容以开发技术...【科技英雄传】C++之父:将工作视为一种乐趣 从《安德的游戏》看如何与外星人沟通 专访何海涛:“不正经”程序员的进阶之路 日记——程序员的烦恼 程序员的“横向发展”

    超级有影响力霸气的Java面试题大全文档

    如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的...

    Visual C# 2010 How To Program 4Th Edition

    paul是世界上最有经验的java和c++的企业培训师之一,已经讲授过100多门专业性的java和c++培训课程。他还为计算机协会波士顿分部讲授c++和java课程。他和他的父亲harvey m. deitel博士都是世界上最受欢迎的计算机科学...

    Linux最早是Linus Torvalds在1991年开始设计开发

    Linux Linux最早是Linus Torvalds在1991...”甚至连Unix之父Dennis Ritchie也认为Linux“确实不错”。有一些分析家甚至认为,在未来数年间,Linux将成为NT真正强有对手,也是唯一可以冲破微软垄断性文化圈的出路所在。

    我的编程感悟(中文PDF)(共37M二分卷)分卷二

    《仙剑奇侠传》之父姚壮宪热情推荐,技术作家孟岩高度评价! 云风也是我在中国最佩服的游戏开发者。看了云风的研发历程,我觉得就是一部中国的游戏程序史,从最早的 Z80 , 6502 , PC8088 , 286 , 386…DOS ,...

    我的编程感悟(中文PDF)(共37M二分卷)分卷一

    《仙剑奇侠传》之父姚壮宪热情推荐,技术作家孟岩高度评价! 云风也是我在中国最佩服的游戏开发者。看了云风的研发历程,我觉得就是一部中国的游戏程序史,从最早的 Z80 , 6502 , PC8088 , 286 , 386…DOS ,...

    JDK 1.5的泛型實現(Generics in JDK 1.5)

    閱讀本文之前,如果自覺基礎不夠,可以補充閱讀適才提到的《Java泛型技術之 發展》,那是一篇非常完整的文章,可助您完整認識泛型技術的來龍去脈。 Sun JDK的泛型發展歷史要從 1.3版說起。該版本配合 GJ,正式...

    JavaScript权威指南第五版(JavaScript_The_Definitive_Guide_5th.chm)

    看过了,这本书对js介绍的很不错!!!   Java Script是一种功能强大的基于对象的脚本语言。Java Script程序可以直接嵌入HTML页面。与Web浏览器定义的文档对象模型(DOM)一起使用时,... —Brendan Eich,JavaScript之父

Global site tag (gtag.js) - Google Analytics