上一篇文章,我大概分析了一下“编程的本质”以及“为什么编程语言现在基本都是文本形式”的原因,效果非常不错,收到很多读者的反馈。

我接着用最平实的语言,给家讲讲我对编程方式演进的理解,欢迎大家探讨和斧正。

 

 

我画了一张图,以供大家参考。为了节省时间,我就把最核心的几个问题,直接抛出我的理解和答案。

 

1. 低代码算不算“编程语言”?“新的编程范式”? 在编程演进的过程中处于什么位置?

 

如果抛开产品,去说概念,特别是这种本身没有被严格定义过的概念,意义不大。

低代码市场大体可以分为三类:

 

第一类:aPaaS,市场上基本上是这一类,有说给“研发”人员用的,也有说给“研发+业务”人员用的,基本上是一个可配置的“运行时”产品,自身不生成代码,提供开发接口。这样的产品,主要还是给企业内部使用,例如数字化转型提供支持。

优势:提供类似SaaS配置方案,也有一定研发属性;而且相比“纯SaaS第二类”,可以企业内部部署,比较灵活。

劣势:就是本身功能和性能都有限制(运行时本身的问题),而且会造成使用企业被单一平台锁定的问题(因为不生成代码)。

 

第二类:多个SaaS的合集,国内的“无代码”,这一类基本上是给“业务人员”用的,操作简单,在具体场景下,功能是相对完善的。但这类产品,可以理解为“SaaS”产品在企业内部的一个打包扩展。

优势:业务人员都可以用;

缺点:扩展起来就比较麻烦了,接口能力和代码扩展能力较弱;通常不支持企业内部部署。

 

第三类:代码生成型,比较典型的就是“iVX”和“CodeWave”,这一类其实并不算标准意义上的“低代码”,其实提出低代码概念的公司Mendix/Outsystems 机构Gartner等,仍然是站在企业数字化转型的角度思考,并没有站在“编程技术”演进的高度来考虑这个问题。所以,这类产品比较另类,从低代码概念上来看,确实符合“低代码”概念,但是由于支持“通用”应用的可视化开发即代码生成,已经超越了原有低代码的范畴,具有了编程语言的属性。

 

结论是这样的:

低代码概念本身不算“编程语言”,甚至也不能算“新的编程范式”,只能算是“企业服务”的产品范畴,是企业服务在SaaS和编程可视化上的一种结合的产物,在一些特定场景有明显的效率优势,但也有其明显的局限性,这将限制其自身发展。

 

2. 自然语言编程发展到什么程度?是否可以替代写代码编程?

 

我先说结论:在“AGI(通用人工智能)”发展到人类智力水平之前,基本上很难实现完全的自动化编程,也就是“整个编程过程”都需要人的“重度参与”。我们这里就不发散讨论“AGI超过人脑”的情况,对这个问题本身意义不大。

 

在很长一段时间内,我预估是10年~15年之内,AI编程都是作为“辅助编程”而存在,不能作为一种“独立的编程范式”,对于绝大多数有独立逻辑的应用而言。之所以10~15年,我估计每隔一段时间,都会有一次重大的算法突破关于人工智能的,而每一次重大突破之后,都会沉寂一段时间,会在本次算法突破上积累很多技术成果。最早一次技术突破“BP”,然后是“强化学习”,最近一次就是“Transformer”...

 

我之所以对自然语言编程没有那么乐观,主要基于以下几点:(1) 自然语言有自身缺陷:精确性低,难描述复杂逻辑过程;正是这个原因人才发明了“数学”等更抽象的语言;(2) 生成代码准确性有待提升并且不可预测,很多“刷题”的代码,正确率也就是50%上下,这个真正的项目开发还差很远,而且正确率也不太行;(3)该练的代码,基本都练完了,除非有算法重大升级,但是我觉得比较难。

 

但是,使用自然语言辅助编程,却是一个发展方向。我觉得这个没有问题,特别是在一些特定算法、标准接口领域,或者一些相对封闭的环境,正确率还是很高的,可以大大提升编程效率,至少可以提升20%以上。

 

3. 图形化编程有前途吗?为什么市面上图形化编程产品很少?

 

我也先说结论:图形化编程方向,是我最看好的一个发展方向(就像图像化的Windows相比Dos操作系统一样重要),但这一基础领域研发难度高,这一领域发展,主要取决于“产品”+“技术”的综合发展,并且需要长期的产品积累和沉淀。

 

如果说“代码编程”(即文本编程)是面向“编程语言的语义和语法”的编程,那么“图形化编程”则是面向“组件”的编程。有人就会问,为什么哪些编程语言大咖早期没有设计图形化语言?那个时候,无论是内存、屏幕、输入方式都不允许设计图形化编程语言,那个时候也没有觉得编程会有那么多人搞,都是自己搞搞设计的(也没有图形化产品思维)。之后,大多数的“编程”语言设计,也都是沿用“文本编程”的思维框架,几十年来本质上并没有做什么调整。

 

现在市面上,可以找到的比较成熟的图形化编程产品并不多,大家可以去看看 iVX(面向成人开发者) 和 Scratch(面向儿童青少年开发者)这两款。在产品架构和设计上,有类似之处,又有创新。Scratch比较有趣,但是开发效率会比较慢,也不适合中大型应用,适合小朋友学习编程;iVX直接将“逻辑控制”抽象出来,并且做到了“面向组件”编程,开发效率很高,通过该已经有非常多中大型应用开发出来(好像还是免费的)。市场上,还有一些面向成人开发者的可视化开发产品,例如CodeWave,大家有兴趣也可以去体验一下。

 

 

 

总体来说,“图形化编程”有望成为一种新的编程范式,也具备编程语言的特性,希望大家抛开成见,认真研究,欢迎讨论。

 

Logo

低代码爱好者的网上家园

更多推荐