续 找骂的来了!(c++程序员敢来挑战。java中高低手都进来过瘾)
原文说java中高低手都来过瘾,我还没有说过瘾竟然就结了贴!可惜,于是又掏分100,再续前说。了解我的人都知道,我是欢迎反对者的,只要有理有据不进行个人攻击就行。
原文(http://expert.csdn.net/Expert/topic/2358/2358160.xml?temp=.9715387)yl0002 (yl)提到:
我是c++程序员,在这里说java的一些不足,可能我是找骂来了。(够贱的!)
我是在c++里面混的。看了一些c++之父与stl之父的访谈录,知道java的一些程序(包括sun)对c++说了很多不敬的话、吹了很多牛的话。想来java版来看看,不想没有看到扁c++的,倒看到扁java的(请看贴:臭名昭著的Java)。可笑。不知在c++版中找不找到扁c++的来(没有找过,不知找不找得到)。
本来,工具是无错的,错的是使用工具的人。(我可以用纸来杀人,但可能给你一把激光枪,你都不知怎么用)。
正确的是你对工具了解多少(该工具的缺点是什么,劣势是什么,优势是什么),用的如何熟,如何精,如何巧。
我每当看到什么delphi vs vc 或是c++ vs java之类的东西,就是看它们指出的问题(该工具的优缺点)。
(不过,好多语言好像都想和c++比一比。没办法。)
即使是你用了世界上最牛的语言(我认为:应该说没有,现在的工具都是针对一些方面有优势,一些方面有它的不足),也一样是一个傻瓜。换句话:拿着工具的傻瓜,还是傻瓜。
比如:1,我就会photoshop的操作,但还是不能做出xx公司的广告图。
2,c程序员多的是,几个写得出quake引擎的。
3,你会autocad,你给用autocad做一座与众不同的桥出来试试(如果是你建筑专业毕业,也会autocad的除外)。
我java一点都不会,也不能说出java的什么。如果java的程序或是公司要说c++什么,必须对c++有很深的了解,才能说出c++的好与坏。
对于有些人说的c++指针,c++的内存方面的说法我不同意。具体的我也不说,因为可能和我争论的人,并不了解c++。
对于java所说的平台?该是x+vm的形式。.net好像也好不到哪儿。不过我听borland总裁说:ms的阴谋是先提供.net环境,以后将nt内核换为.net。将.net做为真正的平台。
我想也许这个谁也说不好。所以sun也不能说它的平台会怎样怎样,能在ms的手心中混多久,还不一定呢?
有人可能说我是ms的什么奴隶,也许是吧,但不知,我这个奴隶是只会从ms哪儿得到好处,不付出的。什么时候不高兴,就不当它的奴隶了。(比如,sun牛了,就转java)。
大家是不是从msdos6到win3x到win95到win2000过来的,有没有一点被wintel牵着鼻子走的感觉,但也肯定从中捞到了好处(不然,你就用unix或是linux试试)。
世界没有绝对的,完美的东西。如果你要学java,最好找一个java了解很深的人,告诉你,java适合做什么,不适用于做什么。(如果这里有谁说java适用于做任何事,请回贴。)
说上面的话,是原为在该版有一些刚学java的,说了一些对java动摇的话。所以说一些我的想法。
以上是一个经常在mfc基础类混的人,第一次到java来,看到臭名昭著的Java一贴想说的。
请大家无论是骂,还是gz,都来一起回贴,请不要客气。我认为最重要是有人能和你一起争论一些东西。
**********************************************************
我的回答:
同意,而且我可以告诉你,我是从C++转到java的,并不是因为java真的好到哪里去了(事实可能正相反)而是因为java有很多商家支持,用人单位也愿意要。
其实我认为C、C++总体上比java好。
1 java的内存自动回收效率较低,可优化空间也很小。每个类生成对象时都相当new了一块内存空间,你的对象无法放在栈里,只能放在堆里,想一想你就知道这会对性能有多大影响!喜欢java的人常说C中的指针是多么多么难用可怕的东西,可是我当初用的时候一点这种感觉也没有
2 java所谓的跨多平台其实并不具有很重大的意义
就算java能很好的跨多平台,又有什么意义呢?放在一个新的平台上之前从新编辑一下又能费多大事呢?而java为了不重新编译就跨平台做了很多很多妥协,结果呢,本质上还是不能直接跨平台,而是需要做出修改,那又能比C强多少呢?
3 J2EE本身也存在巨大的问题,做出的性能牺牲实在太惨烈了,而换来的一些东西我左看右看也感觉是玩具而以,至少用C++有更好的解决办法。
所以说很多东西是商业上的抄作而已
**********************************************
反对者之一的回答:
我也是从C++转到Java上的,但是我对C++和Java的看法有所不同:
1。C++还局限在一个语言的层次,而Java已经突破了这个层次,上升到了平台的境界。在这点上,只有.NET可以相提并论。
2。C++的繁琐,对于高手来说是微不足道的。但是一个项目,尤其是大型项目,不可能所有参加的人员都是高手,这个时候,Java中提供的一些原本看来微不足道的东西,比如多线程的支持,内存管理等等,可以大大提高编码的效率和质量。同时也把高手们从帮助新手的工作中解脱出来。
3。Java的跨平台性能的意义非常重大,但是对于从来用不到跨平台开发的人或者用到跨平台开发,但是使用的平台功能只是各个平台功能交集的人来说没有意义。仅举一个简单的例子,使用C/C++和使用Java在不同平台上进行多线程应用的开发所需要付出的代价是截然不同的。从另一个方面来讲,如果知识开发桌面系统应用的话,多线程几乎是可以不考虑的。但是对于后台服务器以及中间件来说,多线程是不可避免的。而且后台服务器/中间件往往需要能够在多种操作系统中运行,这个时候,Java就体现出它巨大的威力了。当然,理论上.NET也可以,但是目前还做不到。
4。我看不到C++中有什么技术是可以和J2EE技术作比较的。CORBA/Socket的层次都太低,开发所需要的代价远比J2EE技术高得多,所以项目风险大。
5。Java的出现并不仅仅是商业炒作而已。