C语言,C#,.net的区别

Python024

C语言,C#,.net的区别,第1张

先说.Net:它不是语言,而是微软推出的开发平台,在这个平台上可以使用VB、C#、C++、Java等语言编写程序

C/C#准确的说,是两种语言。

C语言是Combined Language(组合语言)的中英混合简称。是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言, 编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用 到C语言,具体应用比如单片机以及嵌入式系统开发。

C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过 程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NET windows网络框架的主角。

但是由于C/C++的语法90%相似,而且通常支持C++的编译器也支持C编译,所以通常把C/C++一起提。而C#则完全是另一套语言了,虽然语法和C/C++也有很大一部分的相似。

C++在C的基础上改善了语法(使之更易用),增加了模板(泛型)、引用以及面向对象等内容,而且还提供了一套标准模板库。可以说使用C++语言比直接使用C语言更容易,更方便。当然,也更难学一点。

而 C#的出现则是为了和Java抗衡,由于Java摈弃了C/C++中很多容易让人混淆的特性,以Java为模板的C#也同样做了这些事情,甚至为了超过 Java,让很多事情变得更简单。但表面简单的背后是一套复杂的.NET Framework作为支持。因此,学习C#的重点和难点已经不是语法本身,而是了解和学会应用.NET Framework。

具体的事情,三言两语是说不清楚的,建议你多看看论坛上大家对这些语言的评价。最好当然是你能都找本书来看看,亲身体会一下——比较耗时间就是了。

希望我的回答对你有帮助!

现在最流行的高级语言主要应该是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;

.net是一个框架,同时也提供了一个运行环境,可以在这个框架下使用到的编程语言有VC++,VB,C#等,打个比方,如果是用C#开发的WINFORM(WINDOWS窗体应用程序),客户计算机上想要运行它就必须安装相应版本的.net framework,如果是C#开发的WEB,服务器上就必须安装相应版本安装相应版本的.net framework。关于这个解释最好还是上微软的官方看看,http://msdn.microsoft.com

从C语言学到了什么...是不是刚大学毕业哦,工科的学生基本都会学这个,但用的没多少,别提练习写C语言的代码了,想要应对别人问你的问题,就还是温习下教科书上的内容吧,编程语言的目的都是应用,大学时代学的基本都是各个数据类型的操作,指针的操作,文件的操作,这些也都是以实际应用为目的,也只是个基础。

不一定有必要在C的基础上学习.net,但是建议这么做,了解基础的东西对后面深入学习有帮助,最重要的原因是.net上的东西都会封装的很厉害,没基础很容易让人迷途的。