编者按:近年来越来越火的低代码不仅引起IT从业者的关注,更是受到各行各业机构组织的青睐。传统开发虽然受到低代码的影响,但是依然有着不可撼动的地位。相对于传统开发,低代码的优势是什么?它应用在哪些领域?
软件开发的概念
软件开发的本质是定义一些工程原则,输入给计算机,并且让计算机去完成一些具体工作。
软件开发的工程原则是指什么?主要有四点:
▲ 抽象:采用分层次抽象,自顶向下、逐层细化的办法控制软件开发过程的复杂性。
▲ 模块化:模块化有助于信息隐蔽和抽象,有助于表示复杂的系统。
▲信息隐蔽:将模块设计成"黑箱",实现的细节隐藏在模块内部,不让模块的使用者直接访问,这就是信息封装。
▲局部化:保证模块之间具有松散的耦合,模块内部具有较强的内聚,这有助于控制解的复杂性。
软件的开发离不开计算机语言。计算机编程语言的发展历经了从低级到高级,发展的核心思想就是“让人更容易编程”。计算机语言经历了三代:第一代是机器语言,第二代是汇编语言,第三代是高级语言。
机器语言:由数字组成所有指令。机器语言通常由数字串组成(最终被简化成01),对于人类来说,机器语言过于繁琐。使用机器语言,人类无法编出复杂的程序。
汇编语言:为了编程的方便,以及解决更加复杂的问题。程序员开始改进机器语言,使用英文缩写的助记符来表示基本的计算机操作。这些助记符构成了汇编语言的基础。汇编语言虽然能编写高效率的程序,但是学习和使用都不是易事,并且很难调试。
同时,汇编语言以及早期的计算机语言(Basic、Fortran等)没有考虑结构化设计原则,而是使用goto语句来作为程序流程控制的主要方法。这使得程序很难被读懂,不过也由于这种特性,现在汇编语言仍然应用于工业电子编程领域、软件的加密解密、计算机病毒分析等。
高级语言:随着计算机的发展,汇编语言已经不能胜任复杂业务,高级语言应运而生,也就是我们现在常见的Java、C、C++等。高级语言的出现,让计算机语言变得“易使用”,这为复杂软件的开发打下了生产力的基础——人力。
在计算机语言发展的过程中,软件工程师付出了诸多努力,为提高软件开发效率做出了巨大贡献。
同时,编程思想也在发展,从面向过程到面向对象,到面向服务。
面向过程(POP):分析解决问题的步骤,用函数把这些步骤一步一步的实现,后期意义调用。
面向对象(OOP):把构成问题的事务分解成各个对象,用于描述某个事物在解决整个问题的过程中所发生的行为。
面向服务(SOA):一种进行系统开发的新的体系架构。在基于SOA架构的系统中,具体应用程序的功能是由一些松耦合并且具有统一接口定义方式的组件(也就是Service)组合构建起来的,它对迅速变化的业务环境具有良好适应力。
使用面向服务的编程思想,设计者只需要通过集成各种服务即可完成系统的构建。通常情况下,面向服务的架构思想主要用于分布式系统的构建,设计者通过特定的数据格式集成一些服务完成系统构建,相比面向过程和面向对象而言,面向服务的思想是粒度最大的。面向对象,面向过程和面向服务都是当下仍广泛具有指导意义的编程思想,它们相辅相成,共同完成软件设计任务。
后来居上的低代码
相对于传统开发,低代码具有明显的优势。传统软件开发中成本高、定制化能力差、效率低、迭代周期长等局限性,在低代码开发中得到了缓解。

在讲低代码之前,先了解一个概念。
领域驱动设计(英语:Domain-driven design,缩写 DDD)是一种通过将实现连接到持续进化的模型来满足复杂需求的软件开发方法。领域驱动设计的前提是:
▲把项目的主要重点放在核心领域(core domain)和域逻辑;
▲把复杂的设计放在有界域(bounded context)的模型上;
▲发起一个创造性的合作之间的技术和域界专家以迭代地完善的概念模式,解决特定领域的问题;
领域驱动设计是一种由域模型来驱动着系统设计的思想,不是通过存储数据词典(DB表字段、ES Mapper字段等等)来驱动系统设计。领域模型是对业务模型的抽象,DDD是把业务模型翻译成系统架构设计的一种方式。
低代码的本质是面向领域的(DDD),所以低代码本身也是分领域的,例如面向游戏的、面向管理软件的、面向网站建设的……
1、低代码与游戏的“碰撞”
2016年,Bitsy 的诞生,一款免费、在线、开源的工具,无须下载和安装,也无须强大的硬件配置,只需要一个浏览器,一个网址,就能直接开始制作游戏,并能实时预览。

2019年7月,微信官方推出“小游戏可视化制作工具”,一款 web 应用,可以让用户无需代码快速进行小游戏开发。采用可视化编程,配置有组件、素材,可一键调优、实时预览。

2、低代码在管理软件领域“独领风骚”
在管理软件领域的低代码平台可以理解为:满足企业业务端应用需求,通过可视化界面,利用少量代码或者无代码即可搭建简单应用和复杂企业级应用的独立开发平台,通常指APaaS产品。
天翎、钉钉搭等是此类平台的典型产品,如下为天翎MyApps平台截图:

此类平台仍然涉及少量代码,屏蔽了大量技术实现细节,保留了开发能力,比如高级语言和宏语言的嵌入,数据结构定义等,可以满足复杂IT业务的实现。
云技术的成熟发展和企业信息化的迫切需求促进了低代码在管理软件领域的长足发展,而低代码为企业带来的降本增效的良好表现也反哺于低代码市场的发展,国内“数字化转型”、“互联网+”的无疑为低代码的发展加了一味催化剂,市场规模不断增长,前景光明。

3、低代码“领跑”网站建设
“几分钟内上线一个网站”这是低代码时代的流行口号,既然低代码可以用来搭建复杂管理系统,实现相对简单的网站建设自然不在话下。用户无需编译代码,通过可视化方式构建数据模型、视图、权限、工作流等,即可实现应用搭建,也被称作无代码/零代码产品。
凡科、wordpress等都是此类产品,如下凡科网页截图:

此类可实现完全无代码操作,不具备IT知识的人员也能够快速地接受和掌握。
低代码/无代码平台通过组件化、引擎化,在特定的领域可以提高开发效率,加快应用的构建。传统开发虽然在效率上有所欠缺,但有更强的灵活性,能够解决个性化、关键性能等问题,因此低代码和传统方式相结合在将来很长一段时间是开发的主流方式。