什么语言能完全取代Java同时具备C++的所有优点?

 我来答
影视后期制作学习
2017-06-10 · 知道合伙人教育行家
影视后期制作学习
知道合伙人教育行家
采纳数:258 获赞数:698
荣获北京智泽苑教育科技有限公司金牌教师称号。

向TA提问 私信TA
展开全部
C++和java都是很棒的语言,套用一句李连杰的话就是:

语言本身没有优劣之分,但程序员有强弱之别。

1、在内存管理方面

在这方面我更欣赏java,也认为这是java比C++更易用的重要原因。C++的用户自己管理
内存和灵活的指针用法往往让用户为了一个内存问题而调试好几天。让用户自己释放内
存使得用户必须非常小心,在程序有多个出口或指针被多个线程或被多个容器拥有的情
况下,何时能安全的释放内存都必须非常谨慎的,而且还要保证在程序的各个出口都保
证不内存泄露,这简直就是噩梦!智能指针能解决一些问题,但他带来的问题同样很多
。java的自动垃圾收集简直就是一大解脱!

2、在多线程编程方面

多线程编程大大增加错误的随机性和破坏了接口的“抽象”,要在C++中设计好一个多线
程程序往往不是件轻松的事情。所以我更欣赏linux/unix下以多进程为主的编程手法。
java用“同步方法”来解决同步问题使得多线程异常简单(相对于C++),但在多线程方
面我更喜欢C++,因为java的方法虽然简单,但太过小儿科了,带来了两大弊端:

1)java采用了锁住整个对象的粗粒度多线程同步控制,而C++可以用更细粒度进行控制
。java采用的方法是这样的:类A,类中有成员变量m1、m2,为了保护成员变量,将类A
中所有访问这两个成员变量的成员函数设为synchronized,当某个线程T1调用了类A对象
(记为obj)的synchronized方法时线程T1将锁住整个对象obj,此时若另外一个线程T2
调用obj的synchronized方法(不一定和T1调用的那个方法是同一个方法)将阻塞(若T
2调用了obj的非synchronized方法不会被阻塞),直到T1调用完synchronized方法为止
。这种锁住整个对象的做法显然简化了实现,控制不够精细。例如,若T1调用了obj的一
个只访问m1不访问m2的方法,由于T1锁住了整个对象obj,导致了T2若调用obj的只访问
m2而不访问m1的方法也会阻塞,这显然不合理的。而且能造成重大的性能损失。

2)java采用锁住对象的方法来实现同步在很多情况下也不合理。因为要同步的资源往往
不是类的私有成员。如我们要同步的资源是某个文件A,在C++情况下,给A配把“锁”即
可,而java会锁住访问文件A的对象,这就要求所有线程都只能创建一个对象供所有线程
共享使用,否则不同的对象就可以同时访问文件A了,同步防护失去了意义。这就带来很
大的不便,需要程序员自己注意不要在别的线程中也new出一个对象来。

3、在网络编程方面

在这方面-java-是靠网络起家,网络编程在java下特别简单。而用C+
+来写网络程序实在是麻烦了。
--
葬别内痛
2017-06-10 · TA获得超过509个赞
知道小有建树答主
回答量:345
采纳率:40%
帮助的人:97.9万
展开全部
什么人能具备机器人的能力又同时具备人类的智慧呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式