用低代码平台搭建低代码平台
前言
通常一门编程语言只要支持条件分支判定,变量赋值,循环或递归结构以及四则运算,就能认为是图灵完备的了。假如一个低代码平台支持嵌入执行图灵完备的自定义代码(如 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 进群交流。
相关链接:
评论