Post
Move Source Language 比 Move IR 更像正常编程语言
Move 走出 IR 形态后,关键变化不是语法好看了,而是终于开始具备更正常的语言体验和生态入口。
Libra 的 Move source language 要出来时,我粗略和早期的 Move IR 对比了一下,最大的感受不是“语法终于顺眼了”,而是它开始更像一门正常可用的编程语言了。
早期 Move IR 给人的一个很强烈感受,是底层语义暴露得太直接。
比如变量使用前,经常要显式写 move(x) 或者 copy(x)。这种设计当然有它的理论意义,因为 Move 想把资源语义、线性约束这些关键性质明确放到语言表面。
但从开发者体验上说,这种负担太重了。它会让很多本来应该聚焦在业务抽象和接口设计上的注意力,被迫消耗在一层过于细碎的语义操作上。
Move source language 往前走的一大步,就是把这部分负担收回去,让语言自己承担更多静态分析和推断工作。
这带来的直接结果是:开发者终于可以更自然地写代码,而不是时刻像在和一门暴露中间表示的语言打交道。
另外一个重要变化,是静态方法如果第一个字段是某个 struct,它就可以更自然地表现成这个 struct 的实例方法。
这件事看起来像语法糖,但其实影响不小。因为一旦语言在组织方法和类型关系上更自然,就更容易往更高层的接口抽象走。
比如要表达类似 ERC20 这样的接口模式,或者更复杂的资源操作抽象,如果语言层没有把这些基本组织方式铺平,上层抽象会非常拧巴。
所以我会觉得,Move source language 的进步,本质上不是“把 IR 包装得更好看”,而是让语言从“暴露核心机制”往“支持真实开发抽象”迈出了一步。
这一步很关键。因为智能合约语言最终要服务的不只是虚拟机设计者,也要服务真正写业务逻辑、抽象接口、维护系统的人。
原微博中的媒体
