用低代码平台搭建低代码平台
![学新通 学新通](/static/whole/images/alert/data-load/load-15.gif)
前言
通常一门编程语言只要支持条件分支判定,变量赋值,循环或递归结构以及四则运算,就能认为是图灵完备的了。假如一个低代码平台支持嵌入执行图灵完备的自定义代码(如 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 个钟的搬砖终于搞定!
![学新通 学新通](/static/whole/images/alert/data-load/load-15.gif)
根据 TalkCheapShowCode 原则,执行过程的流水账不再赘述,各位看官自行请前往【项目主页】查看实现细节。
套娃套娃
若只计算 IFstruct 结构的代码行数,此次概念证明约用 1.3 万行代码,约为完整实现的二十五分之一,耗时不足其百分之一,此波可谓血赚不亏!当然这种成本计算只能作为特例,设计和思路是照搬的,套娃不过是利用后来者优势。
那么问题来了,继续套娃呢,可否叠加优势?
答案是肯定的。我们在套娃这个过程习得套娃的技能经验,可用于下一次套娃,工程师 DRY 被动技能发动!接下来,我们在低代码平台搭建的低代码平台里搭建低代码平台:
![学新通 学新通](/static/whole/images/alert/data-load/load-15.gif)
虽说是套娃,但每一层套娃渲染能力是复用的,也就是说套娃的套娃可以直接复用套娃的结构,当然你也可以复制一份出来放到项目内作为自定义函数/服务去调用,渲染能力部分代码不包含在项目结构内而是内置于 iofod 的工程模板里,对这部分感兴趣的小伙伴请参阅 IFstruct 解析器。
结语
我看到了它,却不敢相信它。 —— 康托尔
笔者野心不大,副本打完提裤走人绝不恋战,为避免套娃宇宙下的 iofod 功高盖主,低代码的套娃故事便就此搁浅。希望本文在低代码自举方面能达抛砖引玉之效,给同路人带来一点启发。
相关链接:
- iofod - 为攻城师们打造的低代码平台
- 康托尔、哥德尔、图灵——永恒的金色对角线
- Brainfuck
- Bootstrapping (compilers)
- 手动实现一门图灵完备的编程语言——Brainfuck
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhibjbah
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22 -
excel打印预览压线压字怎么办
PHP中文网 06-22