您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > C是微软NET开发人员的首选语言
C#是微软.NET开发人员的首选语言,它具有的新功能经受住了时间的考验,且始终位于科技前沿,为现代企业计算环境提供了一种可用性强的高效编程方法。无论从哪个角度看,C#都是21世纪最重要的编程语言之一。本章的目的是回顾C#发展的历程,包括:C#创建的原动力、设计理念以及它是如何受其他计算机语言影响的。本章也解释了C#和.NETFramework的相关性。正如您将看到的,C#语言和.NETFramework协同工作,一起构建了一个高度优雅的编程环境。1.1C#的族谱计算机语言并不是凭空存在的,相反,它们彼此相关,新语言都或多或少地受到它之前的语言的影响。类似于异花授粉的过程,一种语言的功能会被另一种语言沿用,但新的创新内容会被集成到现有的环境中,而陈旧的构造则会被消除。就这样,编程语言不断地进化,编程艺术也不断地完善。C#也不例外。C#继承了多种程序设计语言的精髓,它直接继承了当今最成功的两种计算机语言——C和C++语言的功能,并且与Java有紧密联系。理解它们之间的关系对于理解C#语言是很重要的,因此,我们将分析这三种语言的发展环境,以此来开始C#语言的研究。1.1.1C语言:现代程序设计的开端C语言的创建标志着现代程序设计时代的开始,它是DennisRitchie于20世纪70年代在一台使用UNIX操作系统的DECPDP-11机上创建的。尽管一些早期的语言,最著名的如Pascal语言,已经取得了相当的成功,然而是C语言首先建立了面向过程编程的规范,至今仍适用。C语言成长于20世纪60年代的“结构化程序设计”变革。在结构化程序设计兴起之前,大型程序很难编写,因为程序逻辑容易混乱会呈现所谓的“无头绪的代码”,比如掺杂大量纷乱而难以跟踪的跳转、调用和返回。而结构化语言通过增加定义明确的控制语句、带有局部变量的子程序以及其他方法改进了这个局面。通过使用结构化的技术,程序变得更加组织良好和可靠,并且1CHAPTERC#的起源第Ⅰ部分C#语言4更易于管理。尽管当时也存在其他结构化语言,但C语言首先成功地集强大功能、优雅简洁和可表达性于一身。其简单易用的语法加上以程序员(而非程序语言)为本的设计理念,很快赢得了众多程序员的拥护。这些在今天看来也许微不足道,但当时C语言确实为程序员带来了一股振奋人心的新鲜空气。自然地,C语言成了20世纪80年代应用最广泛的结构化程序设计语言。然而,C语言也有其局限性,其中最为麻烦的一种局限性是其不能够处理大型程序。一旦项目达到了一定的规模,使用C语言就会遇到障碍,并且C程序变得难以理解和维护。严格来讲,局限性具体取决于程序、程序员和他们所使用的工具,但是只要超出这种局限,C程序就会变得难以管理。1.1.2OOP和C++语言的创建到20世纪70年代后期,许多项目的规模接近或达到了结构化程序设计方法和C语言所能承受的极限。为解决这个问题,新的编程方法开始出现,该方法称为面向对象程序设计(object-orientedprogramming,OOP)。通过使用OOP,程序员能够处理更大型的程序。但当时最流行的语言,即C语言并不支持面向对象程序设计。开发面向对象版本的C语言的愿望最终导致了C++语言的诞生。C++是由BjarneStroustrup于1979年在新泽西州的MurrayHill的Bell实验室开发的。最初,他称这种新语言为“CwithClasses”,1983年改名为C++。C++包含C语言的全部,因此,C语言是C++的基础。Stroustrup对C语言所做的绝大部分扩展都是为了支持面向对象程序设计。事实上,C++是C语言的面向对象版本。通过创建基于C语言构建的C++语言,Stroustrup为程序员提供了一种将面向过程中的方法平滑移植到OOP中的方法。这样,C程序员在使用面向对象方法编程之前仅需要学习一些新功能,而不用去学习一门全新的语言。C++语言在20世纪80年代的大部分时间里慢慢得到应用,并取得了很大的发展。到了20世纪90年代初,C++语言逐渐成为主流,并大范围地普及。到了20世纪90年代末,C++已经成为应用最广泛的程序设计语言。目前,C++语言仍是开发高性能的系统级代码的优秀语言。C++语言的出现并不是试图要创建一种新的程序设计语言,而是对一种已经很成功的语言的增强,理解这一点很重要。总之,语言的发展是从一种已有的语言开始,然后不断改进直至满足需求,这是亘古不变的道理。1.1.3Internet和Java的出现程序设计语言的下一个主要进步是Java语言,它最初被称为Oak,是由SunMicrosystems公司在1991年开始使用的。Java的主要设计人员是JamesGosling,PatrickNaughton、ChrisWarth、EdFrank和MikeSheridan等人也参与了这项工作。Java是一种结构化的面向对象语言,它继承了C++的语法和设计理念。与其说Java语言创新方面的动力来自于程序设计艺术的进步(尽管从某种程度上是),不如说来自于计算机硬件环境的变化更确切。在Internet成为主流之前,大多数程序都是针对特定的CPU和操作系统而编写、编译和执行的。事实确实如此,但当人们能够很容易地把程序从一种环境移植到另一种环境,并且可移植性相对于其他紧迫问题已经退居其次时,程序设计人员都乐于对代码进行重用。然而,随着Internet的兴起,多种不同类型的CPU和操作系统连接在一起,可移植性的问题再次出现,而且更加严重。为解决可移植的问题,需要一种新的语言,这种语言就是Java。第1章C#的起源5PARTⅠ尽管Java最重要的功能是能够创建跨平台、可移植的代码(这是Java很快获得认可的原因),但值得注意的是,创建Java语言的原动力并不是Internet而是急需一种平台无关的语言,以便为嵌入式控制器开发软件。当试图给Internet创建代码时,再次遇到了在嵌入式开发中遇见的问题——跨平台、可移植性。实际上,Internet是一个巨大的分布式计算空间,其中存在着多种不同类型的计算机。能解决小规模环境中移植性问题的技术同样可以应用于Internet中的大规模环境。Java通过将程序员的源代码转换成为一种叫做“字节码”的中间代码,从而使得程序可移植。然后,由Java虚拟机(JVM)来执行该字节码,所以Java程序能够在任何有Java虚拟机的环境中运行。另外,由于Java虚拟机相对容易实现,因此它对于大多数环境都是可用的。Java使用字节码,这和C、C++语言的机制完全不同,C和C++程序通常要编译为可执行的机器码。机器码是和特定的CPU和操作系统相关联的。因此,如果要在不同系统上执行C/C++程序,就必须将它们重新编译为该环境下的特定机器码。所以,要创建一个可以在多种环境中运行的C/C++程序,就需要程序有多种不同的可执行版本,这不仅不切实际,代价也十分昂贵。Java采用中间语言不失为一种优雅而高效的解决方案。这也正是C#所采用的方案。如前所述,Java源自C和C++语言,其语法基于C语言,而面向对象模型则基于C++语言。尽管Java代码既不向上也不向下兼容C/C++,但它们的语法及其相似,从而使得大量C/C++程序员能够很容易地转向Java。此外,因为Java基于并改进了现有的范例,所以Gosling等人得以集中精力完成那些新添加的、富于创新的功能。正如Stroustrup开发C++语言时不需要从头开始一样,Gosling在开发Java语言时也不需要创建一门新语言。而且,随着Java的创建,C和C++已成为创建新计算机语言的公认的底层基础。1.1.4C#的创建当Java成功解决了Internet环境下的可移植性问题时,另一些缺乏的功能随即暴露出来。首先是多语言互操作性,也称为混合语言程序设计,这指的是用一种语言编写的代码和用另一种语言编写的代码协同工作的能力。多语言互操作性是创建大型分布式软件系统所需要的功能,也是创建软件组件所期望的功能,因为最有价值的组件往往能够被尽可能多的计算机语言采用,并能最广泛地应用于不同的操作环境中。Java另一个缺乏的功能是没有与Windows平台完全集成。尽管Java程序能够在Windows环境中运行(假定已经安装了Java虚拟机),但Java和Windows不是完全兼容的。由于Windows是当今应用最广泛的操作系统,因此缺乏对Windows的直接支持是Java的一大缺陷。为满足种种需要,微软公司开发了C#语言,它是微软在20世纪90年代后期开发的,也是整个.NET战略的一部分。2000年中期发布了C#的第一个版本,其首席设计师是AndersHejlsberg。Hejlsberg是当今世界上处于领导地位的计算机语言专家之一,他取得了许多出色的成就,例如,20世纪80年代,极其成功且极具影响力的TurboPascal软件因其语法的精简实现而成为了以后所有编译器的标准,该软件的最初创建者就是Hejlsberg。C#与C、C++和Java直接相关。这不是偶然的,因为这三种语言是世界上使用最广泛、最受欢迎的程序设计语言。而且,在创建C#语言时,几乎所有的专业程序员都知道C、C++和Java。通过将C#建立在坚实、易理解的语言基础上,C#提供了一种简单的从这些语言移植的方式。因此Hejlsberg既不需要也没必要从头开始,而只需将精力集中于特定的改进和创新。第Ⅰ部分C#语言6C#的族谱如图1-1所示,C#的“祖父”是C,从C那里继承了语法、许多关键字和运算符。接下来,C#基于并改进了C++所定义的对象模型。如果您了解C或者C++语言,那么对C#语言将不会感到陌生。图1-1C#的族谱C#和Java之间的关系稍显复杂。如前面所说,Java也是从C和C++衍生而来,也继承了C/C++的语法和对象模型。类似于Java,C#被设计用来产生可移植的代码。但是C#不是衍生于Java,C#和Java更像堂兄弟,有共同的祖先,但在许多重要方面也有所不同。尽管如此,如果您对Java有一定了解,那么对C#的许多概念也将很熟悉。反过来,如果您将来需要学习Java语言,那么从C#中学到的知识也将继续有用。C#包含许多新增加的功能,本书的后面章节中将详细讨论这些功能,其中最重要的功能体现在其对软件组件的内置支持。事实上,C#已经被特征化为面向组件的语言,因为它包含对面向软件组件编程的完整支持。例如,C#包含了支持组件创建的功能,如属性、方法和事件。然而,C#程序能够在安全的混合语言环境中运行,这一点才是它最重要的面向组件的功能。1.1.5C#的发展最初的1.0版本发布后,C#一直在快速发展。C#1.0发布之后不久,微软就发布了1.1版本。该版本包含一些细小的调整,但是没有对该语言添加任何新功能。然而,随着2.0版本的发布,情况发生了很大的变化。C#2.0的发布是C#发展阶段中的分水岭事件,因为该版本增加了许多新功能,如泛型、部分类型(partialtypes)和匿名方法,并且从根本上扩展了语言的范围、功能和覆盖面。C#2.0版本使该语言真正地成为计算机语言开发的主流语言,并且表明了微软对于该语言长期发展的承诺。C#的下一个主要发布版本是3.0,这便是本书将要介绍的C#版本。因为C#2.0增加了许多新的功能,人们期望C#的开发进程缓慢一些,从而可以让程序员有时间熟悉这些功能,但是实际情况并非如此。随着C#3.0的发布,微软再一次将C#推到了语言设计的峰尖浪口,C#3.0添加了一组创新的功能,这些功能重新定义了编程的发展前景。下面列出了C#3.0版本对该语言添加的功能:●匿名类型●自动实现的特性第1章C#的起源7PARTⅠ●扩展方法●隐式类型的变量●拉姆达(Lambda)表达式●语言集成查询(LanguageIntegratedQuery,LINQ)●对象和集合初始化程序●部分方法所有这些功能都非常重要并且对该语言有着深远的影响,但是其中最令人兴奋的两个功能是语言集成查询(LINQ)和拉姆达表达式。LINQ允许开发人员使用C#编程元素编写数据库样式的查询。然而,LINQ语
本文标题:C是微软NET开发人员的首选语言
链接地址:https://www.777doc.com/doc-1012468 .html