走近C#
日期: 2001年04月23日
在CNET News.com对微软公司最杰出的软件设计师 Hejlsberg的采访过程中,双方就C#的起源、Web服务的未来等问题进行了探讨。
当微软公司需要一项新技术来确保在软件业的统治地位时,它需要Anders Hejlsberg的帮助。
对于成千上万的使用Borland Turbo Pascal和 Delphi进行编程的软件开发者来说,Anders Hejlsberg,这位40岁的软件大师让他们肃然起敬,是他创制了上述两个备受欢迎的软件开发工具。
现在微软公司希望通过它最新的产品-C#软件开发语言-来赢得软件开发者的拥戴,在微软公司把视窗操作系统和软件向网络迁移的新市场战略中,C#语言是最重要的环节。
经过几年时间的埋头苦干,C#已成为微软公司反击Java语言的最有力武器。六年前,微软公司的老对手Sun公司推出了Java语言,并获得了Oracle和IBM公司的全力支持。
目前各大软件公司都争先恐后地把各自的应用程序移植为面向手持设备和个人电脑的互联网服务,因此微软公司希望软件公司会采用C#语言来编写各自的基于Web的软件和服务。同样,微软公司也希望商家能采用.Net家族的电子商务软件来运行Web服务。是的,微软公司希望用C#来打倒Java。
但就目前来说,C#还处于劣势,毕竟Java已经历了6年的风风雨雨,而C#还处于孕育时期。C#的正式版本最早也要等到年底才能投放市场。
市场分析人员认为微软公司希望利用C#来阻止原来的C++开发人员投向Java阵营。举例来说,C#摹仿了Java提供的多种特性,包括“碎片回收机制”(garbage collection)、可以利用多种类型的语言进行开发的“通用引擎”等等。
在CNET News.com对 Hejlsberg的采访过程中,双方就C#的起源、Web服务的未来等问题进行了探讨。Hejlsberg也就C#相对于Java的优点做了特别的说明。
问:创造C#的原因是什么?它是C++语言的升级吗,是否可以说C#是用来对抗Java的武器?
答:C#是立足于以往的基础上进行开发的,应该说它混合了以往开发语言的精华,但C#不会是终结其它开发语言的终极语言。这是个进化的世界,C#只是面向市场的需求应运而生的。
在C#语言的几个设计目标中,确保编程人员的高效生产率是最重要的一点。我们在设计C#的时候,就从大家熟悉的C++开始并对该语言进行了简化。我们希望把C++具备的强大和灵活、VB具备的简单易用同时赋予C#语言。C++确实需要升级了,但我们力求在增加更多的新特性-比如“碎片收集机制”-的同时,尽可能少地对它进行更动。
问:那么C#主要面向哪些开发人员?C++、Java还是Visual Basic?
答:C#语言传承自C和C++,它和Java一样,属于同一个语言体系。因此C#主要面向C和C++开发人员。
问:在与Java的竞争中,你认为C#将会表现出色吗?
答:你需要注意到,Java的推出领先于.Net平台整整五年的时间。而我们的.Net正式产品还没有投放市场。本公司也不会依靠现有的测试版C#进行市场竞争。但本公司认为C#测试版的表现符合预期水准。
问:说服开发人员弃Java而用C#的理由会有哪些?
答:当谈到Java,大多数人是在谈开发语言,但Java有时也被当作系统运行平台。本公司的C#就是纯粹的开发语言,而.Net可以说是它的运行平台。
我可以说C#与C++靠的更近。Java传承自C++,但当你观察它的模块,就会发现有些东西被省略了。而C#则保留了更多C++的特性。
C#语言首次引进了部件导向特性、方法以及事件。例如当你点击鼠标,就可以声明一个称为“点击”事件。而同样在Java语言中,开发人员就不得不进行特性和事件的模拟。尽管通过一个称为“Java Bean”的部件模块,开发人员也可以做同样的事,但这要比在C#开发环境中困难的多。
此外互用性也是C#的重要特性之一。Java一向以平台无关性作为卖点,但我们认为对已有的软件代码做出支持才是最重要的。C#可以提供出色的代码互用能力(例如已有的C++代码),且不需要开发者增加兼容性代码。
此外,Java和C#之间还有一点明显不同之处。当两三年前微软公司着手C#的开发,就注意到了如何让C#更适应新生的互联网应用世界的需求,而Java是在后来才补充了Web服务。
问:每个大软件厂商都在提出自己的Web服务版本。比如用户可以通过手机来进行互动商务活动,但这些许诺大都是空头支票,你认为何时互联网服务才会真正的蓬勃发展起来?
答:首先我认为,技术的发展是逐步渐进的。今天人们使用互联网,很大程度上是一种人对于机器的互动。开始人们会在门户网站中使用Email和日程安排,但逐渐地会在网络上获得更多的应用服务,相信再发展下去,人们日常需要的服务将会集成到智能设备和个人电脑中。这种进步会是自然而然的。
目前我们不得不等待宽带网络的到来,我们还需要无线设备具有更大的数据吞吐量。技术发展的方方面面将会是一个齐头并进的局面