您好, 访客   登录/注册

浅析C与C#

来源:用户上传      作者:

  摘 要:C#是微软公司发布的一种面向对象的、运行于.NET Framework环境之上的高级程序设计语言,是微软公司的最新成果。从时间顺序上说,最早出现的是C,然后是C++,最后是C#。C++是为了解决软件危机而引入面向对象的概念,C#是为了实现平台统一和JAVA争夺市场下的产物。最后是C#。C++是为了解决软件危机而引入面向对象的概念,C#是为了实现平台统一和JAVA争夺市场下的产物。C是完全面向过程的程序设计语言,而C++可认为是半个面向对象,JAVA从C++发展而来,吸取了C++精华,C#更是JAVA的超级版,C#是完全面向对象的。文章对C和C#之间的联系及区别作了简单阐述。
  关键词:C、C#、Java;面向对象程序设计;NET环境
  中图分类号:TP312文献标识码:A文章编号:1000-8136(2009)17-0146-02
  
  C#(读作“C-sharp”)是微软公司发布的一种面向对象的、运行于.NET Framework环境之上的高级程序设计语言。其在PDC上登台亮相,是微软公司研究员Anders Hejlsberg的最新成果。很多人会提出这样的一个问题,那就是C与C#有无区别呢?答案是肯定的,那二者的区别又在哪里呢,说到二者的区别,就必须先谈谈二者之间的联系。
  1 C与C#的联系
  有一种有趣的说法“C添两个+号,就是C++再添加两个+号,就成了c#了(四个+就成了#)”,还有一种说法“C是爷爷,C++是爸爸,C#是孙子”,从这些形象的比喻中,我们应该能体会到从C到C#的变化过程。
  从时间顺序上说,最早出现的是C,然后是C++,最后是C#。C++是为了解决软件危机而引入面向对象的概念,C#是为了实现平台统一和JAVA争夺市场下的产物。从性能上说,C的效率最高,C++次之,C#最低。C是完全面向过程的结构化编程语言,它的特点是语言体积小、效率高、语言灵活,给程序的限制小,而且可以方便地对低层进行操作,所以它非常适合于开发操作系统、驱动程序,嵌入式等对速度要求较高的程序。C++是向下完全兼容C的,C++与C相比最显著的变化就是增加了面向对象的成分,也就是增加了类的概念,因为它的增加使软件开发可以比较容易地描述人类的思维,使得软件的开发和维护变得相对简单,直接降低了软件的成本,但因为C++是面向对象的语言,这本身就制约它的速度,所以C++适合开发那些大型项目,现代的大部分语言都或多或少的借鉴了C++和C的某些特性。C#被包括在.NET平台下,是一个面向对象、面向网络、面向组件的语言, 有很多地方与JAVA非常相似,擅长于开发网络方面的程序。因此,更确切地说,C#是一个需.NET平台支持的开发语言,单纯看C#没有意义,需要了解.NET平台的开发知识。
  从编译角度看,C/C++编译生成目标文件都是可被CPU直接理解的机器码,而C#编译后生成的是MSIL(Microsoft Intermediate Language),这种语言不能直接被CPU执行,而是依靠.NET framework翻译(Just-in-time Compiling)成opcode后再送到CPU执行的。因此,这也是上面为什么说C#运行效率最低的缘故。(平均意义上的效率低,不是绝对的)。
  C#可认为是C的升级加强版。C是一种优良的面向过程的程序设计语言,而且得到了普遍的推广。但是随着面向对象编程思想的兴起,C已经不能满足要求,因此继而出现了C++、Java、C#等。C#是Microsoft公司设计的一种编程语言。C#和Java都是在语法上借用了C的一些形式而已。跟C/C++没有多少联系了。C#松散地基于C/C++,并且有很多方面和Java类似。Microsoft是这样描述C#的:“C#是从C和C++派生来的一种简单、现代、面向对象和类型安全的编程语言。C#主要是从C/C++编程语言家族移植过来的,因此,C和C++的程序员会马上熟悉它。C#试图结合Visual Basic的快速开发能力和C++的强大灵活的能力。”
  2 C与C#的区别
  了解了C与C#之间的联系,我们就可以讨论一下二者的区别了。C是一种面向过程的程序设计语言,而C#是一种面向对象的程序设计语言。二者的区别体现在很多方面,接下来就分别对它们各自的特点做个描述,从中大家可体会它们之间的不同之处。
  2.1 关于C
  C是面向过程编程的语言,主要用来编写操作系统、单片机程序、底层操作软件(与硬件关系较大的),它适合作为系统描述语言,即可用来编写系统软件,也可用来编写应用软件。虽然语法相对繁琐,但对硬件的底层编程和对内存的管理的灵活性方面C是其他高级语言所不可及的。
  C是结构化编程的典型代表,其用作程序开发时主要是结构化模块,函数的应用和编程。在其原来结构化开发的基础上增加类,就变成了C++,所以可以说C++是带类的C语言。C语言的应用非常广泛,UINX系统中90%的代码是用C语言开发的,其余是汇编等。无论是windows还是Linux及Uinx以及MAC等操作系统,都可用C来开发程序。
  C的不足之处就是:C非常的灵活,高级的不易掌握,据说微软培养一名C程序员需要2年的时间。另外,如果单用C语言开发视窗系统,不用C++是很困难的。
  2.2 关于C#
  C#是从C/C++演化而来的类JAVA的语言,完全面向对象(大家常说的VB、Delphi只是基于对象)。C#是专门针对在.NET Framework上开发应用程序所设计的新程序语言,C#有点类似C++,或者说更像JAVA,因此它有着易用、弹性大的特点,不但提供完整的面向对象支持,在程序语法的执行效率上也比Visual Basic快,所以说C#是为.NET平台量身定做也不为过。
  C#程序设计语言学习容易,内部封装了巨量的类库,用户可以直接拿来使用,无论用它开发win程序还是web程序,都十分方便,里有强大的IDE环境vs.net,这是比JAVA好的特点之一。C#代表了编程语言的发展方向,有资料称微软技术专家认定下一代操作系统的80%代码都是用C#来写。
  在C#里面基本上放弃了C的指针。语法基本没有区别,个人感觉首先C#不必对指针进行太多的研究,然后是可移植性等,其他的区别相当大,可以说不是一个方向的。
  C#与C的语法基本没有区别,但稍有不同,下面就举个例子说明一下――分别在C和C#中声明数组:
  int array1[5]; //在C中声明一维数组
  int[ ]array1=new int[5]; //在C#中声明一维数组
  int array2[3][4]; //在C中声明二维数组
  int[,] array2=new int[3,4]; //在C#中声明二维数组
  int[ ][ ] array3=new int[3][]; //在C#中声明不规则数组
  可见,在C#中声明数组的方式和C中的声明方式是不一样的,在C#中声明数组时,方括号[ ]必须跟在类型后面,而不是标识符后面,若将[ ]放在标识符后是不合法的语法,另一细节是,C#中数组的大小不是其类型的一部分,而在C语言中它却是数组类型的一部分,C#还允许建立不规则数组。
  C#缺点是目前只能在.NET平台下,Windows操作系统上运行。另用它编写WinForm时,与JAVA一样,存在着代码易被解密的危险。
  以上就是本人对C与C#之间联系与区别的一些认识和看法,有的人也会问学习C#是不是必须有C语言的基础,其实并非如此,C#是一门独立的语言,如果作为初学者,并没有必要先去学习C语言,你只需要从零开始接触C#就可以了。不过,如果你学过C语言,那你学习C#会事半功倍的,因为他们之间有很多语法是一样的。
  
  On C and C-sharp
  Wang Zhijun
  Abstract: C-sharp is one kind of high-level programming language which Microsoft Corporation issued, is Microsoft Corporation's newest achievement. From the time sequence, Appears what most early is C, then is C++, finally is C-sharp. C is completely the procedure-oriented the programming language, C-sharp is the JAVA super version, C-sharp is completely object-oriented. This paper has made the simple elaboration to between C and the C-sharp relation and the difference.
  Key words: C; C-sharp; JAVA; object-oriented programming; .NET environmen

转载注明来源:https://www.xzbu.com/8/view-9124674.htm