您的位置 首页 java

从开发效率讲,为什么老程序员都觉得Java远超C++?

Java是由C++发展而来的,保留了C++的大部分内容,但是相比于C++,Java的语法更加清晰,规模更小,更容易上手。Sun公司在设计之初,对多种编程语言进行了深入的研究,摒弃了其他语言的弊端,最终推出了Java语言,正因为如此,Java很大程度改善了C++本身就存在的缺陷,成为了一种新的,完全面向对象的编程语言。

从开发效率讲,为什么老程序员都觉得Java远超C++?

一、Java与C++的区别

1.指针

Java没有指针概念,从而有效的防止在C++语言中容易造成很多麻烦的指针失误(例如指针悬空造成的系统崩溃),在C++中指针操作内存时,经常会出现错误。在Java 中没有指针,更有利于 Java 程序的安全。

2.多重继承

C++支持多重继承,允许多父类派生一个子类。这意味着一个类可以继承多个父类,尽管多重继承在很多场景中功能很强,但是使用复杂容易造成大量麻烦成为了其最大弊端。所以 Java 不支持多重继承,但允许一个类实现多个接口。可见,Java 既实现了 C++多重继承的功能,又避免了 C++的许多缺陷。

3.数据类型

Java是完全面向对象编程的语言,方法和数据都是类的一部分,除了基本数据类型,其余类型的数据都作为对象型数据,例如对象型包括字符串和数组。类将数据和方法结合起来,把它们封装在其中,这样每个对象都可实现具有自己特点的行为。而 C++将函数和变量定义为全局的,然后再来调用这些函数和变量,从而增加了程序的负担。此外,Java 还取消了 C/C++中的结构和联合,使编译程序更简洁。

4.垃圾回收

Java中有垃圾回收机制,但是C++没有,Java中的垃圾回收机制可以让Java中new对象后不用管,不用考虑释放;虚拟机会自动去回收内存;C++中new了对象或分配内存后一定要记得释放,不然就会内存泄漏;要使C++创建对象自行释放,要自己实现一套引用计数的机制。

 int* pArr = new int[5];
// todo: add your operation code
delete[] pArr;
pArr = NULL;

Test* p = new Test();
// todo: add your operation code
delete p;
p = NULL;  

二、Java的效率到底高在哪里

Java是面向数据结构编程的,C++是面向内存编程的。

这就意味着C++内存是裸露的,增删完全凭你操作,但是运行的时候会崩溃。

Java可以操作的都是设计好的数据,可以说更像是在模板里改数值, 除了这些可以改的部分之外,剩下的都是规定死的。

我觉得开发效率主要就是这里的区别,C++太灵活了,灵活到难以管控,但是C++的运行又是很敏感的,少一个部件就立刻崩溃。所以相比来说,Java的模板改数据就很难出错,不需要再花时间进行调试。

语言上:

Java是一个比C++更容易parse得多的语言,所以相应的工具链IDE会更容易做,无论多大的Java的项目,就是新手写完都不会有编译错误。但是写上千行C++程序,写完不需要改编译错误的,都不是一般高手。实际上,C++的语言特性太丰富,一般的团队都是裁剪出一个子集来用,就这个子集来说,大家的认识也千奇百怪。

ABI依赖:

ABI依赖,C++还是一门面向底层的语言,直接面向ABI接口这样底层环境的编程。我就不提什么Linux下程序移植到Windows下这种坑爹的事情了,我有一次把一个在fedora下跑得好好的程序拿到ubuntu下重编译就莫名crash了,开着gdb debug N久汇编。

库的分发难度高

没有包管理,这样库就不容易分发,不可能有Maven这样的东西,这个缺陷严重限制了C++的使用,就是你的项目必须要有依赖的全部代码,因为原因2,很多时候static lib都不靠谱,更不要提dynamic lib了。

文章来源:智云一二三科技

文章标题:从开发效率讲,为什么老程序员都觉得Java远超C++?

文章地址:https://www.zhihuclub.com/198454.shtml

关于作者: 智云科技

热门文章

网站地图