我们总是使用在特定场景中使用的语言.对于快速原型开发,VB6是一个明显的选择.在具有简单桌面用户界面以及标准和非复杂数据库交互要求的项目中选择了VB6.如果您想使用低级例程开发设备驱动程序,则可能依赖于C或Visual C++.ASP是Web界面开发的标准选择.每种语言都有一个特定的"域名"或"专业化",粗略地说.
使用.NET框架,所有语言都可以互操作,并且可能是一致的.你可以拥有一个包含不同语言模块的项目,但最终都得到了相似的处理(所有这些都被编译为IL).
这是否意味着我们之前的区别不再存在?这种区别并不一定是坏事,而是设计上存在的东西,而不是由于任何约束.显然,.NET框架及其对各种语言的处理有所减弱.
区别仍然存在.例如,VB.NET目前支持IDispatch后期绑定的方式比C#更好(不包括C#4.0),VB.NET的XML文字与代码内联,这使得它与其他.NET语言相比,成为操作XML的便捷工具.即使使用C++/CLI变体,C++也往往不太适合.NET,但它非常适合本地编程(一如既往)以及在托管代码和非托管代码之间提供互操作层.
每种语言的语法都有细微差别,可以更容易地表达某些概念.即使它们都归结为IL,它们也都没有什么不同,当时它们都归结为装配.您选择的语言最适合您尝试执行的任务,无论其编译的平台如何.
语言的区别仍然存在.无论是将语言编译为汇编代码还是MSIL,它都没有什么区别,除了可能MSIL的抽象级别高于汇编的抽象级别.
尽管如此,.Net的一大优势在于,您可以在由用语言3编写的应用程序链接的语言2中编写的库中使用语言1的目标代码.
很久以前,在有电和自动移动设备之前,你不能简单地在Pascal或Delphi应用程序中使用C生成的.obj文件(反之亦然),而无需将它们明确地包装在DLL中(并处理调用)方法和参数序列和参数兼容性),或调用另一个可执行文件.