ivx零代码设计逻辑

【iVX从何而来】
任何生产力的进步,都不是一帆丰顺的,iVX作为一款全新的“生产力”工具,也准备好迎接各种挑战!

蒸汽机车被发明的时候,被马车夫鄙视;
流水线发明的时候,被手工业者抵制;
而移动支付,更是让门口的工行营业厅关门,当然也端了小偷的饭碗。

任何革命性的创新和发明,都会伴随新一轮的分工和社会的进步,同时也会给原有社会分工的既得利益者带来挑战。

iVX本质上就是编程领域的一种创新和发明,是互联网IT开发领域的一场“革命”!
“去掉程序语法,保留程序逻辑”,也许有百万人有过这种想法,认真思考过如何实现的不足万人,真正去实施这个想法的不足千人,长年坚持下来还在不断投入的不足百人,真正做出可用的产品的,寥寥数人耳。

【理论基础篇】
接下来,我先介绍一下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追求的目标,而且已经基本实现)

A fifth-generation programming language (5GL) is any programming language based on problem-solving using constraints given to the program, rather than using an algorithm written by a programmer.[1]

由于研发难度较大,第五代编程语言,后期的研究就基本处于停止状态了。

八、AI编程
现在主要还是停留在前端阶段,无逻辑部分。主要实现方式,就是把简单的界面直接翻译成JS代码,可以识别按钮等简单界面控件。
iVX也涉及到代码自动生成,但是是前后台代码的自动生成,原理和技术实现上和通过视觉分析生成按钮控件有很大不同,就不在这里细说。

【开发过程篇】
如果你们也想开发一套iVX出来,需要一些什么步骤呢?这个也许是你们最感兴趣的部分,在这里我也给大家泄个密,希望CTO他老人家不要怪罪。
一、组件的抽象
构造通用的应用需要一些什么组件,解决这个问题就意味着需要对现有的所有应用和可能的应用场景进行拆分和抽象。对于一个应用抽象或许还可以,但是把抽象出来组件反过来可以构建各种应用,这又是另外一回事儿了。这就类似于一个NP问题(https://en.wikipedia.org/wiki/P_versus_NP_problem),也许永远没有一个最优解,但是通过不断的努力和尝试,iVX已经基本上可以构建任何应用了。
组件的抽象非常漫长,而且抽象的层次也非常关键,什么是基础组件,什么是基础组件之上抽象的扩展组件(这种组件更加实用,往往可以马上表达某一功能),可能在之上还有模型和模块的概念,在之上才是模板和模板复用。
之后,所有的组件都是对象化的封装(包括事件本身),都有“三位一体”的表达,这就是“对象属性”“触发条件”“对象函数”。
比较难的是后台部分,前端还有一些库的方法可以参考,后台抽象难度会更大一些。

在这里插入图片描述二、逻辑的抽象和表达
上一步比较难,是内容量太大,细节非常多,花的时间也就多。这一步是真的比较难~
所有的程序开发,抛开了界面和数据,剩下的就是逻辑,逻辑成应用的灵魂,也是最难0代码表达的。
iVX创造了基于的“条件触发式”的非代码逻辑方式,以及为这个方式专门提供了一个事件编辑面板,支持前端、中台、后台的逻辑编辑。
同时iVX支持MySQL的所有操作逻辑。
在这里插入图片描述三、形成完备的中间语言
总体来说,iVX是从WebApp开始研究和演进的,更多的使用了Web前后端流行技术。
iVX前端是使用React,生成的前端代码也是React的Core。中台采用Node.js,直接解析JS代码。后台和云端基础设施相连,采用了Go来架构,效率更高更稳定。
中间语言,只的是通过前端拖拽组件和配置完事件之后,生成的中间代码,类似描述性语言。这个语言必须我们自己构造,类似需要积累一个字典一样,后续通过这个“字典”,将一个一个应用编辑成一篇“文章”。
这个过程比较麻烦,细节很多。

在这里插入图片描述四、支持各种目标系统的编译器
这个过程技术含量最高,需要做编辑器!这个领域现在已经很少年轻程序员涉足了。
例如,做支持微信小程序原生的编辑器,就需要把微信小程序“嚼烂”,然后再对应我们现有组件写一次,然后把对应的语法翻译成JS业务,最终通过编译器编译成微信小程序的代码。现阶段,我们支持iOS Android Windows Mac等原生应用和Web应用,所以编译器的复杂度可想而知,还要速度快,这个活据我所知,技术含量极高。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/VXLab/article/details/107413387