我们生活在一个编程语言种类繁多,百花齐放的年代。形形色色的编程语言覆盖了软件开发的方方面面。如果说这些变成语言有什么共性的话,大家都知道,大多数编程语言是高级语言。
何为高级语言。首先是架构中立,可以在不同硬件上运行。其次是类似的抽象级别。高级语言的抽象大致分为两类。所有的高级语言都支持变量与语句的抽象。面向对象的高级语言支持类与方法的抽象。唯一特别的是SQL,它支持各种关系,也就是数据表的抽象。而且,SQL有一门专门的数学,关系代数来描写这种表级抽象。
那么,未来的编程语言会向何方发展呢?我认为可以通过回顾历史,我们可以看到编程语言发展的脉络。大致说来,编程语言有三个历史阶段:汇编语言,高级语言,面向对象的高级语言。根据广为人知的公式:程序=算法+数据结构。我们来看看这三个阶段的特点,汇编程序=操作码+操作数;高级语言程序=语句+变量;面向对象的程序=方法+类。可以看出,三种程序最大的不同在于抽象级别。随着时代的发展,编程语言的抽象级别在不断变大。
下一步是什么,我认为就是抽象级别的进一步扩大。从面向对象的抽象走向表级抽象。即类似与SQL级别的抽象。和SQL语言不同的是,新的超级语言不只是一门描述数据和数据储存的数据语言,而是描述包括界面在内的一门描述系统的语言。
我已经实现了使用这种理念的通用代码生成器阵列,包括Java通用代码生成器光,Golang通用代码生成器仙童和Rust通用代码生成器莲花,这些代码生成器的官网请见:
Rust通用代码生成器:莲花: Rust通用代码生成器:莲花。为Java写成的Rust语言动词算子式通用目的代码生成器。代码生成物是rust 1.69环境。采用Axum 0.6.20,Tokio 1.32.0,sqlx 0.7.1数据库访问层和MariaDB, MySQL 8, PostgreSQL数据库。如果您熟悉这些通用代码生成器的使用就会发现,这三种代码生成器的驱动语言:SGS2超级语言非常相似,只是使用了不同的技术栈和不同语言的数据类型。甚至,这三种通用代码生成器的模板可以不加修改的使用语言兼容性生成不同的数据库后端。比如,您可以使用光的模板生成仙童的
Golang代码生成物和其配套的Nodejs前端。非常方便。而且这种SGS2超级语言是基于Excel数据表格的,非常直观,容易学习,可以为技术和业务人员所用。
如果您说这些通用代码生成器和流行的低代码平台有何异同?大的方面是一致的。不同之处在于,低代码平台是平台中心的,其技术的中心就是各自的低代码平台。而通用代码生成器是语言中心的。它的使命,是帮助程序员快速搭建程序骨架。所以它是以代码生成物后端的高级语言为中心的。当然,他对程序员在项目周期内全程,多次,迭代式的使用通用代码生成器进行了优化。但是,它的使命永远是程序员的瑞士军刀。