前面我有讲过“面向模型编程”和“面向组件编程”,都是减少“代码量”的有效途径。“面向模型”或者说“面向引擎”编程,通常颗粒度会比较大,灵活性会有一些限制,对于一些较为直观的模型,业务人员是可是应用的;而“面向组件编程”颗粒度很小,可以提供类似编程语言的灵活性,产品的设计难度会大一些,这种产品会更适合研发人员使用。

现阶段绝大多数“LowCode低代码平台”都是采用“面向模型编程”这种解决方案,由于具体模型和场景耦合过于紧密,导致多模型之间的综合表达能力受到限制,会出现“看起来好像功能都有”,但是“很散”的情况,有时候甚至多个地方“同时控制逻辑”,这会给学习、开发、维护带来很大困扰,也是“低代码平台”不好用的直接原因。

如果解决低代码平台“模型分散、功能分散、逻辑控制分散”的问题呢?这就是今天重点介绍的低代码核心技术——逻辑可视化!

要把代码给干没,除了“各种封装,再封装”之外,核心就是把应用的逻辑代码给彻底可视化!这个说起来容易,但是难度极大,现阶段能够找到的靠谱的逻辑可视化方案也就三四种,各有各的特点。

面向流处理/面向函数编程的“卡线模式”

(名字是我自己取的,从事这方面研究的人和文章都很少)

这种方式:主要用于处理“数据流”或者面向函数的方式来进行程序设计,被广泛使用,对于简单的应用直观,且容易维护,对于复杂的应用或游戏,感觉效果可能并不明显。

优势:非常直观;信息密度比较高(在一个页面中承载很多信息,密度大)

缺点:在一个有限面板内进行设计,需要排版;对于复杂应用操作和维护难度明显变大;耦合太紧,不能拆分;

Google VisualBlocks

这个产品是用来可视化配置一些AI模块,来实现“数据的流式处理”,产品是Google的VisualBlocks,大家可以去研究一下。

Unreal BluePrint逻辑转代码

上面这个也有点像,这个Unreal BluePrint,也都是归于此类。

复杂的BluePrint实现的代码

这个呢就是属于做的比较复杂的,我感觉由于都在一个面板里面,所以弄得异常复杂。结构化和解耦的工作都没有做好,所有逻辑杂乱无章地放在一个面板里。弄不好后期维护,我觉得难度可能比代码还高。

单纯去掉代码,为小朋友学编程设计的“积木模式”

(通常会带有磁吸效果)

这种方式:初衷就是为了小朋友学习编程,激发编程思维使用的,虽然也形成了一整套组件系统,并没有在逻辑结构上做太多优化和调整。

优势:比较好玩,有磁吸效果;针对最简单的程序设计比较简单直接;

缺点:编程效率很低(可能比代码还要慢);只能做最简单的逻辑设计和开发,且逻辑块都放在一起(做不了复杂程序);没有对逻辑和组件进行进一步抽象,抽象程度相对较低(语法、逻辑控制和组件块没有分离,开发代码量就上去了);只有前端程序逻辑,无后台。

较为复杂的Scratch逻辑实现

类似Scratch的逻辑实现

低代码和BPM工具常用的“流程图模式”

这种方式:借鉴了早起“流程图”的设计方法,以及参考了部分BPM工作流的设计规范(往往都不完整,因为BPMN2.0实在太复杂,设计和用起来都不方便)。

优势:多数基于“任务流”的设计;对于简单逻辑,容易看懂和维护;

缺点:在一定范围内画图和排版,效率比较低,成本较高,信息的密度还是相对较小;对于复杂逻辑(循环等)往往都需要代码来表达(据说因此发明了“低代码”这种叫法);对于多对象的触发以及合并,复杂的条件判断,支持起来都比较困难;多数都是后台任务流的编排,对前端逻辑支持较弱。

Outsystems逻辑面板

Mendix逻辑面板

CodeWave逻辑面板

其实设计这样的图,对于开发者来说,成本还是挺好的,特别是在一个有限的区域内做得“好看”和“可维护”。所以,虽然说这种图可维护性,相对代码来说增加不少,但是设计的成本也增加很多,另外,对于复杂的逻辑,这种方式表达起来也比较捉襟见肘。

特别是最后一个CodeWave,设计的非常“细致”,在逻辑设计器上操作精确到“所有表达”,所有的数字和符号都是选填,其实这样工作成本也就上去了,我个人认为表达式还是“键盘”输入会更合适一些。

和代码编程逻辑最类似的“事件面板模式”

由于这种方式比较少,目前找到的只有做游戏的Construct 2/3,以及做图形化编程语言的iVX,而且明显iVX对逻辑面板做得更出色一些,把“if”分支逻辑“for”循环逻辑都抽象出来,做成不同的色块来表达,相比Construct 需要更少的代码知识。另一方面,iVX的组件化架构更为明确一些。

iVX逻辑面板和组件面板(左边组件)

Construct 3的逻辑面板

这种方式:非常适合程序员使用和过度,逻辑和现在代码编程非常类似。

优势:压缩代码最高,基本可以做到“无代码开发”;对代码友好,可以做到生成代码和各种类型代码不同形态的植入;在所有对象后面“灵活添加”各种事件触发逻辑,完全按照“面向组件”开发进行设计,信息表达密度高,大量减少键盘输入(除了数学表达式);学习成本相对较低,面向代码生成的架构(iVX可完整生成全栈代码,Construct 不确定)。

缺点:没有明显问题,无论是“学习效率、开发效率、运维效率”都有很大提升。

“事件面板模式”算是新品种(iVX),基本上算是一种“图形化编程语言”,非常强大,而且就是国产免费产品,大家可以试用看看。

所有的图形化编程相关的方式基本上就这些了,总结辛苦,希望大家支持!

好文推荐

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: