作者 | 屠敏
出品 | CSDN(ID:CSDNnews)
近日,微软宣布将在即将推出的 .NET 5 中支持 Visual Basic,并扩大该编程语言支持的应用程序类型,以此帮助 VB 开发者迁移其代码,但这也意味着微软“不打算将 Visual Basic 作为一种语言独立继续研发”。
Visual Basic 老矣,尚能饭否?
回看 Visual Basic,在不知不觉中它已陪伴初代的开发者们走过了 29 年的时光。1991 年 4 月,微软首次带来了 Visual Basic 1.0 Windows 版本,在业界引发很多关注,虽然如今看来 VB 1.0 的功能很薄弱,但是在彼时的环境中,它是第一个“可视”的编程软件。也正是基于这一点,很多人都开始在 VB 平台上尝鲜,由此,Visual Basic 这门语言也成为了面向对象程序员的最爱。
不过,快速发展没几年,该语言的分叉路口在 1998 年微软推出 Visual Basic 6 这一版本后开始出现。
随着 .NET 的兴起,微软将 .NET Framework 引入,并在下一版本中将其命名为 Visual Basic .NET,以便在 .NET 平台上运行。然而这一举动导致了 VB 开发者分批站队:一批选择使用 .NET 版本;一些坚持使用老版 VB,如 VB 6。然而在新版的 Visual Basic .NET 中使用了新的核心和特性,导致不少 VB 程序员都要改写程序,由此两者之间产生了分歧。而这一混乱一直持续到了 2005 年微软宣布将不再对非 .NET 版本的 VB 进行支持才结束。
此后,在 Visual Basic .NET 和同样由微软推出且具有几乎相同功能集的 C# 相互竞争的时代中,不少 VB 用户放弃了越来越复杂而强大的 .NET 版本,选择了 C#。不过,如今从各大编程语言排行榜,譬如编程语言社区 TIOBE 最新的 3 月榜单中,C# 热度一直稳居 Top 5,Visual Basic .NET 也一直保持在 Top 10 中,相较而言,Visual Basic .NET 在一些工具的研发场景中依然很常见。
微软:不打算将 Visual Studio 作为一种语言来发展
为何曾经也算得上编程语言巨头的 Visual Basic 会沦落至此?
对此,微软表示,扩大项目类型以促进向新框架的迁移是遵循客户反馈最终统一出来的方案。基于这一点,.NET 团队也在 3 月 11 日特定发布了一篇《为 .NET 5.0 计划提供 Visual Basic 支持》的博客进行了详尽的说明与回应,「我们听到了您的反馈,即您希望在 .NET Core 上使用 Visual Basic」。
据博文透露,从 .NET 5 开始,VB 将支持类库、控制台、Windows 窗体、WPF、Worker Service 和 http://ASP.NET Core Web API,为现有的客户提供了一条将其应用程度迁移到 .NET Core 的不错路径。与此同时,Visual Basic 用户也能够利用新的平台功能,如并行部署、跨平台支持、性能和新的 API 改进。
.NET 团队也表示,使用 Visual Basic 的主要优点之一是该语言已经成熟发展了不少时间。”展望未来,我们不打算将 Visual Studio 作为一种语言来发展,”.NET团队说。”这支持了语言稳定性,并维护 Visual Basic 的 .NET Core 和 .NET 框架版本的兼容性。Visual Basic 可能不支持需要更改语言的 .NET Core 的新功能。由于平台的差异,.NET Framework 上的 Visual Basic 和 .NET Core 之间会有一些差异。
除此之外,微软还指出,VB 应用迁移到 .NET Core 并不一定是所有开发人员的计划,因为它适用于仅 Windows .NET 框架,只要 Windows 是支持,.NET Framework 就会一直受支持,因为它是 OS 附带的。不过,如果应用程序使用的是 .NET Core 不支持的技术(例如 WebForms,Workflow 或 WCF),建议保留在 .NET Framework 上,因为移植将需要进行一些工作才能迁移到较新的技术。
我们该放弃 http://VB.NET 并转向 C# 吗?
针对微软的这一举措,不少网友纷纷表示在是不是应该放弃 http://VB.NET,而选择 C#,毕竟现在微软的开发文档基本上只提供 C#,而没有 VB 示例了。但 .NET 团队认为并非如此,并表示“Visual Basic 是一种很棒的语言,是一种高效的开发环境。Visual Basic 的未来将包括 .NET Framework 和 .NET Core,并将致力于稳定性,上面列出的应用程序类型以及 Visual Basic 的 .NET Core 和 .NET Framework 版本之间的兼容性。”