一、编程语言之只可意会不可言传的关系

一、编程语言之只可意会不可言传的关系

汇编:精准游刃有余!
打开网易新闻 查看精彩图片
汇编:精准游刃有余!
C:基座的意思,就是自个儿敲啊!
打开网易新闻 查看精彩图片
C:基座的意思,就是自个儿敲啊!
JAVA:拿起来就是突突突!
打开网易新闻 查看精彩图片
JAVA:拿起来就是突突突!
C#:突突突,也有高科技!
打开网易新闻 查看精彩图片
C#:突突突,也有高科技!
PHP:不接受反驳!
打开网易新闻 查看精彩图片
PHP:不接受反驳!
Python:高达就问你怕不怕!
打开网易新闻 查看精彩图片
Python:高达就问你怕不怕!
C++:别忘了我哦,虽然上手慢,但屌啊
打开网易新闻 查看精彩图片
C++:别忘了我哦,虽然上手慢,但屌啊

上述图示了一部分常见语言的之间关系,看上去很形象生动,却又没有揭示编程语言的内在联系。任何事物发展,都有一个过程,或从小到大,或从简单到复杂,或从无人问津到妇孺皆知...

编程语言,其实也一样,它们的内在联系,就是计算机的发展之路。这和战斗飞机的发展,颇为相似。战斗机按发展先后和技术水平,常常用几代几代来进行区分和联系。那么,编程语言,其实也可以从这个角度来看。

二、编程语言持续发展的代际关系

二、编程语言持续发展的代际关系

一代机,能飞能投,强过投石器和气球
打开网易新闻 查看精彩图片
一代机,能飞能投,强过投石器和气球

遥想当年的巨型电子管计算机,一个足球队为之服务,不过好在线接好后,纸带(机器码)卷喂给机器后,就能自动工作。与计算尺,草稿纸手工计算相比,已经是自动化的一小步,人类的一大步了。

打开网易新闻 查看精彩图片

就像一战和二战早期的战斗机一样,作用不大,却开了空战先河。为后续编码进步,奠定了发展方向。

随着集成电路等硬件的发展,电子计算机开始摆脱笨重的躯壳,开始在各个空域里展现出潜力。打孔纸带制作的复杂性,使用上的单一性,逐渐成为让人难以忍受的缺点。于是,在机器的帮助下,助记汇编开始取代机器码,首次让机器逻辑得以抽象。

由于汇编码基本上可以等同机器码,仅有少量抽象层,主要目的是让人从Bit走向Byte,因此可以将其视为第1.1代。

随着战事需要,自动化武器披挂上阵
打开网易新闻 查看精彩图片
随着战事需要,自动化武器披挂上阵

随着软件工程的发展,编码效率低下的助记汇编,越来越难以满足编码界日益增长的考核需求,人们亟需一款高效的自动化武器。

这一时期,出现了COBOL、FORTRAN、ALGOL、PL/I、CPL、BASIC等诸多工具,可谓编程界的春秋战国之百花争鸣的时代。这些语言,更多地针对特定机型,但相对汇编还是提升了不少抽象,尤其是为操作系统的独立贡献了智慧,因此可以视为第1.5代。

二战后期,已具有现代化的痕迹了
打开网易新闻 查看精彩图片
二战后期,已具有现代化的痕迹了

随着通用计算机的普及,尤其是PC,也极大地催化了语言的竞争。最终,C因为与汇编指令之间有着清晰而确定的映射关系,开始在系统编程领域胜出,而逐渐演变为基座型语言。因此,C属于变革质变语言,属于二代,实至名归。

二代语言的典型特征便是,面向机器算法(数学),它们仍然深陷代码的汪洋大海,而无暇顾及需求的快速增长,这便是面向过程,被人诟病的根本原因。

面向对象犹如喷气引擎,逐渐成为标配
打开网易新闻 查看精彩图片
面向对象犹如喷气引擎,逐渐成为标配

C以后,便是各类高级开发语言前浪与后浪的时代。就像二战后,喷气机开始统治天空一样,无论是站刀剑的战斗机,还是大后方平和的客机,喷气发动机代表一切。面向对象,更容易拟合现实世界,成为第三代语言的标配。

随着互联网的星火燎原,移动互联网以摧枯拉朽之势,成功地将人类黑科技的牵绳,攥在了自己手中。单机编程逐渐被打入冷宫,取而代之的是面向企业的网络应用。自此,分化出前端与后台。前端负责作秀,后台负责搬砖,彼此相安无事。

但,好景不长,后台搬砖累,便开始思考一劳永逸,跨平台语言悄然兴起。前端作为结果的最终呈现,当然是结果大于一切。待前端火并之后,当然不能再任由人叫自己花瓶,于是全栈开始崛起。

如果,同一个市场,大家开始相互中伤,恰恰说明这个市场已经无法大规模增长,卷将不可避免。各大山头的教徒们(各大语言的使用者)一方面对语言孰优孰劣津津乐道,另一方面却又普遍承认整个行业太卷。

IT行业从当年趋之若鹜的香饽饽,到现在福报的重灾区,可谓让人唏嘘不已。当卷这个词,常挂从业者嘴边时,很多人企图通过有优越感的工具来作为最后的救命稻草,其实是很可笑的。

卷的本质,是同质化。IT行业,虽然给投资人的PPT上,可以天马行空地画饼,但明白人其实应该看到,半导体工业,已经很多年没有重大理论突破了。此起彼伏的吆喝声,无非就是变换戏法,来换包装罢了。

在编程领域的卷,更是典型。因为,无论是初代的机器码纸带卷,还是助记汇编。无论被人称为基座的C,还是以其他语言为原材料的Python,他们都是在所谓的屎山上,渐行渐远,无非就是上下和先来后到而已。

三、VB/VBA算那根葱?

三、VB/VBA算那根葱?

如果硬说VB/VBA与BASIC有关系,其实是有点扯的。VB4之后,VB就已经脱胎换骨,成为骑在C++身上的童子。早前便有程序员抱怨,微软就是想让C++程序员给VB服务。当然,这是个笑话。

不过,VB/VBA作为COM的外壳语言,作为PC上的模范调包侠,的确是占尽了便宜。如果说C++搞COM,过程一定是晦涩而艰深的,那么VB/VBA大概率就是无知无畏的谈情说爱。是不需要细究,只管跟着感觉上的童话故事。

从应用学来说,老少皆宜的VB/VBA做到了高级,划分到三代四代的范围里,毫不为过。但从工程学来说,很多人认为它同时又阉割了高级,成为一个自由度极小的玩具语言,只能在脚本一类的地方,找个地方安歇。

如果,我们把关注的焦点放到“C语言是什么语言写的,系统又是什么系统开发的”上来,很快就会发现,编程语言其实可以在一定基础的抽象上,通过自举来实现进化。当很多人看到官方不再更新VB6的IDE时,不再为VBA更新新特性时,他们最终的定论是,这玩意儿完蛋了。

要我说,C都能自举,为毛VB/VBA不可以自举?特性的落后,意味着VB/VBA睡了太长时间,不知当今魏晋。但这并不意味着,VB/VBA无法从历史中汲取养分。从这一点来看,VB/VBA与C颇有几分相似。

综上,VB/VBA划入2.5代,是比较恰当的。要自动有自动,要手动有手动。要大哥有大哥,要系统有系统,谁说不能屎上雕花?

欢迎关注BtOfficer,系列深度内容,尽在各大专栏,不扯淡,不划水!

打开网易新闻 查看精彩图片