最近一两年,低代码和零代码的概念非常火,但是每个行业,每个不同职位的从业人员对低代码和零代码的认知,以及需求是不一样的,为了便于理解和具象化,下面从开发语言的演变来简单谈谈低代码和零代码。
从演进历史来分,开发语言分为三种:机器语言(二进制编码);汇编语言;高级语言。
从编程思想上来分,分为面向过程和面向对象的开发。
从变量类型确定的时机来分,又分为静态语言和动态语言。
如果从语言的种类上来分,那就更多了,比如汇编语言、Basic、C、C++、C#、Objective-C,Java、Go、Python、JavaScript、TypeScript、Lua、PHP、Ruby、Perl……
对任何一个智能设备,严格意义上来讲,设备的每一个操作的背后其实都对应着一个个指令,这也是最初面向过程开发思想的由来。任何一个工序都是由一个个执行过程组合而成,一个个环节逐一开发实现的过程,就是用面向过程思想编写代码的过程。
最开始就是所谓二进制编码的机器语言,是通过打孔机来进行编程的(如图1.1.1所示)。
● 图1.1.1 IBM029打孔机和打孔卡
可以想象,用此方式编程,效率是多么低下,所以汇编语言诞生了,可以用符号对应一个个二进制编码,开发效率得到了一定的提高。随着计算机设备性能越来越强,人们对代码执行效率的要求越来越低,反而对开发效率的要求越来越高,随后更容易理解和开发的高级语言出现了,比如C语言。C语言的执行效率大概相当于汇编语言的70%,但是在开发效率上,C语言至少高汇编语言一个数量级(如图1.1.2所示)。
● 图1.1.2 机器语言、汇编语言和高级语言的比较
随着业务逻辑越来越复杂,用面向过程思想开发的代码累积到一定程度,会变得异常难以管理,很容易出现BUG、内存泄漏或系统崩溃。面向对象的开发思想此时应运而生,提出了类的概念,有属性、有事件也有方法,在封装的基础上可以继承、支持多态。不再关注每个过程细节,每个类相对封闭,只需要了解对应的接口就可以了,不仅便于维护,还可以在其他人写的代码基础上进行快速开发。
从DOS时代的代码开发,过渡到Windows时代的代码开发,笔者认为这是一个划时代的改变,也是面向对象思想快速发展的一个时期。同时,也是笔者认为有着低代码思想的开发语言出现的时期,比如Visual Basic语言(如图1.1.3所示)、Visual C/C++等可视化开发语言的出现。
● 图1.1.3 Visual Basic语言开发环境
这种可视化程序开发,仅通过拖拽就可以完成绝大部分的界面开发工作,不需要用户写一行代码,就可以实现漂亮的Windows风格的窗体界面。也许大部分读者对此司空见惯,不以为然。但是对于经历过DOS时代的开发人员来说,感受还是非比寻常的。这里讲一个小插曲,笔者大学的毕业设计是用Borland C++语言在DOS平台上开发了一个仿Windows界面的图书管理程序(如图1.1.4所示),不仅仅鼠标形状和控制命令需要自己用一行行代码来编写,界面上的每一个像素也是用一行行代码堆叠而成,上万行的代码,80%以上和界面相关。而在Windows平台下进行界面开发,仅需要拖拽,基本不需要开发者编代码就可以实现漂亮的界面,此外还包括鼠标和窗体的交互。
● 图1.1.4 图书管理系统
同样这种让用户只关注业务逻辑,不需要把精力浪费在非业务层面的思想,在工控(工业控制、工业自动化)领域得到了更进一步的发展。工控领域大部分的项目实施由于涉及生产环境,所以对完成的周期和完成的质量要求非常高。如果是一般的程序开发,先收集需求,然后进行开发,再上线运行,程序有了BUG再进行修改,那么由此带来的开发周期延长,以及BUG导致的生产损失是无法估量的,更是无法承受的,所以组态软件出现了(如图1.1.5所示)。
● 图1.1.5 YFHMI组态软件
所谓组态(Configuration),就是模块化任意组合(类似积木玩具)。Visual Basic/ Visual C++语言的出现,让烦琐的界面开发工作通过简单的拖拽就完成了,而组态软件则更进一步,不仅仅是界面通过简单拖拽就可以完成,大部分的业务逻辑也是通过这种拖拽和简单配置,近乎零代码的开发方式去快速实现的。这种开发方式的好处不言而喻,开发周期不仅大大缩短,另外一个更为重要的好处就是,程序的质量得到了保证,因为这是积木式开发方式,每种积木模块都是预先开发完毕,并且大部分模块在各个现场久经考验。所以这些模块有机组合在一起,其稳定可靠性远远高于根据现有需求所开发的代码。
如果用户有些特殊的业务需求,组态软件则提供了脚本语言,通过简单写几行代码基本就可以实现相关的业务逻辑。
其实不仅仅在工业自动化领域,在其他涉及代码开发的领域,由于用户需求的大爆发,如何快速开发,快速满足用户的需求被提上了日程,这也是脚本语言出现的契机。比如Web网页开发的JavaScript脚本语言的出现就迎合了这个时代背景。JavaScript脚本语言就像一个黏合剂(俗称胶水语言)。把各个功能,各个模块黏接在一起,且以个性化、定制化的方式去快速实现用户的需求。
这种让用户以最少的代码,甚至不用写代码的方式实现项目开发的思想,就是低代码或零代码开发思想,也称为低代码或零代码开发模式。