VS.Net支持多语言,但是这个世界真的做好准备迎接Visual Basic .Net的到来了吗?
C#很明显是整个.Net产品中的明星,而Visual Basic.Net则是它的伙伴。VB.Net只有很少的部分被遮掩起来,这让人很容易的看出一个简单的事实:VB.Net和C#是如此的相像,这非常令人惊奇,为什么微软公司会不厌其烦将它们设计成为两个分开的语言呢?真的,VB.Net语法保留了冗长的特点,而C#则更接近于C语言-但是这两种语言都访问相同的程序架构,它们编译出的MSIL程序代码也几乎完全相同。
说VB.Net类似于先前版本的Visual Basic,只能说这还是停留在非常表面层次上的了解。关于VB.Net,微软公司正在试图把Visual Basic定位为一种可行的企业应用软件开发语言,并且加入了一些重要的功能如inheritance, namespaces, multi-threading功能等等,并保留了一些简单语法的外表。
图二
语言:这个看起来像不像Visual Basic?.Net版本的Visual Basic现在是一款面向对象的编程语言,但是它只是在表面上与以前的版本比较相似。
至今为止,虽然微软公司还不能隐瞒从一个脚本语言转换为一个真正的面向对象的语言的困难,但是真正的问题却在于:成百万的使用Visual Basic 6.0的软件开发者们会不会因为他们两者句法的类似而决定使用VB.Net呢?事实上,大多数使用Visual Basic 6.0的软件开发者们会发现转向功能更加强大的C#并不会比转向VB.Net更加困难或者更加容易一些,或者说,转向Java也是一样(见"微软的Java过敏症")。
VS.Net里不仅仅只有C#以及VB.Net,而且还有Visual C++ .Net 以及 Visual J#(事实上,Visual J#是以类似预览的形式发布的,因为Visual J#要在今年晚些时候才会被发布)。所有的VS.Net语言都被编译成MSIL程序代码,有二十种其他的现行的编程语言拥有MSIL编译器,这其中包括有COBOL, Perl,以及Python。但是为了给与C#最强大的功能,微软公司明确了C#是被选择出来的开发Microsoft .Net的编程语言。
C#以及VB.Net两者都保护程序开发者们远离处理大量的代码的工作。这意味着程序编码的过程是在一种run-time的环境中进行的,就像一个沙漏(sandbox)。在这个环境中调用下层操作系统以及存储器地址到一个应用编程接口API-并且因此而变得"安全"-把C++的一些最为强大和困难的特性隐藏了起来。在紧急关头,专业C#程序开发者能够将那些"不安全"的代码段标注出来,并且能够直接访问存储器以及下层操作系统库,增加了代码保护管理的功能。总之,Java并不提供这一功能(当然,VB.Net提供。)。
C#目的是提供一种编制企业应用软件的合适语言,而且也用和Visual Basic一样简单的语法。反对者说C#只不过是一种Java的廉价品,但是还需要证明:这两种语言都声称C语言是它们的父母,并且都运行在经过处理的run-time环境中,这就说明了它们绝大多数的类似之处,包括语法,碎片收集,以及分级的namespaces。(C#也保留了C++的enums,但是Java却没有。)C#与Java更为像相之处是在其组件的处理上,如道具,方法,事件,以及属性。
但是关于"Java有这些,而C#有那些"的争论却忽略了事情真正的重点。如果一个编程语言提供面向目标的方式,一个有用的语法,和足够的功能,那它的价值在很大程度上则是由它在结构框架中提供的服务所决定的,而不是由它们在语法上的微小差别决定的。毕竟,C#只有六十条声明,但是却可以调用数千的.Net结构层。而且由于.Net 和J2EE都是被设计成制作企业级别的应用软件,没有人会惊奇它们之间的相似之处,从一个沙盒(sandbox)直到运行程序代码,访问数据库的标准方法,以及创制互动的Web网页。当Java vs. C#或者J2EE vs. .Net的时候,它们之间更多的是相像而不是区别。