28年过去了,世界上最流行的语言之一Visual Basic终于要衰落了吗?



作者 | Matthew MacDonald

译者 | 谭开朗,责编 | 郭芮

出品 | CSDN(ID:CSDNnews)

以下为译文:

我要坦白一件事:在我成为一名使用C#、Java、以及JavaScript等现代编程语言的受人尊敬的开发者之前,我曾是大受欢迎又有些不合时宜的Visual
Basic的忠实粉丝。

 

坦白说来,我对Visual
Basic的痴迷是这样开始的:在我的孩童时期,我就学会了使用BASIC语言编程。我是从Microsoft那个古董级的DOS操作系统上,通过极具创新性的QuickBASIC环境开始的。直至今日,我仍记得在樱桃蓝的背景下用白色文本来编写代码的场景。

 



 


在1988年,QuickBASIC是一种不可思议的编程语言。你可以编写不带笨拙行号的代码,在键入代码时能实时捕获语法错误,并支持直接从开发环境中启动程序,而无需通过命令行的方式来启动。当你完成代码编写后,你还可以通过这些软盘把程序分享给好友:

 



 


现如今,QuickBASIC仅仅是对遥远过去探索的另一种存在。真的是这样吗?一个名为QB64的创新项目创造了现代的QuickBASIC的复刻版。它无需模拟器就可以在Windows、MacOS和Linux系统上运行。当你用QB64运行一个程序时,它有一个很巧妙的方法——先将BASIC代码编译成C++再进行下一步编译。

 

 



经典VB和可视化时代

 

 


对于传统基于文本的计算机系统来说,QuickBASIC是一项令人难忘的壮举。但当Microsoft发布Windows,将PC用户引领到一个由按键和点击组成的图形世界时,游戏规则发生了改变。在Microsoft发布Window
3.0——真正成功的第一版本——与此同时,他们也发布了Visual Basic 1.0。

 


这是个全新的事物。你可以通过在窗口界面绘制按钮来为程序创建按钮,就像某种艺术画布一样。要让按钮执行某些操作,你要做的就是在设计环境中进行编码,然后双击这个按钮即可。你没有使用复杂的C++代码,也没有使用成堆的类、复杂的内存管理以及没有对晦涩难懂的Windows
API的调用。与之相反的,你就像是一个文明人,编写了一目了然的VB代码。

 



 


所有的这些图形化固然极具吸引力,但VB成功的真正秘诀在于它的实用性。开发人员找不到像VB这样能绘制出一个完整的用户界面并实现快速编码的工具。尽管历史学家们喜欢高谈阔论Visual
Basic的可视化,但它的“招牌”能力却与图形化无关。相反,VB因一个传奇的特性“编辑并继续”而出名,它支持开发人员运行程序、发现并解决问题以及继续使用最新代码。这与众所周知的、几乎所有的其他编程环境截然不同,这些环境需要开发人员重新编译,并在每次更改后重新开始。

 

Visual Basic蓬勃发展了近十年。从一开始的适用于初学者的开发环境,后来发展成给程序员使用的专业工具。随着VB 6的发布(这是经典Visual
Basic的最后一个版本),据估计,用VB编写的代码量是C++的十倍。Visual Basic通过ASP(Active Server
Pages,动态服务器页面)进入公司的办公室甚至连到网络,这是另一种非常流行的技术。现在,你可以创建与VB组件交互的Web网页,称之为数据库,并可以动态编写HTML。

 

所有的这些几乎都是在没有结构的基础上发生的,除非你自己创建一个结构。这是Visual Basic的一个不成文主题,它让你此刻自由,但往后你可能会后悔的。

 

 



经典VB的问题

 

 

VB在很多领域里声名狼藉。

 


对于面向对象,VB不支持继承。这是一个令人匪夷所思的争议,因为对于初级开发者来说,使用继承常常是搬起石头砸自己的脚,而这正是VB所不需要的功能。实际上,经典VB并非完全不支持面向对象。在完成其生命周期时,它已经支持众多的接口、多态性和类库,所有这些都是从COM借鉴来的,COM是组件技术的核心,它在Windows的任一版本中都是必不可少的。

 


经典VB的真正问题在于它太过成功。它极为有效地降低了初级程序员的学习难度,使得几乎所有人都可以通过VB来进行编程。粗心大意的新手、一成不变的公司职员和暑期学生都纷纷加入进来,解决了在其他任何平台上更为困难的问题,到处都是机械式的代码。

 

换言之,即使你不是一名训练有素的程序员也可以轻易上手VB,因为VB太好用了,所以都是新手在用。而VB也从来没有采取措施来鼓励程序员纠正不良的开发习惯。

 

 



VB.Fred与.Net解决方案

 

 

我们快进到2002年,此时的Microsoft正在做它最擅长的事——颠覆自己的开发生态系统,引入全新的工作模式。

 

这一次,这个项目是对COM的大规模重构,而组件技术是支撑Windows(间接的经典VB)的基础。对于一家已经下过几次赌注的软件巨头来说,这是孤注一掷的时刻。

 



 

Microsoft之所以将重新启动命名为.NET是因为一些不确定因素,其中包括互联网技术仍然是令人耳目一新的,以及.NET包含了
Microsoft一心要推广的Web服务功能。它深受Java的影响,并且包含了许多用于与数据库通信、构建网站、编写多线程程序、通过套接字建立连接的工具——而这些几乎是所有业务开发人员能想象到的用例。

 

唯一的问题是,为了获得这些新特性,Microsoft不得不放弃几乎所有的经典VB。

 



 


如果你仔细观察的话,就会发觉新版本的VB.NET看起来还是老样子,但它还是有许多大大小小的突破性变化。从大的方面来说:旧的VB程序受困于老旧的编程世界中,而一个极其糟糕的迁移向导几乎不能改变这一点。从小的方面来说:经典VB的程序员必须改变他们计算数组元素的方式。他们再也不能像常规那样从1开始计数,现在他们必须从0开始,就像正规的程序员一样。

 

还有一个大的方面:“编辑并继续”的特性已不复存在。

 

开发人员喜欢吐槽已不是新鲜事了,而VB开发人员尤甚。不久后,一群有影响力的VB开发人员将Microsoft的新编程环境命名为
VB.Fred,并强调无论它是什么,这种新语言都不是Visual Basic。

 

 



是什么宣判了Visual Basic的命运?

 

 

你可能会认为,是.NET的变化打破了VB的基础,并让VB不可避免地走向衰落。但事实并非如此。

 


事实上,尽管VB.NET朝着一个新的方向发展并作出了一些突破性的改变,这使得优秀的经典VB代码成为无人能识的代码,但它却变得非常受欢迎。那是因为VB.NET提供了VB开发人员以前从未有过的东西——尊重。

 


在.NET世界中,VB和C#处于平等的地位。每一行VB代码都可以转换成等效的C#代码行,反之亦然。两种语言都具有相同的功能,使用相同的组件,并编译为完全相同的形式(称其为中间语言)。VB终于摆脱了“丑小鸭综合症”。

 

但是,作为另一种受人尊敬的编程语言也存在一个问题。人们对VB的热情消失了,它不再是大家的首选语言了。这不是因为VB变了,而是因为C#变了。

正如VB获得了与C#相同的功能一样,C#也与Visual
Basic一样易于上手。例如,.NET的类型安全和内存管理功能意味着C#开发人员永远无须担心内存泄漏问题,这和VB开发人员一样。

 


换句话说,C#现在有了保护业余爱好者、学生和初级程序员的“护栏”,而又不放弃它的功能。突然之间,VB不再是什么特别的稀罕物了,它只不过是程序员工具包中的又一个工具罢了。

 

小白Python的学习规划,我只做了5件事!

https://edu.csdn.net/topic/python115?utm_source=csdn_bw
<https://edu.csdn.net/topic/python115?utm_source=csdn_bw>



Visual Basic 当前的现状

 

 

如今,Visual Basic正处于一个尴尬的境地。在专业开发人员中,几乎没有人使用Visual
Basic,它甚至都没有出现在专业开发人员调查中的清单,也没有出现在GitHub存储库中。然而,Visual
Basic仍然存在,它将Office的宏连接在一起,给旧的Access数据库和古老的ASP网页提供支持,并吸引着.NET新手。“TIOBE
索引”试图通过查看搜索引擎的结果来衡量语言的流行程度,发现VB仍然排在最受关注的五大编程语言之列。

 

但这种势头似乎已经发生了最后一次转变。2017 年,Microsoft宣布,它将开始为C#添加新的语言功能,而这些功能可能永远不会出现在Visual
Basic中。这一变化并没有使VB回到丑小鸭状态,但它确实消除了VB的一些.NET状态。

 


事实上,将VB边缘化的趋势已经沿存多年了。专业的开发人员都知道.NET的关键部分是用C#编写的,他们知道C#是演示文稿、书籍、课程和开发者研讨会的首选语言。如果你想使用VB,它并不会影响你构建的应用程序,但它可能会妨碍你和其他开发人员进行交流。

 

Visual
Basic本应在教育市场有一个天然的契合点。但即便如此,它仍然是个“败家子”,像C#和Python这样的现代语言已经足够简单、安全,完全可以作为他们的第一门语言来学习。如果你需要教给小孩更简单的东西,市场上到处都是像Scratch等图形化的编程工具。像C#、C、JavaScript这样的大括号编程语言也有另一种吸引力,因为它们之间存在着相通的语法。因此,学过一种编程语言的人很快就能熟练掌握另一种语言。

 


随着Web开发的发展,Microsoft正眼睁睁地看着机会流失。这样的VB版本:和VB6一样容易使用,可以编译成JavaScript并与HTML表单进行设计器配对,谁能不被它所吸引呢?是的,它并不是构建下一个Google
Maps的最适合工具,但它可以重新唤起Visual
Basic的吸引力,让商业开发人员、学生和爱好者创建简单的在线应用程序,而不必像JavaScript那样笨拙。相反,Microsoft创造了一个基于VB的产品,叫做LightSwitch,但它随着Silverlight浏览器插件的消失而消失。如果Microsoft开发出另一款面向大众的编码产品,它更有可能是一种低代码模板驱动的工具,比如PowerApps。

 

Visual Basic以前也不是没受到过威胁,但这一次感觉不一样了。作为世界上曾经最流行的编程语言之一,Visual
Basic似乎终于要落幕了。即使这是真的,Visual
Basic在近几十年内也不会消失。相反,它将会成为另一种遗留产品,一个被忽视的没有激情也没有未来的工具。不管我们失去了什么特别的事物——或者最终就像帮一条苟延残喘的老狗摆脱痛苦一样——这一切都由你来决定。

 


原文:https://medium.com/young-coder/the-rise-and-fall-of-visual-basic-f422252349a6

作者:Matthew MacDonald,技术作家、教师、程序员。著有几十本图书,现在从事编程和科学教育。

本文为 CSDN 翻译,转载请注明来源出处。



 热 文 推 荐 


<http://mp.weixin.qq.com/s?__biz=MjM5MjAwODM4MA==&mid=2650723456&idx=1&sn=f21e22e044acd9df1357ef63dc009a66&chksm=bea6a55389d12c45d2ef844a846d232f587feba86b9aac4d036c14657a98ea844a2df4f71dce&scene=21#wechat_redirect>
苹果或推中国特色版 iPhone;小米回应萌拍抄袭苹果事件;微软停止审核发布 Windows Phone 8.x | 极客头条
<http://mp.weixin.qq.com/s?__biz=MjM5MjAwODM4MA==&mid=2650723543&idx=1&sn=2dd9cdeba42a3eb829b9afb28f27cc13&chksm=bea6a50489d12c123abbf01c70dbf725f134ff9d176f23bd8ba3413c487772b0bc52324b8def&scene=21#wechat_redirect>


<http://mp.weixin.qq.com/s?__biz=MjM5MjAwODM4MA==&mid=2650723456&idx=1&sn=f21e22e044acd9df1357ef63dc009a66&chksm=bea6a55389d12c45d2ef844a846d232f587feba86b9aac4d036c14657a98ea844a2df4f71dce&scene=21#wechat_redirect>
如何向父母解释什么是爬虫?
<http://mp.weixin.qq.com/s?__biz=MjM5MjAwODM4MA==&mid=2650723543&idx=2&sn=8c21031fc40062fcd585642cc9e38399&chksm=bea6a50489d12c12de4262e70aaa0b13647eb695560506074464ce729f7b255f92eb42036308&scene=21#wechat_redirect>


<http://mp.weixin.qq.com/s?__biz=MjM5MjAwODM4MA==&mid=2650723456&idx=1&sn=f21e22e044acd9df1357ef63dc009a66&chksm=bea6a55389d12c45d2ef844a846d232f587feba86b9aac4d036c14657a98ea844a2df4f71dce&scene=21#wechat_redirect>
滴滴章文嵩:不仅软件开源,还向学界开放数据 <https://blog.csdn.net/csdnnews/article/details/94366740>


<http://mp.weixin.qq.com/s?__biz=MjM5MjAwODM4MA==&mid=2650723456&idx=1&sn=f21e22e044acd9df1357ef63dc009a66&chksm=bea6a55389d12c45d2ef844a846d232f587feba86b9aac4d036c14657a98ea844a2df4f71dce&scene=21#wechat_redirect>
小米崔宝秋:小米 AIoT 深度拥抱开源
<http://mp.weixin.qq.com/s?__biz=MjM5MjAwODM4MA==&mid=2650723493&idx=1&sn=8dfd22984eba81d56eb8efeff2d1b6b8&chksm=bea6a57689d12c60fcd215aac7b37d2520ac954e241037ef045b316075a8f329bd856c973761&scene=21#wechat_redirect>

☞独家 | Vitalik Buterin:以太坊2.0之跨分片交易
<http://mp.weixin.qq.com/s?__biz=MzU2MTE1NDk2Mg==&mid=2247496281&idx=1&sn=ef4f801e9422462ea945947dc2ecb206&chksm=fc7faca4cb0825b2b345f38f9c37820762a5e7ea1c0d0fff848bbdac8d170f8c473f3cacef6b&scene=21#wechat_redirect>

☞如何在标准的机器学习流程上玩出新花样?
<http://mp.weixin.qq.com/s?__biz=MzI0ODcxODk5OA==&mid=2247506213&idx=1&sn=cc1f3b45dff9a03b3820eb898f5e58b9&chksm=e99eeadcdee963ca70a01bb3eb54121228999b973461301017b085fd0541d240c98ceeb7c2c5&scene=21#wechat_redirect>

☞面试官:你简历中写用过docker,能说说容器和镜像的区别吗?
<http://mp.weixin.qq.com/s?__biz=MzA3MjY1MTQwNQ==&mid=2649828664&idx=1&sn=dcb4a4235dbce17ddf1c93cfdc007038&chksm=871e8adab06903cc57f09676a6564730e93576f17686b06370c9b2d861a3465157a2f1f5554b&scene=21#wechat_redirect>

☞C++、Python、Rust、Scala构建编译器的差异性究竟有多大?
<http://mp.weixin.qq.com/s?__biz=MzU5MjEwMTE2OQ==&mid=2247487025&idx=1&sn=0d781e95d16ad79c51d6c8264df88e6b&chksm=fe25a46fc9522d7941d4cdfd7bcb47940ff77ae93f7aa2049151b79dc876db31aee33f82d60b&scene=21#wechat_redirect>

☞马云曾经偶像,终于把阿里留下的1400亿败光了!
<http://mp.weixin.qq.com/s?__biz=MzA5MjcxNjc2Ng==&mid=2650560337&idx=1&sn=437c83704bbdb18d3a522aadd606e981&chksm=88601ce0bf1795f6d519b968f9448d34d7b5a7fc48e09aabcb32e079d9bda4413936a605b4eb&scene=21#wechat_redirect>

点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

你点的每个“在看”,我都认真当成了喜欢

友情链接
ioDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信