灵光 · 灵光 · · 国科智飞 Gavin

中间表示:你交付的是一幅画,还是一块碑?

同一个任务,画师交出一次性的画卷,刻碑人留下可查询、可续写的青石——一个关于「中间表示」的寓言:画的,是结果;刻的,才是资产。

江州城有两家铺子,做的是同一桩生意——给官府做「宗祠纪要」。每年开春,府衙要把上一年的田亩、税基、赈灾、人口增减、刑案、契约抄录成《江州府志》,发到下面十三个县。

这件事看着简单,其实要命:《府志》有十几个抄本,要发给十三个县;每个县收到后,会在抄本上做批注,添上本地独有的案例、人名、契约细节;每十年,所有抄本要汇总回府衙,重新做一次新府志;府志还要给新任知府看——他上任时手边只有上一任留下的抄本,要凭它做判断。

于是三件事决定了这份纪要的命运:它要能被复制,一份变十几份;它要能被修改,每个县都要往里加东西;它要能被查询,十年后新知府上任,要能从中查出「东街地契总数」这种问题。

第一家铺子,是南街画师沈半江。他是江州城画坊的翘楚,本事是一句话:「我给你一幅画。」

每年开春,府衙把去年的案卷、田册、税单一摞摞搬来。沈半江带上三个徒弟,用七天时间把这些案卷全部画出来——左边画「东街地契纠纷」的人物,右边画「赈灾粮仓」的山形,下面画「刑案犯人」的画像。画完,装成一卷《江州府志·图卷》。

这一卷画极美。山石楼阁、用色考究、笔触细腻。府衙拿到手里,当成艺术品;十三县收到画本,挂在议事堂的墙上,当成政绩。

一年做完,墙上一幅大画。

十年后,新知府上任。他要看「东街地契总数」。他去翻那幅画——翻不到。画里画着纠纷的人物、场景、判决,却没有一个数字。他要查「去年赈灾银两实际花在哪」——画里没有,赈灾画的是粮仓的形,没有粮仓的数。他要查「刑案犯人在押还是释放」——画里也没有,画着犯人受审的场面,没有结果。

新知府看完了十幅画,对江州城一无所知。

画是艺术品,是结果。它一旦完成,不可被查询、不可被再加工、不可被重新解读。

府衙发现这个问题后,做了一件顺理成章的事:再请沈半江来画一遍。沈半江说:「行,我从头画。」他得重新听一遍所有案卷——因为去年的画他不会存底稿,画完了,图就交付了。第二年,府衙又请他画,他又得听一遍。十年间,沈半江画了十卷图卷,每一卷都美,但每一卷都是孤本——他每一次都从头来。

十年后,第十一任知府想看「十年来江州地契纠纷的数量趋势」。沈半江说:「我画不出来了。因为我没有结构。十卷图卷都是『画』,我没法把十卷画加起来,告诉你趋势。画不能相加,画不能查询,画不能跨年比较。」

第二家铺子,是北街刻碑人罗一刀。他刻了三十年碑,本事也是一句话:「我给你一块版。」

府衙把案卷、田册、税单搬来,罗一刀不画。他把「东街地契纠纷」这件事用文字记下来:某年某月某日,纠纷双方、地契编号、争议面积、判决结果、归档年份——然后刻在一块青石碑上。碑上每一行字就是一个条目,每个条目有「日期、类别、编号、内容、结果」五列。十三个县各发一块碑——碑是同一块版的不同拓本。

府衙拿到这些碑,不挂墙上。他们把碑立在库房里。碑的正面是字,背面是字,每一行字都是结构化的。

第二年有新案卷,罗一刀不重做碑。他在旧碑上凿一行新字:找到「类别=地契纠纷」那一段,在最下面凿一行「今年,东街,新增地契纠纷一案」。

十年间,库房里始终只有一块碑,每一年都在碑上凿几行新字,每一行字都有结构。

第十一年,新知府上任,要看「东街地契纠纷数量趋势」。罗一刀说:「我带你看碑。」他带知府到库房,从碑上找到「类别=地契纠纷」那一段,十年一数:十年前两案、五年前五案、三年前七案、去年九案。趋势立刻出来了。要看「赈灾银两花在哪」——查「类别=赈灾」那一段,每一笔都标了支出项。要看「刑案犯人在押还是释放」——查「类别=刑案」那一段,最后一列就是处置结果。新知府对江州城了如指掌。

又过了十年,朝廷下令:《江州府志》要重新编修,发到全国,所有纪要格式必须统一,不只要图或碑,还要能出成书。

沈半江的图卷没用了。图是江州画师的画法,不能直接转成书。

罗一刀的碑,朝廷派来的编修官看了一眼,大喜:「你这一块碑,每一行都是结构化的。我用你的碑,可以直接转成书。把你每一行的内容摘出来,按朝廷的格式重排,三天就能出书。」

罗一刀的碑可复用、可转换、可再加工、可出版。沈半江的画,只能用一次。

后来江州城传下来一句话:「沈半江画的是《府志》,一次画成,一次看够;罗一刀刻的是江州府,年年加新字,年年可查,年年可再用。」

「画的,是结果。刻的,是江州。」

概念:中间表示

中间表示(Intermediate Representation, IR)是编译器、程序语言理论、数据库与 Web 服务共享的核心模式:在做「源到目标」的转换时,不直接从源到目标,而是先转成一种结构化的中间产物,再从中间产物转成目标。

LLVM IR、Java 字节码、WebAssembly、PostScript,以及 Markdown 的抽象语法树,都是 IR。它有四个特征:结构化,是数据而不是看完即弃的成品;可逆,能从它还原回源,也能从它转成任何目标;可再加工,能在它上面做查询、合并、过滤、聚合;可复用,同一份中间产物可以输出书、网页、报告、统计图。

它的核心哲学是一句话:你不直接生产结果,你生产的是可以继续被加工的中间产物。

故事里的映射

| 沈半江的画 | AI 直接生成的成品:图片、视频、PPT | | 罗一刀的碑 | 可继续编辑的中间产物:XML、SVG、Markdown、AST | | 碑上的五列结构 | 中间表示的核心特征:结构化、可查询、可聚合 | | 「年年凿几行新字」 | 在同一份中间产物上持续追加与演化,而非每次重做 | | 沈半江不存底稿 | 一次性输出:没有持久化的中间产物 | | 新知府翻不到数 | 成品不能被查询、统计、再加工,只能看 | | 朝廷编修官三天出书 | 同一份中间表示可以输出多种目标 | | 「画的是府志,刻的是江州」 | 出成品是一次任务;出中间产物是一个可被持续运营的对象 |

现实中的中间表示

给 AI 时代的企业

用 AI 交付时,值得多问一句:客户拿到的是「一张图」,还是一份他自己能改的文件?成品会被消费一次,中间产物会被反复使用。把交付物从前者换成后者,是 AI 落地从一次性演示走向可复用资产的分水岭。

画的,是结果;刻的,是可被持续运营的资产。


灵光 · 用一个故事讲清楚一个概念。