低代码编程技术比较:VPL、PBD 和 PBNL


本文回顾了与低代码编程模型相关的研究,重点是可视化编程、演示编程和自然语言编程。它将低代码技术映射到目标用户,并讨论常见的构建块、优点和缺点。本文认为,特定于领域的语言和模型-视图-控制器模式构成了低代码技术的共同支柱和统一原则。

低代码包含很多专业的技术,例如可视化编程语言 (VPL)、演示编程 (PBD)、示例编程 (PBE)、机器人过程自动化 (RPA)、自然语言编程 (PBNL)。

在此,我们将深入探讨低代码编程的三种代表性技术:VPL(可视化编程语言)、PBD(演示编程) 和 PBNL(自然语言编程)。

这三种技术是一套很好的技术。这三种技术非常适合利用通用技能的公民开发人员:VPL 依赖于视觉,PBD 依赖于使用计算机应用程序的能力,PBNL 依赖于口语。

当其他方法受到阻碍时,低代码可以提供替代方式,例如当用户的手或眼睛不可用时使用语音界面。

原因如下:

  • Sahay 等人的论文宣称,低代码只是 VPLs 一种技术的同义词,但这种观点似乎过于狭隘。
  • Barricelli 等人列出了 14 种不同的 EUP 技术 ,但这些技术并没有被明确区分开来,对它们进行详细审查会显得过于啰嗦。
  • 过去,占主导地位的低代码技术是电子表格 :VPL 是当前商业低代码平台的核心; PBD 是 RPA 的支柱,
  • RPA 通常使用记录和重放技术;
  • 而 PBNL 则因基于深度学习的大型语言模型的进步而蓄势待发。

VPLs、PBD 和 PBNL 足以构成一套构件,这些构件也可以以不同的方式排列,用于其他低代码技术,如电子表格、规则、向导或模板。并不是所有的构建模块都会出现在所有的技术中,但以下这些模块经常出现,因此有必要对其进行简要的预先定义:

  • 代码画布:渲染代码,例如以流程图的形式直观地渲染代码;
  • 调色板:提供用于拖放选择的组件;
  • 文本框:容纳自然语言文本,用于代码搜索、描述或生成;
  • 播放器:有捕获、重放、暂停或步骤按钮;
  • stage:显示代码执行的效果;以及
  • 配置窗格:允许用户自定义组件,例如,通过复选框或滑块等图形控件,或通过输入小公式等文字方式。

低代码技术不仅支持编写程序,还支持读取和执行程序。低代码系统可以在编写程序后立即执行程序,也可以将程序保存起来备用,用户还可以选择多次执行程序,例如在输入数据发生变化后执行程序。低代码技术的不同之处在于,在读取、写入或执行程序时,需要使用所列的哪些构件。图 1 通过使用无向边缘模糊了读/写/执行的区别,而本节其余部分则通过使用有向边缘和颜色(橙色代表读取,深蓝色代表写入,紫色代表执行)来解释这种区别。

1、可视化编程语言VPL
用户将可视化组件从调色板拖到画布上,将它们连接起来并进行配置。

可视化编程语言允许用户通过直接操作可视化表示来编写程序。可视化表示法有很多,通常受领域符号(如电路图)的启发。两个著名的与领域无关的可视化表示法是方框加箭头(如 BPMN27)或连锁拼图(如 Scratch29)。在这里,方框或拼图代表程序中的指令,方框之间的箭头或拼图的联锁代表指令之间数据和控制的流动。

尽管可视化语言多种多样,但其编程环境往往由类似的构件组成:

  • 核心构件是代码画布,用户可以在这里读取(从画布到眼睛的橙色箭头)和编写(从手到画布的深蓝色箭头)程序。编写程序还包括将组件从调色板拖到画布上,并可能在单独的配置窗格中进行配置。
  • 编程环境通常还包括一个Stage,直观地显示程序的执行情况,最好是现场直播。例如,在 Scratch 中,Stage显示的是虚拟世界中的精灵。除了使环境更吸引人之外,Stage对于程序的理解和调试也至关重要。为了便于理解和调试,Stage通常与画布紧密相连,帮助用户来回浏览。

VPL 的优势之一是:

  • 它们易于阅读,尤其是在重用领域专​​家已经熟悉的符号或在图形用户界面的可视化构建器中时。
  • 另一个优点是,与 PBD 或 PBNL 相比,VPL 通常是明确的,从而增强了程序员的控制并减少了错误。
  • 最后,与文本编程语言相比,视觉语言可以通过构造排除语法错误37甚至简单的类型错误

2、通过演示进行编程PBD
用户在画布上演示行为,并在录制期间或录制之后进行一些配置。

在PBD中,用户演示如何通过鼠标和键盘手动执行任务,PBD系统记录可以自动执行相同任务的程序。

演示发生在一个Stage上,该Stage可以是电子表格等特定应用程序,也可以是访问各种网站和应用程序的Web浏览器,甚至是通用的计算机桌面或智能手机屏幕。

录制的程序将感知抽象为符号表示,例如,通过将像素坐标映射到用户界面小部件,或将几次击键映射到文本字符串。除了Stage之外,大多数 PBD 系统都有一个带有录制和重放按钮的播放器,通常还带有其他按钮,例如暂停或单步。

演示编程的主要优点是用户可以直接使用他们在日常工作中已经熟悉的软件应用程序。这使得 PBD 非常适合公民开发人员,因为编程和执行之间没有间接关系。此外,演示比不同范式中的程序更具体,因为它适用于特定值并且具有直线的控制和数据流。

过于具体也是 PBD 的主要弱点:要将演示变成程序,必须对其进行泛化,而自动泛化可能无法捕捉用户的意图。

PBD软件案例:

  • PBD 系统的一个很好的例子是 CoScripter,其中Stage是 Web 浏览器,代码画布以自然语言显示程序。
  • 在 Rousillon 中,Stage也是一个 Web 浏览器,画布以 VPL 形式显示程序,将多个低级步骤的序列融合到一个拼图中。
  • 在 VASTA 中,Stage是手机的显示屏,系统使用机器学习将屏幕截图逆向工程化为用户界面元素。
  • 在 DIYA 中,Stage是网络浏览器,用户在录制过程中通过语音输入自定义节目。

PBD 用于商业机器人流程自动化产品(例如 UIPath、Automation Anywhere 和 BluePrism),让人类在现有软件上演示流程,然后将自动重播引擎称为机器人。

PBD 与 PBE(示例编程) 密切相关,因为演示是一个精心设计的示例:
FlashFill 是一个开创性的 PBE 系统,它使用电子表格中的示例输入和输出列来合成用于将输入转换为输出的程序。

PBD 和 PBE 都基于程序综合。最近的工作利用新颖的机器学习技术进行程序合成,例如 DeepCoder 5中的学习搜索策略和 DreamCoder 中的学习库。

PBD 可以与其他低代码技术相结合,从而带来利润。播放/播放方法是一种基于序列图与其自己的 VPL 共同设计的 PBD 系统。SwaggerBot 是一个嵌入自然语言对话代理中的 PBD 系统,支持某种形式的 PBNL。

3、用自然语言编程PBNL
用户通过键盘或语音输入自然语言文本,系统合成程序。

PBNL 的主要优势不仅在于它是低代码的,而且更普遍的是,它在编程过程中的要求较低。它的编程环境只有三个构建块(文本画布、代码画布和Stage阶段),都是可选的。这意味着 PBNL 原则上甚至可以在用户的​​手和眼睛被占用的情况下工作。

PBNL 使公民开发者能够特别轻松地创建程序,但不幸的是,这些程序常常是错误的。

自然语言是模棱两可的,因为人类通常是模糊的,并且倾向于假设共同点而忽略上下文。

最重要的是,自然语言处理(NLP)技术并不完善。

  • 可选的代码画布和阶段可以通过向用户显示合成的程序或其效果来缓解这一弱点,从而使他们有机会纠正它。
  • 另一种缓解措施是鼓励用户保持话语简短,而不是充分利用自然语言的表达能力,因为更简单的程序更容易正确。
  • 此外,一些 PBNL 系统支持手动编辑程序。

PBNL 的另一个优势是它的表达能力:自然语言几乎可以表达人类想要交流的任何内容。

另一方面,PBNL 系统通常需要对齐的话语和程序语料库来训练 NLP 模型,而获得这样的语料库成本高昂。

应用于 PBNL 的最成功的 NLP 技术是语义解析器,它是从自然语言转换为程序的抽象语法树 (AST) 的机器学习模型。例如,

  • SILT 学习基于规则的语义解析器,这些解析器已在机器人足球队教练程序或查询地理数据库的程序中得到验证。
  • Overnight 论文解决了通过合成数据生成和众包释义获得用于训练语义解析器的对齐语料库的问题。
  • Pumice 通过对话解决自然语言的歧义,系统提示用户可以通过自然语言或演示提供澄清。
  • 辛等人展示如何引导预训练的大型语言模型进行语义解析而不需要微调

PBNL 的另一种方法是程序综合,它通常搜索可能程序的空间。描述一个元合成器,给定 DSL 语法和对齐的语料库,创建一个从自然语言到 DSL 中的程序的合成器。

PBNL 不限于面向公民开发者的特定领域语言。

  • Yin 和 Neubig 描述了一种语义解析器,它使用深度学习对自然语言标记序列进行编码,然后将其解码为 Python AST。
  • Codex 是一个预训练的自然语言大型语言模型,首先对未标记的代码进行微调,然后对对齐的话语和程序语料库再次进行微调。

核心问题是歧义
低代码编程的一个核心问题是歧义。虽然可视化编程语言可以是严格且明确的,但如何从演示推广到在不同情况下工作的程序存在模糊性,而自然语言本质上也是模糊的。更模糊的技术可能只能可靠地解决小而简单的问题。PBD 和 PBNL 系统必须猜测用户的意图,并且当程序变得复杂时很可能猜测错误。这促使用户可以选择阅读甚至更正程序或其执行。

低代码的模型-视图-控制器MVC
特定于领域的语言和模型-视图-控制器模式构成了低代码技术的共同支柱和统一原则。

  • 当前最先进的 VPL 和相关元工具基于 MVC 模式。
  • 在 PBD 或 PBNL 中,即使用户不使用代码画布来编写程序,系统也可以选择提供一个代码画布来读取它,同样使用 MVC。

低代码编程工具提供程序的一种或多种视图。其中一些视图是只读的,而其他视图是读写视图。当存在多个视图时,系统使它们与单个联合模型保持同步,并通过该模型使它们彼此保持同步。一个视图中的编辑会实时投影到所有其他视图。该模型是 DSL 中的程序。

除了模型和视图之外,MVC 模式的第三部分是控制器,对于低代码,它可以包含播放器和/或配置窗格。