周报 2021W19

近几年「低代码(low-code)」这个词很火,国内做这个领域的创业公司扎堆出现,作为曾在这些公司之一中工作过一段时间的人,在这里简单说说我对「低代码」的理解——

何为「低代码」

最近一段时间看到很多谈低代码的文章,它们每篇在开始时都会解释一遍「低代码」是什么,基本都是在重复网上的概念,看得都有些审美疲劳了……

虽然现在已经在看到解释「低代码」概念的文本时会本能地心生厌恶,但在此我也得不免俗地介绍下「低代码」,不过我不会生搬硬套网上的概念,而是从我的理解出发。

某些文章或某些人的论调,给人一种「低代码」就是「可视化搭建」的错觉,这显然是本末倒置的!

广义地说,「低代码」是一个相对概念——某种用更少代码去组合以完成特定功能(程序)的形式,即更高的抽象或封装相对于较低的来说就是「低代码」——函数、类、组件、模板、JSON 等都可以算是「低代码」。另外,在这里通用编程语言所写的是「代码」,配置数据也是「代码」。

狭义地讲,「低代码」是「低代码开发平台(low-code development platform)」的简称。当今低代码开发平台的用途是快速地搭建新的应用或修改已有应用,使命是让不懂通用编程语言的业务人员也能参与到软件生产当中,即所谓的「全民开发」。一个低代码开发平台深度依赖于高度抽象的运行时框架及领域或场景限定的元数据。

再说「无代码」和「原代码」

从字面意思来看,「无代码(no-code)」就是没有任何使用通用编程语言编写的代码,也没有任何 XML-like、JSON 或 YAML 之类给完全不懂编程的人一种「这就是代码」感觉的配置数据。在使用无代码的办公应用或开发工具时,使用者的操作完完全全是图形化的,不会出现「代码编辑器」这种东西。

「无代码开发平台(no-code development platform)」是与「低代码开发平台」没有清晰界限的概念,一个快速应用开发平台对外宣称的是「无代码开发平台」还是「低代码开发平台」取决于营销的侧重点。

一般来说,无论是「无代码开发平台」还是「低代码开发平台」,都会提供渐进式的能力以提高开发者体验(DX)和扩大平台使用场景——完全的图形化操作;可以修改 XML-like、JSON、YAML 等形式的配置或编写函数等代码片段的代码编辑器;供传统开发方式所依赖的底层框架和其他开发包。

还有一个我有些反感的词,就是「pro-code」。

如果说「无代码」是图形用户界面(GUI),「低代码」是领域特定语言(DSL),那么「pro-code」则是通用编程语言(GPL)——在这个语境下,前端的 HTML、CSS、JS 以及 Vue 模板和 JSX 等都是「pro-code」,即使它们不都严格属于通用编程语言——因此,我称「pro-code」为「原代码」,即「原来的代码」,由于它没有相对正式的中文叫法。

我反感「原代码」这个词是因为厂商或者某些人为了区分构建应用的能力,营销或其他目的去为旧事物生造新概念。不光是「原代码」,「无代码」和在这个语境下的「低代码」我也反感。并且,这个语境下的「低代码」是我在上面解释的含义外的第三个含义,进一步增加了理解负担。

结语

在我心里,只有代表了上面那两个含义的「低代码」这一个概念,我不认同「无代码」和「原代码」这两个词。另外,在那两个含义中我更倾向于广义的。