通过数学变换而不是组装来构造软件
Nop Platform 是一个原创性很高的项目,它基于作者提出的下一代软件构造理论——可逆计算理论,从零开始构建。该项目包含一种新的脚本语言 XLang,这是世界上首个在语言层面明确定义领域结构坐标,并内置通用差量计算规则的程序语言。
XLang 建立在对程序语言本质的新理解之上:一门程序语言定义了一个程序结构空间,语言本身是该结构空间的构造规则。
主流语言研究大多将“语言”视为“句法、语义、类型系统”的三元组合,即便讨论多范式(如面向对象、函数式、异步、元编程),其核心仍停留在函数、表达式等具体元素的表达能力上。而 XLang 的切入点不同:它关注的是语言“能够构造出怎样的结构空间”,以及“结构之间如何复合与演化”,这是一种全新的研究视角。
一门程序语言所能创造的所有结构,以及这些结构之间所有可行的演化路径,共同构成一个特定的程序结构空间,所有可行的计算都在这一结构空间中发生。
XLang 之所以是创新的程序语言,在于它创造了一个新的程序结构空间,能够方便地实现可逆计算理论提出的 Y = F(X) + Delta 计算范式。尽管 XLang 可视为由 XDef、XPL、XScript 等多个子语言组成,但只有将它们作为一个整体,才能完整实现可逆计算的核心思想。
可以认为,可逆计算是为软件的结构空间补充“逆元”,从而引入更完备的代数化构造方式。
软件的早期探索者多为数学家,他们自然地运用抽象代数与逻辑工具。但随着软件规模扩大和应用普及,为降低认知与协作门槛,行业转向从常识中汲取灵感,发展出面向对象等范式。架构、设计模式等概念,本质上借鉴了物质世界的生产过程(如建筑、机械装配)。
然而,软件终究是逻辑世界的抽象产物。在物理世界中,构造复杂系统最有效的方式是“组装”预制零件;而在逻辑世界中,最强大的构造方式不是组装,而是“定义和应用变换规则”。例如,从房间内部移动到外部,在物理世界中必须通过门窗,而在抽象的逻辑空间中,只需将位置坐标从 x 变换为 -x 即可。
因此,在组件理论之后,下一代软件构造理论有必要重新回归并正视软件的抽象本质,引入更多关于抽象结构的直接运算。可逆计算正是这一方向上的基本尝试:它不再将软件视为由固定零件组装成的静态结构,而是将其视为一个可通过数学规则(特别是差量及其逆运算)进行自由变换与推导的动态代数结构。
任何针对演化的建模过程,都必然导向可逆计算的通用计算范式:Y = F(X) = (F0 + F1)(X0 + X1) = F0(X0) + Delta。
Nop Platform 目前是个人项目,预计难以发展为世界知名项目,但它在理论层面指出的方向,有望成为未来软件发展的一条必经之路。
