c++语言和java的比较,已经讨论了大半天,说实在话,我对后面的回帖已经不关心了,许多的帖子如果让一个喜欢技术的人去看的话,我觉得很可笑,因为:
1>需要人没有c++和java双重语言编程基础,那种好,同意,基本上对整个讨论没什么作用,这种类还不具备评价这二个事物的基础理解能力,你要有自己的观点
2>有些人很容易从一个小点上来以偏概全的处理问题
3>讨论问题的时候,要说明自己对二种语言的背景,不了解的希望你可以旁观
其实从长远来说,cu上的讨论有些很初级的,对一个问题,许多讨论都建立在一个基础上的,大家都有比较公正的评价事务的标准. 没有个人见解。老引用别人的话的人,不管使用什么语言,基本上不变可能成为一个语言高手,更不用说技术高手。因为他缺乏思考能力和创造能力,这种类,我觉得暂时还不要加入到讨论的话题中,只会引起偏执狂的更加偏执。
讨论的一些前提
1>不讨论c++能做java做不了的,比如:底层的东西
通信行业的使用情况是: 嵌入式(交换机,路有器)绝大部分核心使用的c,c++作应用的东西(比如NGN),图像和编解码(底层基本上是c和汇编,台式机上的编解码c++还不少)
2>不讨论web的东西,因为这个java可以做,c++做不了的
web行业java应用还可以,对应的有php,ruby,python
3>我们讨论的前提是c++和java都可以做了的
中等性能的东西
4>设计模式
这个是思想的东西,和语言没太大的关系,不作为讨论范围
5>编译器
这个是基础理论,和语言没什么关系,不作为讨论范围。是否语言开始强奸你去学习编译器/解释器,还是后期强奸,我觉得关系不是特别大
前提的一些基本结论:
真正有价值的是使用工具来实现的东西,语言的东西,只要理解编译原理就可以了,深入的是你对操作系统的理解,数学和算法的理解
下面开始讨论语言:
主要特征1比较:
1>java是解释性语言,c++不是,编译完后形成执行文件
2>从解释性语言的设计来说,性能的好坏关键在于解释器的性能;编译性的语言关键在于编译器
要想学好java,你必须学好jvm,如果认为不学习jvm就能学好java的话,内存泄露是经常的,但是java如果有良好的编程风格的话,小的项目确实不需要考虑,入门的门槛比较低.
学习好c++,必须懂编译器,写意个小的项目,要稳定下来的话,也需要比较充分的了解编译器,入门难,但是上路后简单
打个比方来说,一个女人被和一个男人好,学习java,一开始慢慢相处,需要的话再深入.学习c++,一开始就有被强奸,然后再建立感情.更极端的说,先强奸和后强奸,先喜欢和后喜欢,因为设计的不同,有不东的理解,
如果喜欢先强奸的刚好找了一个先强奸的语言,说幸福,可以理解.如果喜欢后强奸的喜欢后强奸的语言,他说幸福,也很正常,从长远来说,都是很幸福.如果不是这二种情况来说比较痛苦.
如果理解了gcc,而不去理解jvm,我觉得这个不是高手的做法,一个高手应该是站在编译器的角度上来考虑语言的,如果不这样的,如果不是这样的话,不能称为高手,基础都没有学好.一个c++高手可以很容易的称为
java的高手,一个java高手也很容易成为c++的高手.如果你指针一蹋糊涂,那边请修炼c,汇编,计算机原理
主要特征2比较:
1>java单继承,没有运算符重载,不能内存管理
2>c++多继承,有运算符重载,有内存管理
这三个特性,多继承,少用,运算符重载这个,个人也认为语言中增加,内存管理管理部分,许多人都管理不好.
语言的适用环境;
电信类设备厂商中c++的地位,嵌入式核心主要用c,上面的应用使用c++,网管部分,大多使用java来开发展示.也有全部使用c++的,个人没发现
门户:后台c++,前台java,php,ruby,也有部分全部使用java的,如淘宝
企业应用和电子政务:java多,还有一些其它语言
金融行业: 交易后台c/c++,展示前台java
我的语言背景:
最初学习c++,代码行1万左右,后来转到java,总计看的书包括<<高质量C++编程指南>>,<<effective c++>>,<<深入浅出MFC>>,<<C++语言的设计和演化>>,<<深度探索c++对象模型>>
后来学习java,代码行N万行,看过的书<<java虚拟规范>>,<<effective java>>,<<spring专业指南>>,hibernate相关,熟悉jvm规范和调优
现状,混合编程,使用java,c++,python
职业生涯了解的程序员的情况:
c++语言,相对来说对计算机理解的多一些,中等程序员偏多,高手少.对一般开发来说,中等程序员足够.
java语言,对计算机理解少一些,大多数人偏重于业务,初级程序员多,中等程序员体现在只会设计模式,高手少,对一般开发来说,中等程序员足够
我讨厌:乱反对java的,也反对乱反对c++的,任意诋毁一个都是无知的表现.
我喜欢:那种情况下使用java,那种情况下使用c++,推而广之到其他的语言
讨论中可以看到一些人的个人水平高低,是否有广阔的视野和开发经验
对于其他语言,自己不熟悉,乱评价,那就是无知的无谓,你要说我评价c#,我说我不会,没有办法评级。
欢迎相关人拍砖,但个人已经不想回复了!!!!
[ 本帖最后由 everlasting_188 于 2009-3-26 12:00 编辑 ] |