C#是一种新的语言?或者仅仅只是J…… (1)
【北京航空航天大学计算机系 曹伟】去年夏天,微软公司宣布了一种称为.Net的新的分布式应用体系结构,这引起了媒体的极大注意。与这种.Net体系结构相配合的新的开发语言称之为C#。本文将首先探讨一下一门新计算机语言的产生动机,并由此推断一下C#语言的产生。然后讨论一下C#与Java语言之间几个基本的区别。
C#(发音“C Sharp”)是由微软公司研究人员Anders Hejlsberg最新研究开发的一种计算机语言。它看起来与Java语言非常相似:包括了单重继承、接口,以及几乎一致的语法、编译成中间格式等众多特点。C#与Java的区别在于其借鉴了Delphi的设计特点,直接整合了COM(组件对象模块),而COM在微软的.Net视窗网络体系结构中扮演着重要角色。
走近C#
从以往的开发经验中可以知道,如果要开发一门新的计算机语言,就要解决那些用C或C++语言开发时常遇到的传统问题,如内存泄漏、多线程应用程序写入困难、静态链接、非法指针调用、很复杂的多重继承规则等等。为了减少语言学习过程中的弯路,就要使设计出的语言看起来与C和C++尽量相似。六年前,Sun Microsystems公司开发了与平台无关的Java语言,它增加了垃圾回收、整合了线程间的互锁、动态链接等概念,同时抛开了指针概念,只允许单继承,但又引入了接口的概念等。
2000年6月,微软公司向外界宣布了C#语言,它是专门被设计用来为微软新生的.Net应用开发体系结构服务的。除了C#语言之外,天才人物Hejlsberg在Borland公司时还开发了Turbo Pascal和Delphi语言,在微软公司时还开发了Visual J++语言。C#和Java语言解决了C和C++语言中存在的许多相同的问题。由于C#看起来与Java很相似,有时容易混淆它们。
那么为何要开发C#语言呢?C#是否仅仅相当于Visual J--,这意味着它只是一门没有贴Sun公司标识和商标,但带着一些新特点的Java语言;或者C#是一门提供给Windows开发者来实现Java功能,以直接与Sun公司Java语言竞争的语言?
由于在语法、设计,甚至运行的处理上C#与Java语言如此类似,就很容易对C#产生怀疑:由于微软公司一直没有撼动Java语言的市场地位,于是就通过起一个新名称和采用微软公司推广其产品家族的惯用方式,简单地编制了一个Java的复本。但实际情况并非如此,因为在COM和.Net支持的背景下,C#是很可能在以Windows操作系统为背景的的开发领域内占有一席之地的。
开发一门新计算机语言的动机
计算机技术上的创新经常会改变人们关于编程和系统开发的基本设想,新的计算机语言也会伴随着这些新思想出现。一门新的计算机语言往往是被当做一些类似研究新的系统体系结构、编程语义学上新概念的研究项目的一部分来开发的,或者是集合其它几门语言的优点而开发出的一门更强大的语言。特殊的应用有时也要求有新的语言,某一种语言的要求经常与它们应用的领域密切联系,因此经常需要功能强大的计算机语言来解决现有的语言缺点,或者是满足一些商业需要。
C#语言是用来解决微软公司近来所面临一些技术和商业问题而开发的。既管在简化性上已经做了几次尝试,但COM对象编程体系结构却并不是很容易就能使用,并且分布式组件对象模块(DCOM)增加了另外层次上的难题,因此,COM的开发仅限于那些经过高级培训过的Windows C/C++编程者、熟悉COM接口听VB使用者。而C及C++语言则专门要求能有效和安全地使用许多技术,VB又不是完全面向对象的,这些无疑就形成了许多束缚。
当Java语言从1995年出现时,人们开始谈论一个与操作系统底层应用不相关的世界。Java看上去与C和C++很相像,可以使程序员很快熟悉它。Java也在操作系统这一层次上提供了平台间的可移植性,以及解决了许多限制C和C++程序员效率的问题。
↓相关文章:
- · C#是一种新的语言?或者仅仅只是J…… (2)
- · 用C#开发第一个WINDOWS应用程序(C#学习笔记之一)
- · Microsoft.Net综述(1)
- · Microsoft.Net综述(3)
- · 用VB.Net编织未来
- · 了解Java,便了解了微软.NET
- · iNET:Microsoft.NET的Java实现 (2)
- · 在C#中使用ADO.Net部件来访问Access数据库
- · 控制VC++.NET中WEB对话框的HTML元素属性(2)
- · "谁持彩练当空舞"-- 看Java、C#大比拚(3)
- · 用C#制作的.NET开发工具
- · 开放源码阵营加入Microsoft.NET利大于弊
- · 挑战开发技术, 注册VS.NET, 获得滑板车
- · XML、Web服务和.NET框架 (2)
- · .NET对软件安装的冲击
- · Microsoft .NET完全介绍(上)
- · Microsoft .NET完全介绍(下)
- · 在Visual C#中访问不同数据库(1)
- · 在Visual C#中访问不同数据库(3)
- · 实例介绍C# GUI开发(1)
- · C#算法(二)插入排序
- · C#算法(四)快速排序
- · 详解.NET的RAD功能
- · 用Visual C#做DLL文件(1)
- · 实现带有用户身份验证的文件传输Web Service(1)
- · 实现带有用户身份验证的文件传输Web Service(3)
- · 如何调试你的C#程序(2)
- · 在.NET(正式版)环境下读写系统日志
- · C#的多线程机制初探
- · C#的多线程机制初探(3)
- · C#的多线程机制初探(5)
- · C#的多线程机制初探(6)
- · C#锐利体验(3.1)
- · C#锐利体验(4.1)
- · C#锐利体验(1.1)
- · C#锐利体验(2.1)
- · C#锐利体验(5.1)
- · 用C#电子邮件验证的类
- · Visual Studio.Net 内幕(1)
- · Visual Studio.Net 内幕(3)
- · Visual Studio.Net 内幕(5)
- · Visual Studio.Net 内幕(7)
- · Visual Studio.Net 内幕(9)
- · 使用C#开发一个简单的P2P应用(2)
- · 使用C#轻松编写.Net组件(2)

