C语言外文资料翻译及原文.docx

上传人:b****5 文档编号:6400929 上传时间:2023-01-06 格式:DOCX 页数:10 大小:29.75KB
下载 相关 举报
C语言外文资料翻译及原文.docx_第1页
第1页 / 共10页
C语言外文资料翻译及原文.docx_第2页
第2页 / 共10页
C语言外文资料翻译及原文.docx_第3页
第3页 / 共10页
C语言外文资料翻译及原文.docx_第4页
第4页 / 共10页
C语言外文资料翻译及原文.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

C语言外文资料翻译及原文.docx

《C语言外文资料翻译及原文.docx》由会员分享,可在线阅读,更多相关《C语言外文资料翻译及原文.docx(10页珍藏版)》请在冰豆网上搜索。

C语言外文资料翻译及原文.docx

C语言外文资料翻译及原文

.NET和C#简介

为了理解.NET的重要性,考虑一下近10年来出现的许多Windows技术的本质会有一定的帮助。

尽管所有的Windows操作系统在表面上看来完全不同,但从Windows3.1(1992年)到WindowsServer2003,在内核上都有相同的WindowsAPI。

在我们转而使用Windows的新版本时,API中增加了非常多的新功能,但这是一个演化和扩展API的过程,并非是替换它。

向后兼容性是Windows技术的极其重要的特性,也是Windows平台的一个长处,但它有一个很大的缺点。

每次某项技术进行演化,增加了新功能后,都会比它以前更复杂。

很明显,对此必须进行改进。

Microsoft不可能一直扩展这些开发工具和语言,使它们越来越复杂,既要保证能跟上最新硬件的发展步伐,又要与20世纪90年代初开始流行的Windows产品向后兼容。

如果要得到一种简单而专业化的语言、环境和开发工具,让开发人员轻松地编写优秀的软件,就需要一种新的开端。

这就是C#和.NET的作用。

粗略地说,.NET是一种在Windows上编程的新架构——一种新API。

C#是一种新语言,它可以利用.NETFramework及其开发环境中的所有新特性,以及在最近20年来出现的面向对象的编程方法。

在继续介绍前,必须先说明,向后兼容性并没有在这个演化进程中失去。

现有的程序仍可以使用,.NET也兼容现有的软件。

软件组件在Windows上的通信,现在几乎都是使用COM实现的。

因此,.NET能够提供现有COM组件的包装器(wrapper),以便.NET组件与之通信。

Microsoft已经扩展了C++,提供了一种新语言J#,还对VB进行了很多改进,把它转变成为功能更强大的VB.NET,并允许把用这些语言编写的代码用于.NET环境。

但这些语言都因有多年演化的痕迹,所以不能完全用现在的技术来编写。

在使用.NETFramework1.0和VisualStudio.NET2002时,要创建可移动应用程序,就必须下载MicrosoftMobileInternetToolkit(MMIT)。

而现在,有了.NETFramework1.1和VisualStudio.NET2003,就可以直接创建可移动应用程序,不需要下载其他工具包了。

在使用VisualStudio.NET2003创建新项目时,这是显而易见的。

例如,在查看可以创建的C#项目类型列表时,会看到ASP.NETMobileWebApplication和SmartDeviceApplication。

ASP.NETMobileWebApplication项目类型可以用于建立基于Web的可移动应用程序。

SmartDeviceApplication项目类型可以创建用于PocketPC或其他WindowsCE设备的应用程序。

为WindowsCE设备建立的第三方客户应用程序利用的是CompactFramework,这是.NETFramework的删节版本。

打开任何一种可移动项目类型,系统就会在VisualStudio.NET工具箱中列出一组可用的可移动服务器控件,然后用户就可以使用这些控件创建应用程序。

在新的架构中,另一个大的变化是ADO.NET。

ADO.NET是访问和处理数据的.NET方式,现在它有两个新的数据提供程序,其中一个用于ODBC,另一个用于Oracle。

在使用.NETFramework1.0时,就可以使用ODBC数据提供程序,但它需要单独下载。

另外,一旦下载,这个数据提供程序的命名空间就是Microsoft.Data.Odbc。

而在.NETFramework1.1中,ODBC数据提供程序是内置的,不需要单独下载。

而且可以通过System.Data.Odbc命名空间来使用ODBC数据源,访问ODBC数据连接、数据适配器和数据读取器对象。

另一个新的数据提供程序用于处理Oracle数据库。

该数据库在企业中的应用非常广泛,缺乏Oracle数据提供程序常常是.NET进入企业的一大障碍。

为了使用这个新的数据提供程序,需要在项目中引用System.Data.OracleClient命名空间。

并发执行side-by-sideexecution是指在同一个服务器上运行应用程序的多个版本,其中不同的应用程序版本使用不同的运行库版本。

Microsoft一直都向开发人员承诺提供这个功能,但该功能总是很难可视化,因为只能使用Framework的一个版本。

在发布了Framework的第2版.NETFramework1.1后,就可以看到Microsoft提供的这个功能了。

现在,可以创建.NET应用程序面向.NETFramework1.1的新版本,同时还可以让面向.NETFramework1.0的旧应用程序像以前那样继续运行。

最近,许多Internet使用IP4运行,IP4也称为IPv4。

它提供了IP地址,例如255.255.255.255。

.NETFramework1.1现在支持IPv6,IPv6是在1995年创建的,解决了IPv4所面临的许多问题。

如果人们一直采用IPv4,将很快用尽可用的IP地址。

.NETFramework1.1通过System.Net命名空间支持IPv6,ASP.NET和XMLWeb服务也支持IPv6。

在升级.NETFramework时,还对VisualStudio.NET本身进行了升级。

注意,在开始页面上有一些新图形,该页面上对象的组织方式也有所不同。

另外,新IDE最重大的变化是,一旦安装,就不是简单地把VisualStudio.NET2002升级为VisualStudio.NET2003,而是安装了一个全新的IDE版本。

如果机器上已经安装了VisualStudio.NET2002,就会得到两个完全独立的VS.NETIDE。

这样,如果要创建和使用面向.NETFramework1.0的应用程序,就使用VS.NET2002;如果要创建和使用面向.NETFramework1.1的应用程序,就使用VS.NET2003。

还应注意,在打开用VS.NET2002创建的项目时,系统会询问是否要把项目升级为VS.NET2003项目,如果回答“是”,就会把项目升级为面向.NETFramework1.1的应用程序。

注意,这是一个不可逆的过程。

除了这些较大的变化之外,在VS.NET2003的IDE中,Intellisense的智能化程度更高,代码自动完成功能更强。

C#在某种程度上可以看作是.NET面向Windows环境的一种编程语言。

在过去的十几年里,Microsoft给Windows和WindowsAPI添加了许多功能,VB和C++也经历了许多变化。

虽然VB和C++最终已成为非常强大的语言,但这两种语言也存在问题,因为它们保留了原来的一些内容。

对于VisualBasic来说,它的主要优点是很容易理解,许多编程工作都很容易完成,基本上隐藏了WindowsAPI和COM组件结构的内涵。

其缺点是VisualBasic从来没有实现真正意义上的面向对象,所以大型应用程序很难分解和维护。

另外,因为VB的语法继承于BASIC的早期版本(BASIC主要是为了让初学者更容易理解,而不是为了编写大型商业应用程序),所以不能真正成为结构化或面向对象的编程语言。

另一方面,C++在ANSIC++语言定义中有其自己的根。

它与ANSI不完全兼容,因为Microsoft是在ANSI定义标准化之前编写C++编译器的,但已经相当接近了。

遗憾的是,这导致了两个问题。

其一,ANSIC++是在十几年前的技术条件下开发的,因此不支持现在的概念(例如Unicode字符串和生成XML文档),某些古老的语法结构是为以前的编译器设计的(例如成员函数的声明和定义是分开的)。

其二,Microsoft同时还试图把C++演变为一种用于在Windows上执行高性能任务的语言——在语言中避免添加大量Microsoft专用的关键字和各种库。

其结果是在Windows中,该语言成为了一种非常杂乱的语言。

让一个C++开发人员说说字符串有多少个定义方式就可以说明这一点:

char*、LPTSTR、string、CString(MFC版本)、CString(WTL版本)、wchar_t*和OLECHAR*等。

现在进入.NET时代——一种全新的环境,它对这两种语言都进行了新的扩展。

Microsoft给C++添加了许多Microsoft专用的关键字,并把VB演变为VB.NET,保留了一些基本的VB语法,但在设计上完全不同,从实际应用的角度来看,VB.NET是一种新语言。

在这里,Microsoft决定给开发人员另一个选择——专门用于.NET、具有新起点的语言,即VisualC#.NET。

Microsoft在正式场合把C#描述为一种简单、现代、面向对象、类型非常安全、派生于C和C++的编程语言。

大多数独立的评论员对其说法是“派生于C、C++和Java”。

这种描述在技术上是非常准确的,但没有涉及到该语言的真正优点。

从语法上看,C#非常类似于C++和Java,许多关键字都是相同的,C#也使用类似于C++和Java的块结构,并用括号({})来标记代码块,用分号分隔各行语句。

对C#代码的第一印象是它非常类似于C++或Java代码。

但在这些表面上的类似性后面,C#学习起来要比C++容易得多,但比Java难一些。

其设计与现代开发工具的适应性要比其他语言更高,它同时具有VisualBasic的易用性、高性能以及C++的低级内存访问性。

C#包括以下一些特性:

●完全支持类和面向对象编程,包括接口和继承、虚函数和运算符重载的处理。

●定义完整、一致的基本类型集。

●对自动生成XML文档说明的内置支持。

●自动清理动态分配的内存。

●可以用用户定义的特性来标记类或方法。

这可以用于文档说明,对编译有一定的影响(例如,把方法标记为只在调试时编译)。

●对.NET基类库的完全访问权,并易于访问WindowsAPI。

●可以使用指针和直接内存访问,但C#语言可以在没有它们的条件下访问内存。

●以VB的风格支持属性和事件。

●改变编译器选项,可以把程序编译为可执行文件或.NET组件库,该组件库可以用与ActiveX控件(COM组件)相同的方式由其他代码调用。

●C#可以用于编写ASP.NET动态Web页面和XMLWeb服务。

应该指出,对于上述大多数特性,VB.NET和ManagedC++也具备。

但C#从一开始就使用.NET,对.NET特性的支持不仅是完整的,而且提供了比其他语言更合适的语法。

C#语言本身非常类似于Java,但其中有一些改进,因为Java并不是为应用于.NET环境而设计的。

在结束这个主题前,还要指出C#的两个局限性。

其一是该语言不适用于编写时间急迫或性能非常高的代码,例如一个要运行1000或1050次的循环,并在不需要这些循环时,立即清理它们所占用的资源。

在这方面,C++可能仍是所有低级语言中的佼佼者。

其二是C#缺乏性能极高的应用程序所需要的关键功能,包括保证在代码的特定地方运行的内联函数和析构函数。

但这类应用程序非常少。

.NET运行在Windows98、2000、XP和2003上,要使用.NET编写代码,需要安装.NETSDK,除非使用内置了.NETFramework1.0和1.1的WindowsServer2003。

除非要使用文本编辑器或其他第三方开发环境来编写C#代码,否则一般使用VisualStudio.NET2003。

运行托管代码不需要安装完整的SDK,但需要.NET运行库。

需要把.NET运行库分布到还没有安装它的客户机上。

.NET的语言无关性还有一些实际的限制。

特别是中间语言在设计时就打算实现某些特殊的编程方法,这表示.NET语言必须与编程方法兼容,Microsoft为IL选择的特定道路是传统的面向对象的编程,带有类的单一继承性。

除了传统的面向对象编程外,中间语言还引入了接口的概念,它们显示了在带有COM的Windows下的第一个实现方式。

.NET接口与COM接口不同,它们不需要支持任何COM基础结构,例如,它们不是派生自IUnknown,也没有对应的GUID。

但它们与COM接口共享下述理念:

提供一个契约,实现给定接口的类必须提供该接口指定的方法和属性的实现方式。

前面介绍了使用.NET意味着要编译为中间语言,即需要使用传统的面向对象的方法来编程。

但这并不能提供语言的互操作性。

毕竟,C++和Java都使用相同的面向对象的范型,但它们仍不是可交互操作的语言。

下面需要详细探讨一下语言互操作性的概念。

首先,需要确定一下语言互操作性的含义。

毕竟,COM允许以不同语言编写的组件一起工作,即可以调用彼此的方法。

这就足够了吗?

COM是一个二进制标准,允许组件实例化其他组件,调用它们的方法或属性,而无需考虑编写相关组件的语言。

但为了实现这个功能,每个对象都必须通过COM运行库来实例化,通过接口来访问。

根据关系组件的线程模型,不同线程上内存空间和运行组件之间要编组数据,这还可能造成很大的性能损失。

在极端情况下,组件驻留在可执行文件中,而不是DLL文件中,还必须创建单独的过程来运行它们。

重要的是组件要能与其他组件通信,但仅通过COM运行库进行通信。

无论COM是用于允许使用不同语言的组件直接彼此通信,或者创建彼此的实例,系统都把COM作为中间件来处理。

不仅如此,COM结构还不允许利用继承实现,即它丧失了面向对象编程的许多优势。

与其他编程语言一样,中间语言提供了许多预定义的基本数据类型。

它的一个特性是值类型和引用类型有明显的区别。

对于值类型,变量直接保存其数据,而对于引用类型,变量仅保存地址,对应的数据可以在该地址中找到。

在C++中,引用类型类似于通过指针来访问变量,而在VisualBasic中,与引用类型最相似的是对象,VB6总是通过引用来访问对象。

中间语言也有数据存储的规范:

引用类型的实例总是存储在一个名为托管堆的内存区域中,值类型一般存储在堆栈中(但如果值类型在引用类型中声明为字段,它们就内联存储在堆中)。

 

.NETAndC#Introduction

Inordertounderstandthesignificanceof.NET,itisusefultoremindourselvesofthenatureofmanyoftheWindowstechnologiesthathaveappearedinthepasttenyearsorso.Althoughtheymaylookquitedifferentonthesurface,alloftheWindowsoperatingsystemsfromWindows3.1(introducedin1992)throughWindowsServer2003havethesamefamiliarWindowsAPIattheircore.Aswe’veprogressedthroughnewversionsofWindows,hugenumbersofnewfunctionshavebeenaddedtotheAPI,butthishasbeenaprocessofevolvingandextendingtheAPIratherthanreplacingit.

WhilebackwardcompatibilityhasbeenacrucialfeatureofWindowstechnologiesandoneofthestrengthsoftheWindowsplatform,itdoeshaveabigdisadvantage.Everytimesometechnologyevolvesandaddsnewfeatures,itendsupabitmorecomplicatedthanitwasbefore.

Itwasclearthatsomethinghadtochange.Microsoftcouldn’tgoonforeverextendingthesamedevelop-menttoolsandlanguages,alwaysmakingthemmoreandmorecomplexinordertosatisfytheconflict-ingdemandsofkeepingupwiththenewesthardwareandmaintainingbackwardcompatibilitywithwhatwasaroundwhenWindowsfirstbecamepopularintheearly1990s.Therecomesapointwhereyouhavetostartwithacleanslateifyouwantasimpleyetsophisticatedsetoflanguages,environ-ments,anddevelopertools,whichmakeiteasyfordeveloperstowritestate-of-the-artsoftware.

ThisfreshstartiswhatC#and.NETareallabout.Roughlyspeaking,.NETisanewframework—anewAPI—forprogrammingontheWindowsplatform.Alongwiththe.NETFramework,C#isanewlan-guagethathasbeendesignedfromscratchtoworkwith.NET,aswellastotakeadvantageofalltheprogressindeveloperenvironmentsandinourunderstandingofobject-orientedprogrammingprinci-plesthathavetakenplaceoverthepast20years.

Beforewecontinue,weshouldmakeitclearthatbackwardcompatibilityhasnotbeenlostinthepro-cess.Existingprogramswillcontinuetowork,and.NETwasdesignedwiththeabilitytoworkwithexistingsoftware.CommunicationbetweensoftwarecomponentsonWindowspresentlyalmostentirelytakesplaceusingCOM.Takingaccountofthis,.NETdoeshavetheabilitytoprovidewrappersaroundexistingCOMcomponentssothat.NETcomponentscantalktothem.

Itistruethatyoudon’tneedtolearnC#inordertowritecodefor.NET.MicrosofthasextendedC++,providedanothernewlanguagecalledJ#,andmadesubstantialchangestoVisualBasictoturnitintothemorepowerfullanguageVisualBasic.NET,inordertoallowcodewrittenineitheroftheselan-guagestotargetthe.NETenvironment.Theseotherlanguages,however,arehamperedbythelegacyofhavingevolvedovertheyearsratherthanhavingbeenwrittenfromthestartwithtoday’stechnologyinmind.

Whenusingthe.NETFramework1.0andVisualStudio.NET2002,tobeabletobuildmobileapplica-tionsyouhadtogooutanddownloadtheMicrosoftMobileInternetToolkit(MMIT).Now,withthe.NETFramework1.1andVisualStudio.NET2003,thisisbuiltrightinandthereforenoseparatedown-loadisrequired.

ThisisallquiteevidentwhenyoucreateanewprojectusingVisualStudio.NET2003.Forinstance,whenyoulookatthelistofavailableC#projecttypesyoucancreate,youwillfindASP.NETMobileWebApplicationandSmartDeviceApplication.YouwouldusetheASP.NETMobileWebApplicationprojecttypetobuildWeb-basedmobileapplications(asthenamedescribes).BuildingaSmartDeviceApplicationallowsyoutocreateapplicationsforthePocketPCoranyotherWindowsCEdevice.Thethick-clientapplicationsbuiltforaWindowsCEdeviceutilizetheCompactFramework,atrimmed-downversionofthe.NETFramework.

Openingoneofthesemobileprojecttypes,youwillthenbepresentedwithalistofavailablemobileserverco

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1