.NET 语言范式






2.44/5 (26投票s)
2003年7月10日
6分钟阅读

229375
.NET 开发者面临着选择适合 .NET Framework 的语言这一艰巨且有时令人不知所措的任务。本文将尝试阐明 .NET 语言范式。
引言
有时编程语言就像宗教。开发者对其选择的语言如此狂热,以至于对其他语言视而不见。
在 .NET 中,所有语言选择现在都只是表面上的,这是最重要的理解点。毕竟,CLR(通用语言运行时/托管运行时)在 IL(中间语言——避免使用 MSIL,因为 IL 现在已标准化)上运行,所有支持 .NET 的语言都会编译成 IL。因此,无论您选择哪种支持 .NET 的语言,在功能和(在有经验的开发者手中)性能方面都没有区别。
众多选择
为了以 .NET 平台为目标并利用托管运行时的功能,我们开发者有相当多的选择——事实上(在撰写本文时)总共有二十二种。Microsoft Visual Studio .NET 支持最流行的四种:C#、VB.NET、C++ 和 J#,其他供应商也推出了自己的实现。
我们作为开发者所做的语言选择或多或少取决于两个因素。
1. 开发者的编程背景。
对于任何开发者来说,其编程背景都是选择新语言最重要的因素。开发者倾向于转向类似的语言——或者至少是看起来相似的语言——以便从过去的投资中获益,并最大限度地缩短学习曲线。
因此,如果您来自 C、C++ 或 Java 背景,现代 OOP 语言 C# 将是最明显的演变方向;而对于有 Visual Basic 背景或没有任何编程经验的开发者来说,VB.NET 及其所有新功能将是一个有吸引力的选择。
2. 特定语言的市场。
这听起来可能与许多人的想法有些出入,但特定语言的市场对于一些开发者在选择语言这一艰巨任务中也起着作用。
举个例子。我来自
有趣的误区和概念
此外,我将解释流行的 .NET 语言之间的区别,并揭示一些关于它们的流行误区。
如前所述,C# 和 VB.NET 等语言之间唯一剩下的区别是语法上的;它们仅取决于语言的语法和结构。请记住,每种语言都有其自身的表面优缺点。C# 可能对委托有更好的支持,而 VB.NET 对事件处理有更好的支持,列表还在不断增长,但我最好在此打住,因为这更适合以后发布或文章。
现在触及一些敏感问题,许多开发者认为 VB.NET 比 C# 慢。这并不完全正确。我看到 VB.NET 比 C# 慢的地方仅限于开发者使用旧式函数,如 Len 和 Mid,而不是调用 .NET Framework 库类中可用的相应方法,并且如 Heath Stewart(见下文帖子)所提到的,使用旧语法,如 FunctionName = ReturnValue。积极的一面是,值得注意的是,VB.NET 运行时本身就是用 VB.NET 编写的。
另一个误区是 C++ 比 C# 优越。可能是这样,但就 .NET 而言,事实恰恰相反。对于托管运行时,C# 比 C++ 更好,因为它更整洁,并且——请记住,这是唯一为 .NET 平台构建的语言,而且大多数 .NET Framework 类都是用 C# 编写的。几乎所有其他语言都只是得到了增强,以便移植到 .NET 平台。我绝无意贬低 C++。我认为它是最有能力和最灵活的语言之一。仅分享其重要性,CLR 就是用 C++ 编写的。
不要忽视语言交互
CLR 提供了完整且易于实现的语言交互,这基本上意味着您可以使用两种不同的编程语言编写同一个解决方案。
我认为这种轻松切换编程语言的能力以及丰富的语言交互是 CLR 的一项了不起的功能。不幸的是,我也认为开发者常常会忽略这个功能,而专注于他们选择的编程语言。总的来说,C# 和 Visual Basic 等编程语言是执行 I/O 操作的出色语言。APL 是执行高级工程或金融计算的绝佳语言。通过 CLR,开发者可以用 C# 编写应用程序的 I/O 部分,然后用 APL 编写工程计算部分。CLR 提供了前所未有的语言集成水平,确实使得混合语言编程在许多开发项目中值得考虑。
新语言会来来去去
所有开发者都会肯定一件事。编程语言有固定的保质期。它们出现,它们征服,然后随着时间的推移而过时,被(更)现代的语言所取代。在我自己的开发生涯中,我学习了八种语言,其中大多数现在已经过时了。
.NET 可能不会完全改变这一点,但它的价值在于它是语言独立的,并且很快也会是平台独立的。我认为未来开发者需要学习的东西会更少,只需适应不断涌现的新语言,这些新语言有望在 .NET 平台上继续运行。没有人能确定未来,但这绝对是一种光明的可能性。
C#,一个选择问题
最后,在所有这些泛泛而谈之后,这里有几句话赞扬 C#。有些人可能会觉得我有点偏颇,但请包容我的观点。
回想起来,C# 是我 .NET 平台的首选语言。是什么让 C# 对我这样的(经验丰富的 C++ 和 VB 程序员)有吸引力?那就是微乎其微的学习曲线、现代的 OO 概念以及内置的更优编码功能。我怎么强调都不为过,C# 是从当今最流行的语言演变而来的杰作,它拥有(正如您可能所说)从 VB、C++ 和 Java 借来的所有最佳功能。
另一个值得注意的有趣点是,我们要感谢 Heath Stewart(见下文帖子),C# 对新手更好,因为它为更多语言(C/C++、PERL、Java 等)打开了大门,而且更容易阅读。
结论
我希望本文能总结出 .NET 开发者社区在各种论坛和电子邮件列表中普遍存在的“语言战争”。
这场小比较的寓意是,没有哪种语言是完美的,每种语言都适用于不同的场景和开发者的口味。.NET 平台为我们所做的是赋予我们选择的权利。
相关链接
以下是一些值得查看的链接
• .NET 语言列表: http://www.jasonbock.net/dotnetlanguages.html
• VB.NET 和 C# 之间的区别: http://www.4guysfromrolla.com/webtech/012702-1.shtml
• 其他 .NET 语言的漫游指南: http://builder.com.com/article.jhtml?id=u00220020630adm01.htm