什么语言能完全取代Java同时具备C++的所有优点?
发布网友
发布时间:2022-03-01 04:03
我来回答
共2个回答
热心网友
时间:2022-03-01 05:32
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+
+来写网络程序实在是麻烦了。
--
热心网友
时间:2022-03-01 06:50
什么人能具备机器人的能力又同时具备人类的智慧呢?
什么语言能完全取代Java同时具备C++的所有优点?
1、在内存管理方面 在这方面我更欣赏java,也认为这是java比C++更易用的重要原因。C++的用户自己管理 内存和灵活的指针用法往往让用户为了一个内存问题而调试好几天。让用户自己释放内 存使得用户必须非常小心,在程序有多个出口或指针被多个线程或被多个容器拥有的情 况下,何时能安全的释放内存都必须非...
python编程软件简介(常用python编程软件)
Python本身被设计成具有可扩展性,它提供了丰富的API和工具,以便开发者能够轻松使用包括C、C++等主流编程语言编写的模块来扩充程序。就像使用胶水一样把用其他编程语言编写的模块粘合过来,让整个程序同时兼备其他语言的优点,起到了黏合剂的作用。正是这种多面手的角色让Python近几年在开发者世界中名声鹊起,因为互联网与移...
go语言与java的区别(go与java)
Go的标准库已经非常稳定,lib库也在不断地扩充和完善中5.部署方便(基于C语言的特性是的Go语言的二进制文件可以运行于任何一种操作系统,天生的跨平台特性,更优于Java)Go语言作为一个新兴的编程语言,因其最初的商业开源的特性,有Google的加持,加上现在区块链技术中Go项目所占比例逐渐增加,因而在...
c和c++和c#之间的关系是什么?
C++是完全兼容C的一门具备面向对象特点的语言,使得C的领域从系统级别,横跨到应用级别,覆盖领域更加广泛。C++同时延续了C的全部优点(具备面向过程和面向对象特点、编程本质掌握程度深)。C#是微软研发的基于C特点的一门类似于Java的编程语言。其中C#有很多C语言的影子。C#是一门专注于windows平台开发应用...
kotlin能取代java吗的最新相关信息
除了JAVA本身的强大之外,还有一个原因在于,JAVA与C#语言,几乎是一模一样的。只有非常细微的差别,不仅语法一样,而且连编程思想都一样。只要掌握其中一门,完全可以在几天之内,无师自通另外一门。然后就可以对照api文档,去开发另外一门语言的程序了。所以学习JAVA的一大亮点就在于“学一门,会两门...
Java, C, C++, Python 语言各有什么优点,学哪门语言更强大,更有...
Java:面向对象,开源,不说跨平台了哈,恶心;不直接支持硬件级别的处理等。C/CPP:C面向过程,CPP面向对象(部分比较怪异),分裂比较严重,支持硬件级别的处理。ptyhon:动态解释型,开发效率高,开源,灵活,入门低。上面只是简单的说了下一些比较明显的特点。你问哪门语言更强大,我不知道,都很强大...
php语言是什么(php是什么编程语言)
PHP独特的语法混合了C、Java、Perl以及PHP自创新的语法。它可以比CGI或者Perl更快速的执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;与同样是嵌入HTML文档的脚本语言JavaScript相比,PHP在服务器端执行,充分利用了服务器的性能;PHP...
C++能像java和C那样作为机器语言吗?
C++可以说是对C的扩充,具备C语言的特性,可以进行底层编程,从这方面来说,C++的控制范围要比java要大,但是其语言本身过于庞大,不适合进行嵌入式编程,所以嵌入式目前使用较多的是C或java,C++目前可以结合MFC类库开发windows下的桌面应用程序或用于网络 ...
开发人员希望使用的六种脚本语言
许多编程语言可以很容易地写一些小东西 再扩展成一个较大的应用程序 但当软件需要变成一个真正的有强大逻辑结构的库时 问题就来了 F#就可以让你做得很好 你可以从简单的(就像使用动态类型语言如Python或Ruby那样)开始 最终完成一个非常强大的程序(如同C #或Java ) F#的关键益处是做到过渡完全流利而无...
php有什么作用(php%的作用)
PHP独特的语法混合了C、Java、Perl以及PHP自创新的语法。 PHP可以比CGI或者Perl更快速的执行动态网页——动态页面方面,与其他的编程语言相比。 PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成htmL标记的CGI要高许多。 PHP具有非常强大的功能,所有的CGI的功能PHP都能实现。 PHP支持几乎所有流行的数据库以及操作...