C++ JAVA C C# .NET有什么区别啊

2024-11-14 20:26:04
推荐回答(5个)
回答1:

现在最流行的高级语言主要应该是C/C++(我喜欢统一叫C语系,下文也统一称为C语系),.net(无论C#.NET还是VB.NET,我是使用C#的),JAVA三种语言。
很多人对于这些语言有很大的误区,也没有一个清晰的认识。
这里我来说说这三个语言吧。
首先说说C语系:
C语系和里C和C++基本在语法结构上,还是关键字上还是功能上都没有太大的差别,但是两者还是有一个小小的差别——C是面向过程的,而C++则是在C的基础上采用了面向对象的思路。另外,在一些关键字的用法上有一些差别,主要体现在以下几个方面:
1、基础函数库的不同——包括库内某些函数库的不同;
2、C++引入了命名空间的概念;
3、最直接的感受——输入输出等关键字的不同;
4、类及类相关的概念——C++中出现了面向对象的思想;(很多学习C++的朋友并没有学会这个思想,而是用的面向过程的思想,C++对于这两种编程方式都是支持的)。
而其他的用法都是几乎相同的。C语系的最大的特点就是指针——对内存地址的直接访问和运算。程序员可以直接对内存空间进行各种操作,这为C语系的编程带来了极大的灵活性。但是这也是C语系的一个极大的缺陷——对内存的操作失误经常是导致程序内存空间高消耗从而引发响应问题乃至于崩溃的直接和根本原因.而内存操作是否合适,编译器是无法识别的,只有在程序的运行和测试中才能发现,这也是C语系的工程开发进度缓慢的直接原因。
当然,另一个原因就是C语系下的很多代码都需要自己写,很少有人提供各种现成的库供编程者使用,而这些提前编译好,具有各种功能的库在C语系下一般称为 “引擎”。当然了还有一个大家更为熟悉的名称——动态函数库,这个名字在JAVA和.NET中也是这样使用的。这是题外话了。
C语系也是目前最完善和稳定的高级程序语言。C语系逻辑严谨,结构清晰。编写的程序具有良好的可读性和高效性。而且如果编程合理,程序健壮性也是非常客观的(当然,这些完全依赖于算法和结构的设计——许多对内存空间的直接访问和直接操作提高程序执行的效率)。
C语系的强大的灵活性使得其称为大型工程中的不可替代的高级编程语言。但是C语系本身的特性也导致了明显的缺陷——编码、编译后的程序体积大;程序的可移植性低,编译后无法修改等。
由此诞生我们熟悉的另外两种语言——.net 和java。
下面来谈JAVA:
JAVA 是由SUN公司以C为蓝板研发的,本来开发的目的是为了作驱动编程。用以方便对各种电子设备的联网或者互联操作的语言,所以在设计初期就引入了许多在当时非常先进的思想——体积小(为了能够进行嵌入),高可移植性,高效性,面向对象。同时为了避免内存分配失误引起的尴尬,JAVA取消了C语系给编程人员直接访问内存的权限,内存的分配完全由JAVA解释器来负责。
为了达到高移植性JAVA采用了一个特殊的方式:所有的JAVA程序编写完以后并不是直接编译,而是形成归档文件包——一种可以被JAVA解释器解释的中间代码。需要运行的时候由JAVA解释器来解压并执行。
而取消了内存的直接操作带来的最直接的影响就是代码体积的迅速减小——JAVA程序员不会费尽心思去想尽办法折腾内存操作了,这使得程序员的所有心思都放到了直接的算法功能上。当然,不能直接操作内存,所有跟内存相关的类型也都自然而然的取消了,这就不存在了那么多“乱七八糟”的地址引用了。这些都使得程序代码迅速减小。
各种各样的改进之后,我们熟悉的JAVA出现了——在具备了以上的特性之外,JAVA的缺点也逐渐显示了出来:由于无法进行复杂的操作,所以如果要编写复杂的代码,程序的效率就会瞬间降低(因为要嵌套过多的函数层)。
最后,编程人员们终于认定了一个事实——JAVA不适合用来实现复杂的功能,但是却非常适合那些功能简单,过程并不复杂的功能。于是,除了驱动编程,JAVA最终应用在了我们熟悉的地方——网络小程序,手机应用程序。
好了,最后我们来谈谈.NET——同时也谈下C#:
其实C#和.NET根本就是一体的,怎么这么说呢?我们现来看看.NET,.NET是微软为了提高网页编程人员的效率及网页编程的安全性,在ASP的基础上提出了后台代码分离的概念。同时为了简便后台代码开发,微软将许多控件整合编写了大量的(服务器)控件函数。形成了一个高效,安全的网页编程语言.net,在ASP时,功能函数都是由Script提供的,主要是基于VB和JAVA,在.net里,为了方便许多C语言的程序员转型实现高效的服务器编程——不知道是不是微软也一直觉得C语系的程序员才培养了好的编程习惯啊——于是将C++进行改良,主要是加强了网络和数据处理方面的功能(通过编写了一大堆的网络和数据相关的控件),同时将C语系的指针取消了——看来随意访问内存带来的问题烦倒了真是无数的人啊,同时改变了MFC的界面设计方式(借鉴采用了C++Builder的GUI设计界面的方式)——这就形成了我们现在认识的C#。而当其作为.net的后台语言时就是c#.net了。
c#主要是为了开发一些和网络相关的程序,c#主要的问题也是.net的问题在于运行程序的机器必须安装有相应版本的framwork——微软的东西向来移植性都很低,即便是用C语系开发的程序也完全没有什么移植性,更何况是他们自己研究出来的一个语言了。而.net则是专门用于WEB编程的一个架构平台,当然也可以些application,但是并不合适,application还是直接用c#或者c语系好了。
当然,.net的优势大家还是有目共睹的,尤其是代码分离后带来的网站安全性的提高,得到了大家一致的赞同,因此现在Linux平台在内的*NIX系统也开始支持.net了。
最后总结一下几个语言的特点及现阶段主要的应用方向:
C语系: 稳定,灵活,高效 ——————各种大型应用程序、系统的编写,底层的开发——包括操作系统,内核功能的编写等;
JAVA:高效,体积小,可移植性——————硬件驱动的编写,嵌入式程序,手机应用程序,网络小程序等各种需要在可使用资源较少的功能不太复杂的程序;
.NET:开发周期短,代码复用率高,安全性好——————————WebSite及web服务编程;
C#:开发周期短,对网络和数据访问功能——————————各种和网络有关的Applications;

回答2:

C语言

C语言的优点:

1.简洁紧凑、灵活方便

2.运算符丰富

3.数据结构丰富

4. C是结构式语言

5. C语法限制不太严格,程序设计自由度大

6. C语言允许直接访问物理地址,可以直接 对硬件进行操作

7. C语言程序生成代码质量高,程序执行效 率高

8. C语言适用范围大,可移植性好

9. C语言有一个突出的优点就是适合于多种 操作系统,如DOS、UNIX,也适用于多种机型

10.有效地将一个较复杂的程序系统设计任 务分解成许多易于控制和处理的子任务,便 于开发和维护

C语言的缺点:

1. C语言的缺点主要是表现在数据的封装性 上,这一点使得C在数据的安全性上做的有 很大缺陷,这也是C和C++的一大区别。

2. C语言的语法限制不太严格,对变量的类 型约束不严格,影响程序的安全性,对数组 下标越界不作检查等。从应用的角度,C语 言比其他高级语言较难掌握。

3.可重用性差

4.数据安全性差

5.难以开发大型软件和图形界面的应用软件

6.把数据和处理数据的过程分离为相互独立 的实体

7.当数据结构改变时,所有相关的处理过程 都要进行相应的修改

8.每一种相对于老问题的新方法都要带来额 外的开销

9.图形用户界面的应用程序,很难用过程来 描述和实现,开发和维护也都很困难

C++

C++优点:

1.可扩展性强

2.高效 简洁 快速

3.可移植性

4.面向对象的特性

5.强大而灵活的表达能力和不输于C的效率

6.支持硬件开发

7.程序模块间的关系更为简单,程序模块的 独立性、数据的安全性就有了良好的保障

8.通过继承与多态性,可以大大提高程序的 可重用性,使得软件的开发和维护都更为方便

C++缺点:

1.比较底层,易用性不是很好

2.多重继承和友元机制

3.标准库涵盖范围不足

4.开发周期长

5.非并行

6.掌握有难度

7.粒度封装不够

Java的优点:

1.简单性

2.面向对象性(面向对象的程度可以达到 95%)

3.健壮性

4.跨平台性

5.高性能(自动垃圾回收机制)

6.多线程

7.动态性

8.安全性

Java的缺点:

1.效率低(毋庸置疑)

2.跨平台是它最大的优点也是最大的缺点

3.复杂性(做一个项目需要很多的知识,涉 及面广)

回答3:

从语言特性角度看,C++与java都是非常成熟的高级汇编语言。
而C是汇编的鼻祖,C++,还是C#都是进化后的分支版本。
.net是一种基于visual开发平台的语言框架。不管是VB还是VC上用,都能完全的调用它,而无须写基础控制或模块。
当然这也仅支持在微软的开发平台上。

回答4:

我感觉潘达讲的不完全对,运行平带net才是跨平台的基础,只要安装了net的平台,微软得的那套都系C# net版本的c++ vb.net 都能运行

回答5:

c++是一个面向对象语言的一种国际标准,他只是一种语言,java一种跨平台的纯面向对象语言,他摒弃了C++的一些缺点,有C++的编程风格,他除了是一种语言,还是一个运行环境,java的运行需要java运行平台。。。 C语言是很早的一个变成语言,他只是比汇编语言高级些,是面向过程的语言,适合编写底层代码,用它比用汇编方便。。。
C#就是微软的一个山寨JAVA(说的夸张了点),java解决了程序跨平台问题,微软觉得你的钱赚的太多了,就开发了C#,和java竞争,c#的运行平台就是.net, .net,所以.net不是一个语言。。。。