很多人想知道微软为何重视 C#而轻视 VB.NET,为何 VB.NET 开发者和 C#开发者同工不同酬,VB.NET 开发者的未来在哪里。.NET 管理语言组的项目经理 Lisa Feigenbaum 在播客上向VB.NET 社区保证——VB 的未来依旧是光明灿烂的。
Lisa 解释了为何大家对 VB.NET 和 C#有不同的理解:首先这是由微软的策略所决定的。微软可不仅仅想在 CLR 上面运行两套语法完全不同的语言,公司希望这两种语言能够各司其职,因此在.NET 的世界中,这两种语言的发展路线是截然不同的。微软发布的大多数文档都包含了丰富的 C#示例,与此相反,VB.NET 的示例数量就大打折扣了,因此大家都觉得 VB.NET 并不受宠,有些穷途末路了。
根据 Lisa 所述,一开始微软想在这两种语言中分别加入不同的特性以便让他们各取所长,但 VB.NET 用户一次又一次地要求微软向 VB.NET 中加入 C#特性,同时 C#用户也想在 C#中加入 VB.NET 特性,这么做的直接后果就是微软决定同步发展这两种语言。同时 VB.NET 开发者的数量要比 C#开发者多一些,因此微软并不会扼杀 VB.NET,这也不是公司的意愿。当 18 个月前 VB.NET 与 C#设计团队合并在一起以共同推进语言的发展时,微软的这项承诺也终于付诸实践了。
C#的首席架构师 Anders Hejlsberg 检视了这两个语言的发展历程得出这样一个结论:两种语言都在不断发展。每当 Anders 决定两种语言要实现的某个新特性后,VB.NET 与 C#开发团队就分别钻进了各自的房间讨论如何根据相应语言的语法和整体设计原则来实现这个新特性。这么做会导致两种后果:其一,两种语言增加同样的特性集,其二,每种语言都保持自己的个性而不管另一种语言到底是怎么做的。这就确保了 VB.NET 并不会被 C#所蚕食。这两种语言的同化性越来越明显了。到目前为止,C#能做而 VB.NET 不能做的东西就剩下 XNA 游戏了,因为 VB.NET 没有对应的项目模板。然而微软希望填平语言间的鸿沟,因此这两种语言最终将走向大同世界。
我们将在下个版本的 Visual Studio 中看到两个语言设计小组合并后的努力成果。VS 最初是用 C 和 C++ 开发的,但 VS 2010 的编辑器和编译器将包含更多的托管代码,力度也是史上最强的,这意味着将使用更多的 C#和 VB.NET 代码。VS 和 Office 并不会一夜间都变成托管代码,因为还有不少遗留代码尚存,但新写的大部分都是托管代码。
一些调查机构表示 VB.NET 与 C#开发者同工不同酬,前者薪酬要比后者少 10-15%,我们认为这是由于大家对 VB.NET 的认识偏差造成的,这种观念已经根深蒂固了,因此还需加以时日才能让大家看到这两种语言其实是一样的,他们都是微软的亲生骨肉。
以下精彩点评来自 InfoQ 英文站
1. Michael Hedgpeth 说到:我有个朋友过去从事 VB 开发,现在转到了 C#上。他跟我说:你知道 VB 和 C#程序员的价码差多少吗?整整 $10,000 大洋。我认为只要这种情况一直持续下去,没人不去选择 C#。这不光是语言问题,而是钱啊。
2. Al Tenhundfeld 说到:我知道不同的语言有不同的特性,不仅是框架本身,对社区来说这也是好事。然而还有其他一些因素值得我们深思。两种语言对工具和 RAD 的支持力度一样么?微软真的做到不偏不倚了么?举个例子吧,两种语言都有同样的 GUI 向导么,两种语言对 SharePoint 开发的支持一样么,凡此种种。当然,我并不是强调哪种语言适合做上面这些事,我仅仅想说语言特性只是成功语言的一部分,而不是全部,尤其在微软的世界里更是如此。
我由衷希望这两种语言能够长久共存,他们分别适合不同的开发者。VB.NET 适合于从 VB6 和 MS Office 编程,如 Access 或 Excel 中的 VBA 脚本编程转过来的人。C#适合于从 Java 阵营转过来的人,同样也适合于那些没有学过.NET 而了解其他语言的人。我自己就是从 VB 转到了.NET 阵营的,但从 2.0 开始,特别是 3.5,我发现 C#的表述性更强,语法更加整洁。与此相比,VB.NET 就有些相形见绌了。
查看英文原文: Is There a Future for VB.NET?
评论