Visual Basic 被群众的呼声所挽救
| 2015-05-09 14:58
当.NET刚刚发布时,Visual Basic与C#在社区中的基础是平起平坐的。但经过了多年的发展之后,微软正在逐渐地走向淘汰VB的方向。在2008年左右,VB的未来首次遭受了质疑,而当时的结果是微软承诺了C#与VB的同步发展。
但随着Windows Phone 7的推出,人们也开始怀疑这个承诺的有效性,因为它直到2010年9月才开始支持VB。而之后,微软在他们的专业开发者认证项目中悄悄地取消了VB,使得质疑声再度出现。
最近,社区发现在即将到来的ASP.NET 5中居然不打算支持VB,这无疑是一次侮辱。这一决定不仅违背了两门语言共同发展的承诺,而且还是在完全没有任何公开宣布的情况下做出的。去年12月,有人专门因为不支持Visual Basic这一事实提交了一个bug。
自那时起,Visual Basic的用户们终于觉醒了。虽然在博客社区中并没有召集到很大数量的代表人数,但他们还是通过正式渠道劝说微软在ASP.NET MVC中为VB提供完整的支持。Jeffrey T. Fritz这样写道:
从一次公开谈论ASP.NET 5的时候,我们就表示它是对于ASP.NET框架的一次主要升级,Roslyn的使用与跨平台的理念贯彻其中。实现这一点有很长的路要走,我们专注于首先在C#上实现完整的支持。自从我们首次公布这一项目之后的几个月以来,我们听取了各位的意见,了解了你们对Visual Basic的热爱,也知道你们希望在ASP.NET 5中看到对它的支持。
今天,我们很高兴地宣布ASP.NET 5将完整地支持Visual Basic(包括工具与运行时两方面,甚至还包括跨平台的运行时支持)。一如以往的是,我们将继续保持ASP.NET 5开发的公开性,你可以在GitHub的项目http://github.com/aspnet/home中跟踪我们的进展,或是贡献你的力量。
许多开发者对此发出疑问,现在还有什么新的工作会选择使用Visual Basic吗?Michel Posseth在回答中说道:
我在单位里平均一个月之内至少要完成两个(使用VB开发的)项目!:-)
在我的单位中,所有的开发工作都是在VB.Net 2013 旗舰版中完成的,使用的框架版本是4.5.2。而且我们还用到了WPF、MVVM(使用一种最纯净的方式),我们也会使用Entity Framework 6.x,而且我们也会使用MVC和Razor,甚至在开发应用时也使用VB。没错,所有的一切都是用VB.NET开发的,并且我们将option explicit , option strict和option infer这些选项全部都打开了!
[……]
还请大家注意,作为VBDotNetCoder的管理人和创始人,我能够看到VB.NET如今正在不断壮大发展!尤其是在南美、希腊、西班牙与意大利等地……是的,我认为VB.NET有希望在今后几年内迎头赶上 :-),人们会认识到,对于业务的开发来说,它是一个更好的快速应用开发环境与调试环境。
在可见性方面,pcnerd有这样一个理论,
我认为真正的问题在于VB.NET通常是用于企业内部开发的,不允许将反馈发送回微软。同时也很少用于新项目,多数只是添加新功能。我目前所参与的项目代码是在.NET 2.0出现之前设计的,即使它现在运行在.NET 4.5上,也能够感觉到它的陈旧感。另一方面,在上一个项目中,我一开始甚至没办法在Visual Studio中打开这个VB项目。我不得不转而寻找某些通用的方案,将其修改为VB。你可能会说我们的技术不够前沿,但我使用的技术包括Web Api、Razor和Angular,用基于OWIN的Katana进行托管,甚至在安全性方面使用了Web Tokens。想象一下,它全部是用VB和JavaScript完成的!
尽管微软已经作出了声明,但某些开发者的感觉依然很不好。Chris Owens写道:
听说VB.NET在ASP.NET 5中能够得到与C#平等的地位,这是一件好事。但令人伤心的是,许多来自微软的C#粉丝的心态有问题,比方说Stephan Walther曾有一番刻薄的言论,他说现在最多只有两个人还在用VB.NET进行ASP.NET MVC的开发,他们也应当停手了。同样令人难过的是为什么对VB的支持会成为一种疑问,在企业中还有数以千计的开发者在使用VB.NET,而微软在事后才想到他们。我们也必须等到新版本完整发布之后才能够使用它。
如果能够使用VB.NET尝试一些预发布的东西就好了,因为我至少有95%以上的时间都是在用它进行MVC等项目的开发……而现在,我只能落后于其他人,等待在正式发布时支持VB.NET了。不过我依然确信C#的粉丝会确保所有的示例都只有C#版本,与往常一样,并且继续编织着VB.NET已经无人使用的童话。微软一方面在继续支持VB.NET,一方面又假设已经没人用它了,这种行为让我感觉很痛苦。