初探一个0代码开发—iVX平台
作者:互联网
原创公众号:bigsai
前言
最近发现了一些新名词——0代码编程,和大家分享一下。并且这个和当前比较流行的前端框架React,谷歌的Go语言,Node这些最新技术关系很大,持续分享一下。
最近一些年互联网发展迅猛,应用从简单架构向复杂架构发展,架构变向复杂之后相应的环境、平台等管理就变得复杂,例如利用docker容器来管理环境。也在发展中诞生了很多新技术和简化代码的工具和平台例如Jeecj这种代码生成工具平台,各种脚手架平台简化代码量,但仍需编写代码。
在我以前的时候就想过会不会有一个工具之类能够开发网站和app,就像PS一样不懂图像处理技术但是通过操作依然可以达到良好的效果。刚好笔者最近接触到一个有趣的工具并自己试了一下,感觉非常有趣(iVX可自行百度一下)一个0代码生成的平台。虽然尚不知道它能否成为未来的趋势和热点,让一些不懂代码的人也能尝试开发属于他们的app,让一些懂代码的人能够简化他们的网站开发。
这是第一篇的介绍,主要还是先将iVX官方的一些介绍归纳总结一下,后续可能会跟一些系类。主要是源于新奇,0代码开发的平台和技术到底是怎么样的,通过近期的学习研究可以看一下,当然也欢迎有兴趣的一起研究下。当然对于这种平台可能会有同类产品,以后可能会对比分析一下。
理论基础
先介绍一下iVX的一些理论基础,有些名词我不是很熟,查阅了百科将他们翻译下来。
一、低代码开发平台(LCDP:Low-code development platform)
在维基百科中的的定义:A low-code development platform (LCDP) is software that provides an environment programmers use to create application software through graphical user interfaces and configuration instead of traditional computer programming.
可以看出低代码开发,首先提供的是一套软件,其次这个还是给程序员用的。只是可以节省程序员开发的时间,提升开发效率(类似一些脚手架,逆向工程生成部分代码)。
iVX提供是的“0代码开发语言”,因此概念上还是很LCDP不太相同。
低代码VS零代码,对比两者关系如下:
低代码产品做的是工具,优化程序开发的过程,降低开发时间成本。
- 适用人群:现有程序员,对他们过度和学习非常友好
- 适用公司和场景:大型公司最友好(Mendix和Outsystem也是这么做的),需要投入服务资源较多,适用公司BPM场景
- 对现有体系影响:影响较小,公司现有研发资产过度容易
- 解决问题:加快程序员开发速度,为公司降低开发成本
- 收费方式:企业账号收费;按应用收费;按公司规模收费
- 最终产品形态:IDE(云)
- 生态:大B生态,B端生态
0代码语言,除了加速开发,还改变编程习惯,0代码工具本身就是新的开发语言。
- 适用人群:想成为工程师的人+50%现有程序员(长期目标是90%现有程序员)
- 适用公司和场景:大型公司BPM OA ERP业务+外包公司团队+中心创业公司,几乎所有应用开发场景,除了算法场景
- 对现有体系影响:冲击较大,是对整个研发体系的变革
- 解决问题:提供一种全新的开发手段和体系,降低开发门槛和节省开发成本(我们认为这是技术发展方向)
- 收费方式:应用复杂度收费;企业账号收费;云端资源收费;C端培训收费
- 最终产品形态:语言+IDE(云)
- 生态:C端+B端生态
二、可视化编程语言(VPL:Visual Programming Language)
可视化编程语言(维基百科),这个理念和我们产品应该是最接近的。Wiki中重点提到了类似Scratch的可以拖拽的语法块,来生成目标语言程序这种方式;另外,还有类似Mendix或Outsystems的通过流程图的方式自动生成目标可执行语言的方法。以上两种均采用了面向过程的方法来进行设计整个逻辑过程。而iVX可以算是另外一类可视化编程语言,采用的是“事件触发”逻辑。
而iVX提供以下程序开发配套工具(挺完整的):
- 多人开发
- 版本管理
- Debug功能
- 细颗粒可组合的前后台组件库
- 支持复杂逻辑的事件编辑面板
多种可视化编程语言在适应的领域上:
- Scratch、Blockly只适合儿童编程,只能生成非常简单的应用;(WebApp,Flash)
- Mendix等产品,只适合企业场景,特别是BPM、OA场景的应用开发;(应用类型:WebApp)
- iVX可以支持众多场景的开发,企业场景、个人应用、游戏等都支持。(应用类型:WebApp 手机原生应用 桌面原生应用 小程序)
三、快速应用开发(Rapid application development)
在维基百科中的的定义,Rapid-application development (RAD), also called rapid-application building (RAB), is both a general term, used to refer to adaptive software development approaches, as well as the name for Terry Barraclough’s approach to rapid development.
可以看出,它是一种软件工程的理论方法和对应衍生产品,通常有IDE的界面和例如瀑布流、敏捷开发等模型。它和iVX研究方向有关系,但不是我们目前讨论的重点,不在这里详述。
四、领域语言(DSL:domain-specific language)
相关理论:DSL由软件大师Martin Fowler提出,我的理解是“设计一门特定范围的语言(开发领域),使其有更出色的表现”。
DSL 语义模型 ----> 编译器 ----> 系统识别语言 ----> 运行
| |
| |
| V
| 目标代码
V
中间代码
DSL实际上就是为了把语意表达和系统识别的语言解耦。但是在DSL理论中,认为只适合特定场景,我们认为这种模式思维会有一定局限性。例如iVX在语言设计的时候,希望是没有局限的,也就是适合任何应用开发场景。更加追求语言本身的通用性这一特点。
五、aPaaS,iPaaS(Cloud-based integration) & PaaS
这三个概念,就不在这里细说了,都是云计算领域的概念“平台即服务”的延伸,iVX符合这个定义。
六、无代码编程/可逆计算
参考这两篇知乎文章:
https://zhuanlan.zhihu.com/p/61288928
https://zhuanlan.zhihu.com/p/64004026
这两篇文章探讨了,0代码(无代码)编程的可行性,以及开发无代码编程产品体系所需要的相关技术和技术难点,并对比了和代码开发的各自优略。
但是,我觉得这两篇文章都是理论研究为主,漏掉了实际产品设计中非常苦难的问题,程序逻辑的0代码编辑解决方案。
七、第四代编程语言(4GL),第五代编程语言(5GL),下一代编程语言
第四代编程语言(4GL):
可以参考维基百科给出的定义。总结以下几个特点:1. 智能;2. 非过程化程度高;3. 面向问题,可用性高;4. 支持数据库管理开发。详见James Martin在其1981年的《没有程序员的应用程序开发》
第五代编程语言(5GL):
最主要提到的一点就是:面向问题的,非程序员也可以操控的编程语言(这个正是iVX追求的目标,而且已经基本实现)
由于研发难度较大,第五代编程语言,后期的研究就基本处于停止状态了。
八、AI编程
现在主要还是停留在前端阶段,无逻辑部分。主要实现方式,就是把简单的界面直接翻译成JS代码,可以识别按钮等简单界面控件。
这个以前学习JavaGUI插件拖动,还有一些安卓之类可能会设计到生成代码。iVX也涉及到代码自动生成,但是是前后台代码的自动生成,原理和技术实现上和通过视觉分析生成按钮控件有很大不同,就不在这里细说。
开发过程篇
一、组件的抽象
构造通用的应用需要一些什么组件,解决这个问题就意味着需要对现有的所有应用和可能的应用场景进行拆分和抽象。对于一个应用抽象或许还可以,但是把抽象出来组件反过来可以构建各种应用,这又是另外一回事儿了。这就类似于一个NP问题,也许永远没有一个最优解,但是通过不断的努力和尝试,iVX已经基本上可以构建任何应用了。
组件的抽象非常漫长,而且抽象的层次也非常关键,什么是基础组件,什么是基础组件之上抽象的扩展组件(这种组件更加实用,往往可以马上表达某一功能),可能在之上还有模型和模块的概念,在之上才是模板和模板复用。
之后,所有的组件都是对象化的封装(包括事件本身),都有“三位一体”的表达,这就是“对象属性”“触发条件”“对象函数”。
比较难的是后台部分,前端还有一些库的方法可以参考,后台抽象难度会更大一些。
二、逻辑的抽象和表达
上一步比较难,是内容量太大,细节非常多,花的时间也就多。这一步是真的比较难~
所有的程序开发,抛开了界面和数据,剩下的就是逻辑,逻辑成应用的灵魂,也是最难0代码表达的。
iVX创造了基于的“条件触发式”的非代码逻辑方式,以及为这个方式专门提供了一个事件编辑面板,支持前端、中台、后台的逻辑编辑。
同时iVX支持MySQL的所有操作逻辑。
三、形成完备的中间语言
总体来说,iVX是从WebApp开始研究和演进的,更多的使用了Web前后端流行技术。
iVX前端是使用React,生成的前端代码也是React的Core。中台采用Node.js,直接解析JS代码。后台和云端基础设施相连,采用了Go来架构,效率更高更稳定。
中间语言,只的是通过前端拖拽组件和配置完事件之后,生成的中间代码,类似描述性语言。这个语言必须我们自己构造,类似需要积累一个字典一样,后续通过这个“字典”,将一个一个应用编辑成一篇“文章”。
四、支持各种目标系统的编译器
这个过程技术含量最高,需要做编辑器!这个领域现在已经很少年轻程序员涉足了。
例如,做支持微信小程序原生的编辑器,就需要把微信小程序“嚼烂”,然后再对应我们现有组件写一次,然后把对应的语法翻译成JS业务,最终通过编译器编译成微信小程序的代码。现阶段,我们支持iOS Android Windows Mac等原生应用和Web应用,所以编译器的复杂度可想而知,还要速度快,这个活据我所知,技术含量极高。
结语
这次的介绍就这么多,看起来iVX不错,我也在上简单玩了一下,一些模板和视频教程讲解的挺细致的,希望它能为我以后写快速网页:
但是一个新东西脱胎换骨的学成成本肯定也要考虑,但目前感觉还行,后续的话可以考虑用它写个小网页应用分享给大家。
最后,微信公众号:bigsai ,欢迎关注这个分享干货的小哥哥!关注回复打卡拉你一起打卡力扣。
标签:编程语言,代码,开发,应用,初探,组件,iVX 来源: https://blog.csdn.net/qq_40693171/article/details/110680221