当前位置:K88软件开发文章中心编程语言.NET.NET01 → 文章内容

C#,自然的进步

减小字体 增大字体 作者:佚名  来源:翔宇亭IT乐园  发布时间:2018-12-31 11:55:20

:2011-04-17 17:44:57

随着 Visual J++ 的隐退,Microsoft 引入C# 来填补这一空白

Michael L. Perry            Mallard 软件设计师       2000 年 8 月

Microsoft 对因特网的新视野与当今在线内容的网络相去甚远。Microsoft 预见未来的因特网是一个由不同的人用不同的语言在不同的硬件平台上开发出的互相关联的服务,可以被运行在不同的因特网操作系统之上。

该公司为大胆设想的这个新世界所提供的就是 .Net 平台。实际上,.Net 并不是传统意义上的平台;它并不是一种公共的硬件或软件系统。.Net 实际上是一个协议集合,它允许因特网应用程序利用运行在不同机器上的不同服务。

Microsoft 新战略的结果就是下一代的 Microsoft Visual Studio 将有重新设计的语言,尤其是能支持 .Net 平台。Java 将不再此程序包中,Visual J++ 也不会再有新的版本。不要担心,Microsoft 将推出一个新的语言 C# 来填补这一空白。该公司动用了其最好的资源,包括星级语言专家 Anders Hejlsberg,来开发 C#。

非他莫属:Anders Hejlsberg,语言体系结构设计师

考虑一下 Hejlsberg 的经历,就不会奇怪 Microsoft 将此重任交给他了。毕竟,C# 将不是他对软件开发方式的首次大事改革。

作为 Borland 的首席体系结构设计师,Hejlsberg 秘密地将 Turbo Pascal 变成一种面向对象的、拥有真正可视化的环境和卓越的数据库访问特性的应用程序开发语言。曾经被吹捧为“VB 杀手”的 Delphi 依然是 Borland(现在为 Inprise/Borland)的拳头产品。

Microsoft 用丰厚的薪水、股票认购权和巨额的加盟奖金雇请了 Hejlsberg 之后,Borland 曾提出通过不正当手段吸收新成员的控告。Borland 还曾声称 — 提供了很少的细节来支持指控 — Hejlsberg 正在开发“Delphi for Java”。这场诉讼最终以 Borland 的胜利而收场;但是从那时起,Microsoft 已在让 Hejlsberg 工作了。

Hejlsberg 充实了 Microsoft 的 Java 产品;其中格外引人注意的是,为了跟上其他 Visual Studio 语言的现行版本号,他人为地在一个发行版中将其版本号从 1.1 提升到 6.0。实际上,这个版本号的跳跃并未夸大 6.0 与其前一版本之间的差别。Hejlsberg 添加的功能已使该语言变成一种强大的 Windows 应用程序开发平台。添加的功能包括对 Windows API 的访问;因此,利用这些新功能的程序不再具有可移植性。

Hejlsberg 对 Microsoft 的 Java 产品的更改促使 Sun 控告 Microsoft 违反了 Java 许可协议。Sun 声称,Visual J++ 语言扩展没有保持 Java 的平台中立性,而是将开发人员锁定在 Microsoft 平台上。尽管 Microsoft 的 Visual J++ 事实上是最好的 Java 编译器,并且该公司的虚拟器(执行 Java 字节码的运行期模块)是最快的一种虚拟机,但 Sun 的诉讼已有效地阻止了 Microsoft 在 Java 舞台中的竞争。

Microsoft 的反应是完全从 Java 中退出来,并用一种新的基础因特网平台 — .Net — 和一种新的旗帜语言 — C# 来取代它。Anders Hejlsberg 是完成后一工作的自然选择。

证明一种新编程语言的合理性

最近有关 C# 争论 的一些新闻声称开发人员还不会收受另一种编程语言。虽然现在确实已经有几种有用的语言可供开发人员使用,但仍有空间容纳另一种语言 — 假如它填补了仍未满足的需要。一种新的语言毕竟只是专业人员可用来创建软件解决方案的另一种工具。让我们分析一下 Microsoft 为 C# 制定的目标,以及其他语言到目前为止还没有满足这些目标的情况。

快速应用程序开发:Microsoft 为 C# 制定的最重要的目标之一就是支持 RAD。因特网应用程序必须以因特网节奏开发;一种新语言必须易于学习和调试,而且必须生成易于更新的代码。虽然 Delphi 和 VB 在这些方面很出色,但 C++ 却没有这么成功。语言本身复杂而难以掌握,而且很少有有用的 C++ 库提供简单的接口。此外,C++ 的手动内存管理和复杂的类型转换模型使它难以调试。

此外,正如我们将在下面看到的那样,C++ 本质上不防止由于版本不兼容而导致的潜在问题。尽管 Microsoft 和 Borland 对这种语言作了巨大的努力,但 C++ 仍然不适合快速应用程序开发。

跨平台部署:根据定义,因特网语言应该支持跨平台的部署。因为因特网是不同系统的一个网络,所以必须将服务部署到各式各样的硬件和软件上。 此外,客户端软件应该能够运行在多种类型的设备上,包括 PDA 和蜂窝式便携无线电话。 这种灵活性事实上是对除 Java 之外的所有语言的一种挑战。VB 尤其只能生成在基于 Intel 微处理器的机器上运行的 Windows 应用程序。Delphi 也受到同样的限制。Delphi for Linux 不久就会发布,但它也不支持因特网设备。VB 和 Delphi 都不符合跨平台部署的目标。

访问平台固有的资源:据 Microsoft 称,开发人员需要访问平台固有的资源。对于编写强大的目标应用程序而言,这种访问有时是必不可少的。Visual J++ 6.0 允许开发人员访问 Windows API,Java 通常不允许这种访问。Java 通过定义每种虚拟机实现的最小公分母标准来提供跨平台的部署。Java 开发人员依据这种削弱的标准编写代码,而不能利用只有某些平台才提供的更强大的服务。这样,Java 无法满足提供对平台固有资源的访问这一目标。

支持 COM 和 .Net 平台:Microsoft 已将支持 COM 和 .Net 平台确定为 C# 的最重要的目标。当然,目前还没有一种语言支持 .Net 平台,因为它仍在构建中。与 .Net 不同,COM 已出现相当一段时间了,但它仍然缺少强大的语言支持。大多数语言,包括 C++ 和 Delphi,都要求开发人员为他们所创建的每个 COM 对象创建一个额外的 IDL 声明、一个类工厂和专用的修饰。

某些语言厂商已提供了一些向导来自动完成许多常见的 COM 和 OLE 任务,但这些工具没有完全隐藏 COM 的复杂性。VB 确实成功隐藏了 COM 的复杂性,但这是以牺牲功能为代价换来的。VB 不仅缺乏面向对象语言的力量;它也无法支持 COM 的低级功能 — 例如,多个接口、聚集和自定义编排。简而言之,没有一种现有的语言像 C# 那样全面支持 COM。

虽然这四个目标对于一种新语言是相当高的,但 Hejlsberg 在工作中已拿出自己最好的经验来确保 C# 实现这些目标。结果是产生了一种语言,这种语言从 Java 和 D

[1] [2] [3]  下一页


C#,自然的进步