写点什么

用低代码平台搭建低代码平台

作者:iofod jude
  • 2022-11-04
    广东
  • 本文字数:2335 字

    阅读完需:约 8 分钟

用低代码平台搭建低代码平台

前言

通常一门编程语言只要支持条件分支判定,变量赋值,循环或递归结构以及四则运算,就能认为是图灵完备的了。假如一个低代码平台支持嵌入执行图灵完备的自定义代码(如 Javascript)并与低代码系统内部联动,即是说完备性传递给了低代码平台,或者这个低代码系统本身就图灵完备,那么理论上凡是传统编程能实现的任务,低代码平台也能实现(图灵等价)。根据此逻辑,用这类低代码平台去搭建低代码平台本身理论上是可行的,本文仅探讨此类低代码。

实现自身?

我们通常不会因为一门编程语言是图灵完备的就选择它,比如用 Brainfuck 打印下 "Hello World!"

++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.复制代码
复制代码

现实阻止了你这么做,科学“理论上可行”但脱离现实因素就是在耍流氓,理论上可行但现实几乎不可行便是不行。

图灵完备的编程语言理论上都能实现自举,很多通用编程语言往往为了彰显自身强大去实现自举,而不仅仅停留在理论可行上。

手上没有剑和有剑不用,不是一回事。 —— 钱学森

人们发明很多编程语言来应对不同领域的可计算问题,让底层语言解决底层的问题,高级语言解决上层问题,各司其职。底层语言自举往往是必须的,由于底层语言的产物很多是在解决同层面的问题,而高级语言却少数这样,基本在解决更高层的问题(如应用层),因而实现自举则成为可选项。

低代码可以看作一种位于高级语言之后的可视化开发语言,低代码与高级语言的一个不同点在于,低代码的产物和低代码属于同一层面,都可以称之为应用,低代码同底层语言一样在解决同层问题,那么自举便不能视为可有可无了。因此若一低代码平台无法自举,那么它所宣传的通用和强大犹如儿戏,应该称之为领域特定低代码(DSL, Domain Specific Lowcode :)才恰当。

里程碑

通用性不妨碍 SQL 成为世界上最为成功的 DSL(虽拓展后可图灵完备),同样地,通用性不是衡量一个低代码平台价值的唯一因素。笔者认为,好用才是低代码最最需要的,我们开发 iofod 低码平台前便设定了几个里程碑,它们呈递进关系,就是说只有前一个达成了,才有必要去完成下一个:

  • 自己会用

作为日常必备工具,自己真心离不开它,“就是连自己也骗进去了”(手动狗头)

  • 自指

即前文的“自举”,为了区别于传统编程的定义,后文称自指,具体实施指用 iofod 编辑器搭建出 iofod 编辑器自身。

  • 少部分人离不开它

让 iofod 拥有一批忠诚的粉丝用户。

(PS:截止至本文发表时,前三个目标基本达成,未来的里程碑还找不到准确的词语来概括,以后有机会再分享。)

周末的成果

第二个目标早在半年前就有着手实现的欲望了,它虽有重要意义但整体而言对产品实际贡献不大,属于重要不紧急的事情,因此就被无限搁置了,眼看今年时间所剩无几,趁着 iofod 正式版发布之际,了此夙愿。

自指的实现,必须给出可度量的,准确的定义,直面它,不允许采用掩耳盗铃的方式敷衍过去,像通过 iofod 编辑生成生态周边的内容,如项目的主页,双端官网,甚至编辑器自身的部分实现,如工作台用户主页,再者像引入外部组件的方式,即把 pro code 实现的 iofod 编辑器打包成一个组件引入等等。这部分工作确实能用文字概括为实现自身,跟自指沾边,然而严格来讲这根本就不算自指,用 iofod 低代码编辑器内部能力搭建出一个一样的 iofod 低代码编辑器 才是真正意义上的自指,搭建周边生态等情况只能归属于“自己会用”实践的范畴。

实现目标已定,实现程度呢?

我们知道低代码编辑器的核心在于它的搭建能力,核心能力一实现,其余的部分理论上只剩人力和时间资源的问题,因此不必追求 100% 实现编辑器的所有细节,我们只做概念证明,只需实现 iofod 编辑器核心的搭建能力:

  • 基本的可视化编辑界面

  • 组件的拖放,解析预览,嵌套,添加到编辑区目标对象上

  • 组件的选中,元状态的解析,状态属性表单生成

  • 状态属性表单的增删改查

  • 编辑器状态与组件状态的联动,结构管理

  • 可编辑模型变量表单的生成

目标和任务详情具备,脑海里再演绎 N 遍扫除所有先验问题,接着按部就班地执行便得了,经过约 16 个钟的搬砖终于搞定!



根据 TalkCheapShowCode 原则,执行过程的流水账不再赘述,各位看官自行请前往【项目主页】查看实现细节。



套娃套娃

若只计算 IFstruct 结构的代码行数,此次概念证明约用 1.3 万行代码,约为完整实现的二十五分之一,耗时不足其百分之一,此波可谓血赚不亏!当然这种成本计算只能作为特例,设计和思路是照搬的,套娃不过是利用后来者优势。

那么问题来了,继续套娃呢,可否叠加优势?

答案是肯定的。我们在套娃这个过程习得套娃的技能经验,可用于下一次套娃,工程师 DRY 被动技能发动!接下来,我们在低代码平台搭建的低代码平台里搭建低代码平台



虽说是套娃,但每一层套娃渲染能力是复用的,也就是说套娃的套娃可以直接复用套娃的结构,当然你也可以复制一份出来放到项目内作为自定义函数/服务去调用,渲染能力部分代码不包含在项目结构内而是内置于 iofod 的工程模板里,对这部分感兴趣的小伙伴请参阅 IFstruct 解析器

结语

我看到了它,却不敢相信它。 —— 康托尔

笔者野心不大,副本打完提裤走人绝不恋战,为避免套娃宇宙下的 iofod 功高盖主,低代码的套娃故事便就此搁浅。希望本文在低代码自举方面能达抛砖引玉之效,给同路人带来一点启发。


AD: 双十一活动前 50 名企业版私有部署免费,支持 SDK 接入,有需要的企业请私信我或者加微信:qkorbit

如果使用过程有任何问题,可以公众号搜索【iofod】或【数字围猎】,点【联系我们】可在线提问,或者添加小助手微信:iofod_beta 进群交流。

相关链接:

用户头像

iofod jude

关注

还未添加个人签名 2022-06-24 加入

还未添加个人简介

评论

发布
暂无评论
用低代码平台搭建低代码平台_iofod jude_InfoQ写作社区