文 | 脑极体

在广大程序员的天下里,流传着一个千古难题——什么才是最好的措辞

在这个“BCYY48”(编程措辞)天团里,C+、Java、Python、PHP……每个都有不少拥趸pick。
而曾经有“首富爸爸”和环球后援会撑腰的VisualBasic措辞,现在却处在一个非常尴尬的位置。

很少有开拓职员乐意承认,自己曾经是VisualBasic的虔诚粉丝,它被看做是玩具措辞,更适宜那些刚开始学习编程的人,更不可能涌如今“环球最大同性交友网站”Github上。

聊聊VB的兴衰史以及通俗人的编程手札

但其实在野外,很多专业运用程序都是用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大略易用的优点就不再是什么特殊的东西了。

(2018年美国热门编程措辞Top10)

以是,终极令VB走向末路的,还是开拓生态的萎缩。

VB曾经霸占了中学生信息技能教科书很多年,但越来越多的开拓者和高校,开始将入门课程改成了其他打算机措辞。
比如MIT和UC Berkeley的打算机系就将入门措辞改成了Python。
一些明星互联网公司Youtube、Instagram、Reddit等等,核心业务也都是基于Python开拓的。

示范效应之下,大量其他行业的人,自然也会选择用其他措辞进入编程天下。
比如我们能碰着会Python的年夜夫,学过Scratch的孩子,或者是在开拓社区轻松得到开源代码的新手开拓者。
虽然VB依然可以用来构建运用程序,但再磋商它,就会与其他开拓职员显得扞格难入。

繁荣了十几年之后,门庭冷落鞍马稀的VB,注定成为一个没有激情和未来的遗留产品。

未来的编程措辞会是什么样?

回顾打算机措辞的发展史会创造, 70年代打算机被用来处理不同类型的事务,于是涌现了许多各有特色的措辞,比如构造化的Pascal,结合了高等措辞与汇编措辞特点的C,做逻辑学研究的Prolog……

打算机性能的提升,互联网的兴起,又催生了PHP、Java、JavaScript、VB、Python、HTML等的涌现。
后来,更高打算量的元编程、异构编程也被支持了,C#、Swift等开始盛行。
到了人工智能时期,跨平台、全能但不专精、善于处理统计干系问题的Python又成了第一开拓措辞。

总体来看,一种编程措辞的走红,就像“流量偶像”也并不是各个业务能力都很强一样,侧重点各有不同,行业需求、学习曲线、运行本钱等多重成分决定了,程序猿们还要连续为谁站C位而掐到头秃。

当然,这对普通大众来说都不是事儿。
我们关注的,是主流编程措辞的更迭都带来了哪些影响?有几点是比较值得把稳的:

1.低门槛的生产工具。
过去,打算机教诲一贯强调的是“措辞一通百通”“主要的是思想”“优雅简洁的代码”等等,但随着编程措辞越来越大略易用,成为一种低门槛的生产工具已经是不可阻挡的潮流了。

在MOOC、Coursera、某某AI大学之类的培训网站上,遍布了用Python识别苹果的农人、用Python剖析蝴蝶种类的生物学家、演习神经网络的中学生……防止大众开拓者的加入而重蹈VB面条式代码的覆辙,可能须要现在就未雨绸缪。

2.图形化编程与代码编程的悖论。
图形化总是对新手最友好的入门办法,能极大地减轻代码所带来的挫败感。
笔者刚进入大学时,是从VB开始打仗了打算机编程措辞,而后过渡到了C等更加抽象的代码。
儿童编程也是如此,有调查显示,在利用Scratch(一种图形编程)几年后,学生们会更乐意去考试测验代码编程。

但是,大众眼中“真正的编程”——代码编程正在日益低龄化,从程序员圈子到高考内容再到幼儿园教材,Python已经切切实实地实现了从娃娃抓起。
对付这种填鸭式的盛行趋势,亚马逊AWS主任科学家李沐就曾调侃道:我家娃一岁就开始读paper,现在已经可以闇练敲键盘写mxnet代码。
一家keras4kindergartners的网站也在网站上打出了“如果你爱你的孩子,不要在他们没学会反向传播之前就把他们送进小学”的嘲讽广告。

数十年的发展已经证明了,我们最须要的编程措辞,始终是可以让人绝不费力地写出初版程序的措辞,而不是看起来有多么炫酷和特殊。

3.高并发改变了编程逻辑。
传统的编程思维,是在单个CPU上实行多个逻辑任务,如今的多核异构打算则是一个逻辑上的任务放在多个打算单元上进行。
而且,代码也变得越来越简洁,比如用C措辞须要1000行代码的程序,Python可能只须要20行就能完成,性能大大提升。
这一方面让开发者拥有了更高的自由度,开释自己的创造力;同时,也对理解任务逻辑、合理分解任务的能力提出了更高的哀求。

显然,这天下并不存在什么“完美”和不朽的编程措辞,如果非说有什么共性的话,那么只有“那些内核最小、最干净的编程措辞才会存在于进化的竹竿上。
”其他无论学什么都有可能像凤梨罐头一样过期。

现在回顾起来,VB的兴衰正折射着Web时期的余晖,也代表了打算机科学在编程领域上的进步。
当专业程序员手中的“屠龙宝刀”,普通人也可以“点击就送”,数字时期才算真正揭开帷幕。

更多精彩内容,关注钛媒体微旗子暗记(ID:taimeiti),或者下载钛媒体App