利益相关声明:作者与文中产品有直接的利益相关(开发者、自家产品等)

小伙伴们大家好,我们是 iVX 官方团队,很高兴能在少数派跟一些懂工具懂生活的极客们友好交流,这次介绍,也是想为我们产品做一次推广,让我们的产品被更多人知晓。

在这个数字化的时代,很难不让人对编程有一些想法,我们生活在一个抽象化程度越来越高的时代,除了日常使用的手机跟电脑,各种智能家居,都离不开跟程序交互的场景。

既然每天都在跟程序打交道,你有没有一种想法,那就是自己学编程做一个程序出来?或者说,作为一种副业为自己挣到一些外快?

用 iVX 制作的花店网站

许多名人都曾公开倡导,认为每个人都应该学习编程。比如乔布斯早年的时候就曾说过所有人都该学习编程,因为它让你学会思考。

当今的亿万首富马斯克在 12 岁时就因编程赚取了自己人生的第一桶金,比尔·盖茨也是从小修习计算机,走上了一条致富的道路。

《纳瓦尔宝典》的作者埃里克·乔根森说,致富的最好方式就是学习那些复制成本近乎为零的工作,比如写书、做播客、写代码,做媒体,因为你可以通过低成本的复制方式让它们影响到尽可能多的人,从而为自己实现快速致富。

现在世界上的大多数硬软件企业都在为这个目标而努力,因为代码的可复制性,它的边际成本近乎为零,这意味着只要你能写出优秀的代码,凭借其复制传播的特点,往往可以流通到全世界。究其根本,低成本的可复制性是财富迅速增值的显著标志。

就算不以赚钱为目的,当一种个人爱好和兴趣,也能极大地训练我们的成就感跟解决问题的能力,要知道,现实世界就是由无数具体的问题组合起来的,如果我们能学会步步为营拆解问题的方式,对自身的能力无疑是一次值得肯定的磨砺。

文本编程的局限性

然而,说起来容易做起来难,我们也曾认真思考过这个问题,编程之所以困难,是因为它本身的复杂度是不可拆解的吗?有没有一种方式让编程变得简单?

编程作为一项古老的创造性活动,至今也有七八十年的历史了,古老的文本编程方式一直占据着主流形态。

一门传统的编程语言从学习到掌握,起码要经历半年多的时间,才能看到成果,这种反馈来得太慢,再加上现代人碎片化的生活习惯,很难空出大段的时间来进行学习。

最难的点在于,从理解概念到实践、试错,往往都有一段很长的路要走,这导致不是专职的人学习编程往往要付出很大的时间精力跟成本。

高级编程语言诞生已经过去了大半个世纪了,在我们看来,什么都在进步,但是编程语言的发展却有些缓慢了。虽然现在语言更加丰富,框架更多,但是最基本的编程方式还是没有任何改变,就是“写代码”,其实在英文

中“Programming”和“Coding”是两个单词,有没有可能,我们只“编程”而不“写代码”?

由于我个人比较喜欢图形化的思维方法,在我学习代码以后,就一直在思考一个问题:有没有另一种实现代码逻辑的方法?这种方式可以“抹平”各种编程语言/框架之间的差异,实现“去掉程序语法,保留程序逻辑”。

我们尝试去探索一条“应用开发的最短路径”,这条路经涵盖了从“开发”——“测试”——“上线”——“运维”的全过程,自动生成全栈代码(包括前端/后台/数据库代码),甚至尝试给用户提供“最直观”“一眼就能想到”的编程实现方法。

最近 ChatGPT 再一次大火,推出的 GPTs 大家有目共睹,不仅可以定做自己的 AI,还能上架到商城赚取费用,我认为所有人都可以遇见这一点:如果我们只是想做个应用出来,甚至光是靠自然语言输入指令就足够了,并不是每个程序都需要从头开始学习语言,低门槛的方式也有可能做出有价值的应用。

当然,自然语言也有自身的局限性,比如说不能实现精准的要求,而且目前为止只能在 Open AI 的官网上才能做,一旦离开就做不了,再加上国情网络等等可预见的阻力,我们国内使用 GPT 也不是那么方便。

如果我们只是自己有这样的兴趣爱好,想要自己快速做出一个应用,或者说可以快速实现想法、迭代出原型,这样的方式有吗?

如果我只是想做为一种工作之外的副业,不要花太多的时间在上面,这种目的性更强的编程方式有吗?

说白了,就是一种更适合新人入门,更适合小白学习的编程学习方式。

图形化编程的探索

国外有一种被称为 Scratch 的儿童编程方式,通过图形化的编程方式,可以实现非常多的小游戏设计,比如愤怒的小鸟,植物大战僵尸等等,独立画出思维导图的梳理逻辑、制定规则、设计形象、解决 bug 和报错,直到游戏可以完整地运行。

Scratch 这种编程方式就是图形化编程的雏形,相较于传统的文本编程方式,你可以看到它更易于理解,也更容易进行学习和模仿。

不过 Scratch 只是对图形化进行了一个表达,没有将更多的功能封装抽象到组件中,因此它只能做一些很简单的程序,也注定只是一款适合培养孩子编程兴趣的工具,更广泛应用的图形化编程工具还未出现,这也是引发我们思考编程形态的契机。

对比文本编程的形式,图形化编程不需要你对语法进行太多的学习,也不用担心某些拼写错误或者低级的逻辑错误,只需要将重点放在核心逻辑的构建上。

这也是我们想做到的,直接修改逻辑程序的部分,快速迭代出原型,把“逻辑表达”单独抽出来,进行解耦,去掉所有“语法”特征。

但是我们要面对的挑战也是空前的, 首先要保证产品本身的架构的灵活性。现在无论是前端还是后台,还是云计算,技术迭代的速度都非常快,需要设计一个通用的架构,保证有新技术出现的时候可以快速迭代进来,这点非常重要。

纵观很多具有IDE(整合开发环境)的产品,就是由于架构比较固化,无法引入新的技术,最终被新产品/新技术淘汰。

其次,图形化编程语言本身的设计以及和现有编程语言的转化,是另外一个难点。

图形化编程语言的AST(抽象语法树)如何设计?语义空间(关键字)有多大?如何才能生成流行且大家熟悉使用的编程语言和代码框架?后台数据库以及后台资源如何接入并保证高可用?外部系统例如3D、2D、物理引擎如何接入?如何高效渲染?这些都是很棘手的问题,而且很多问题并没有标准答案,都需要独立创新和研发。

就拿AST(抽象语法树)设计举例,前端的AST和后台显然是不一样的,例如后台需要转码Java,而前端需要转码vue/react/dart等,那Java是直接采用Java原有的AST还是重新设计一种?最终我们选择了重新设计一种AST,用来生成Java AST,再转码Java Code。

当我们2007年开始投入研发的时候,当时也不是这么乐观,估计3~5年可以做出成型的产品,当时想的是可以设计个网站/网站前端就可以了(当然还没有云计算的概念,大家还不知道SaaS是个啥?也没有想着用浏览器来做应用了,所以只有网站的概念。)

后来深入进去,发现浏览器原来还可以做很多事儿,接下来的几年浏览器本身升级和迭代速度加快了,互联网连续设计,移动互联网快速加入并成为应用开发的主战场,我们的产品也不得不进一步升级。

这种来自产品快速升级的压迫感,让我们根本就没有办法停下来。支持了动画和广告,你就想支持前端界面开发,支持各种应用开发;

支持了前端你就想要支持后台和数据库开发;然后你想要支持云计算,支持微服务和 Serverless ;然后你想要把编程语言配套设置都加上,IDE、多人开发、版本管理、自定义组件管理...一个都不能少;

再然后就是平台化...模版平台、组件平台、交易平台、应用商店纷纷上马...需要做的事情太多太多。几乎是把编程语言几十年建立的大厦和配套设施都要独立靠我们团队去实现一遍,而且很多技术还要自己摸索...

Finally...

我们沿着这条道路探索了 17 年(2007年~2023年),iVX 就这样诞生了。
 
产品很早就在线上可以访问了(2021年~2022年),但我们几乎没有推广和宣传,总是觉得这个产品无论是体验上还是技术框架上,都还有需要调整的地方.

因此,我们来来回回重构了 7~8 次,功能点新增和调整上千次,最终形成了现在的版本—— 5.0 版。

总体来说,我们对目前的版本整体上已经比较满意,因此决定推向市场,就目前为止大概有 30 万注册的开发者,已经通过我们平台开发了近 100 万个应用了。整体而言,没有什么 bug 了,而且生成代码性能表现也很出色,大家可以放心使用。

以下是一些简单的案例:

消除游戏
五子棋
羊了个羊
艺术画廊网站
监管平台
表单引擎
财务报表
完善中的组件市场
官方准备的多种模板

目标 30 年...

虽然 iVX 整个孕期比较长,但是还是健康出世了。

而且,我们坚持每周迭代,到现在为止,我们还是基本上全员研发(为此,国内税务主管部门多次来查,说我们申报的研发人员比例太高🙃,我告诉他们“我们财务系统都是财务人员自己研发的,现在已经转研发了🤣”)。

底层技术的演进,往往需要更长的时间,但是一旦有所突破,往往也会带来生产力更大的进步。在iVX IDE的基础上,通过AI模型自动编程,是我们研究的新方向。希望通过我们的努力,可以为更多人服务,并创造价值。

如果你觉得我们的技术还有点意思,可以进入我们的官网体验下,逛逛也不错,欢迎光临: iVX—人人都能掌握的可视化编程语言-ivx官网