在广大程序员的世界里,流传着一个千古难题——什么才是最好的语言?
在这个“BCYY48”(编程语言)天团里,C+、Java、Python、PHP……每个都有不少拥趸pick。而曾经有“首富爸爸”和全球后援会撑腰的VisualBasic语言,现在却处在一个非常尴尬的位置。
很少有开发人员愿意承认,自己曾经是VisualBasic的忠实粉丝,它被看做是玩具语言,更适合那些刚开始学习编程的人,更不可能出现在“全球最大同*友网站”Github上。
但其实在野外,很多专业应用程序都是用Visual Basic编写的,它依然在为Access数据库和古老的ASP网页供电。比如可能是美国最大的医疗软件开发商Epic Systems 仍然大量使用 VB 6.0,很多学校也在坚持教授VB课程 。在一份TIOBE公布的2018年编程语言排行榜中,VB的流行指数高居TOP5。
当然,这份榜单之于VB,更像是一种“回光返照”。
尽管有不少程序猿“口嫌体正直”地眷恋着VB,但它其实已经回天乏术,根本不可能在强手如林的新时代里硬核起来。
原因很简单,学习编程已经和学习英语一样低龄化了,从幼儿园到大学培训班,首选总是Python这个距离人工智能最近的编程语言。失去了强大后援团的VB,“退团”几乎不可避免。
而站在计算机语言的发展历程上,回顾这位28岁、曾经是世界上最受欢迎的语言所走过的“花路”,也格外有意思。
VB与它开启的图形视觉时代
“VB”只是一个脍炙人口的昵称,实际上它名字叫Visual,本姓是“Basic”。
1964年,John Kemeny 和 Thomas Kurtz觉得编程太难了,需要回归本源,所以把自己设计的编程语言叫做BASIC,后来成为计算技术发展历史上应用得最为广泛的语言。而VB因为在气质上和BASIC很相似(都很简单易用),而被微软相中收养了它。1981年,微软 “亲*闺女”Windows3.0“出道”的同时,VB也一起露面了。
“Visual” 则恰如其分地反映了VB得天独厚的动手能力,那就是开发图形用户界面。开发人员通过在窗口绘制按钮来为程序创建按钮,就像是在画布上作画一样。要让一个按钮做一些事情,只需要在设计环境中双击它并编写一些代码就可以了。
听起来似乎没什么了不起?要理解VB的特别之处,恐怕还要从机器语言的发展说起。
我们都知道,计算机世界是由数字1和0组成的。CPU 只能执行二进制代码,无论是一部电影、一首歌曲还是一张图片,最终都是以 0/1 代码来存储的。但是,用0/1编写机器语言很麻烦,即使专业人士也不好理解。
所以,很快出现了汇编语言,将枯燥抽象的二进制数字指令转化成英文单词。
比如说,“add 1, 2;”,意思就是让计算机完成1 和 2 相加的动作。再通过专门的软件(编译器),就可以将这些英文单词转化成 0/1 代码并由计算机执行。一代开发人员的集体记忆,就是在蓝色的背景下敲打白色的代码。
这时候,编程依然是一个与普通人有着“次元壁”的异世界。
而友好的VB代码让编程游戏发*了变化,将开发这件事进化到了一个按钮和点击就能实现的“所见即所得”的图形世界。
当时,VB有多火呢?这么说吧,对“证多不压身”的大学*来说,计算机二级几乎人手一个,其中很多人都会选择VB,哪怕是毫无基础的文科*也能轻松理解并用它设计一些小玩意儿。
对于初学者来说,VB是一个非常友好的画面,随着能力不断提升,VB逐渐发展成了一个对严肃的程序员来说足够强大的工具。据统计,在VB中编写代码的次数比C++语言多十倍。VB通过另一种非常流行的技术ASP(ActiveServerPages)进入公司办公室甚至网络。
但是,随着互联网业务的发展,微软下定决心要推广Web服务功能,而这项功能受Java的影响比较大,所以微软不得不在VB十岁的时候,领回来了一个新的“养女”。VB的粉丝们“一朝回到解放前”,必须和那些官方专业程序员一样,从0开始编写代码。
2002年的时候,VB不得不主动“转型”,引入了新的核心.NET Framework,并更名为Visual Basic .NET。在.NET世界中,VB代码的每一行都可以转换为等效的C代码行,反之亦然。尽管做了如许改变,VB始终难逃过气的命运。
2008年4月,微软正式宣布停止对经典VB的支持。而国内,NOIP等信息奥赛在2005年就将BASIC语言移出可使用项,少有专业编程人员会把VB写进简历。浙江省信息技术课程改革方案中,则将信息技术教材编程语言从 VB更换为Python。
有人也许会问,VB到底做错了什么你要抛弃他?其实,这与诺基亚卖身微软的故事如出一辙——“我们并没有做错什么,但不知为什么,我们输了。”
VB衰落的三步曲
从 1951 年至今,人们一共发明了200多种编程语言,并且还在不断地革新。所以一门语言的兴替,也许并不是什么太重要的事情。不过其中也有着不少参考意义。
庞加莱曾说,如果我们想要预见数学的将来,适当的途径是研究这门科学的历史和现状。计算机语言亦然。
那么,与虎视眈眈的C/C++、Java、Python等相比,VB到底欠缺了什么呢?
首先,经典VB的真正问题是它太*了。
VB的学习曲线实在太平滑,即使不是一个训练有素的编码员,也可以无障碍上手。正是因因此,也吸引来了大量的业余编码者,粗心的新手、无聊的公司职员、暑期班学*等等,他们到处喷射面条式代码(spaghetti code),写出来的程序如同一碗意大利面一样扭曲和纠结,而VB并没有办法去改掉他们的坏习惯,只能眼看着开发*态越来越复杂和难以维护。
其次,其他语言也在进化。
严肃的开发者们都知道.NET的关键部分是用C语言编写的, C#等语言正在变得和VB一样足够简单和安全,并在演示、书籍、课程和开发人员研讨会上日益占据主流。市面上也挤满了针对幼儿和初学者的图形编程工具,比如scratch。
既然VB.net和C具有相同的功能,使用相同的组件,并编译成完全相同的形式,为什么不选择C呢?突然之间, VB简单易用的优点就不再是什么特别的东西了。
还没有评论,来说两句吧...