CORDISDSH 的心脏第 03 章 · 一页纸全书目录术语表读论文原文 ↗
第三章 · 一页纸

92 页论文,
压成一页

赶时间就只读这一章。一句话说清论文做了什么,再给你三句口诀、五张字据,以及它自己承认还没证明的部分。

约 5 分钟 · 上一章 02 问题 · 下一章 04 思想一 · 回执

题图92 页,一页一页翻过去。

一句话

论文把编程语言理论里两个老概念,效应和反效应,从「编译时检查」搬到了「运行时管理」。于是组件可以在程序运行中装上、拆下、互相依赖,既不留残渣,也不惊动别人。

这两个词听着玄,其实一句话就能分开:效应是程序对世界做了什么,反效应是世界得先给程序什么。一个管改动,一个管依赖。它们在理论界早就有,但一直只用在编译时、只管写死的代码。论文的新意,是让它们管住运行中来来去去的组件。

图 3.1 · 92 页长什么样不碰公式也能读
第 3 章 · 两个机制第 9–30 页 · 22 页

可逆效应、响应式反效应、把两者统一的语境范式、观察等价、怎样做到互不干扰。全书最核心的一章。

本书在 04–06 三个思想 讲它 →
点色块看每章讲什么。只想读原文又怕公式:先读第 1、5、6 章,一共 23 页。

五项贡献,对应本书五章

论文的贡献 一句话 本书
可逆效应 每个改动当场附带撤销办法,由运行时保管 04 回执
响应式反效应 依赖写成清单,环境一变就对照,自动上岗或歇业 05 插座
语境范式 所有改动和依赖都走同一本总账,由此互不干扰 06 一扇门
动态组装演算 把前三样合成「组件」,证明整个系统一起跑也成立 07 一生
Cordis 把这套理论写成能用的框架,并在 Koishi 上验证 08 落地

三句口诀

  1. 01每个改动,当场交出撤销办法。时间 · 拆得干净 →
  2. 02每个组件,进门先交需求清单。空间 · 接得稳 →
  3. 03所有事情,都走同一扇门。把前两句拧在一起 →
背下这三句,就带走了论文的骨架。后面几章,是把每一句放大讲透。
图 3.2 · 论文自己的比喻

插上,就是执行;拔下,就是撤销

论文第 22 页有一句很朴素的话:装上一个组件,等于执行它的效应,好比插上插头;卸下一个组件,等于撤销它的效应,好比拔下插头,而且不影响其他还在跑的组件 p.22。

本书的两个比喻就从这里来:时间这道题,想成「回执」;空间这道题,想成「插座」。

五张字据:它到底证明了什么

论文用了 26 页公式,证明一整个系统在任意装卸之下仍然成立。结论是五条性质,按原文第 4.3 节的顺序:

性质 意思 详见
保持 不管怎么装卸,系统每一步都处在合法状态,账始终对得上 07
时间可组装 拆掉一个组件,环境回到它来之前的样子 04
空间可组装 组件只在依赖齐全时上岗;只有给它供货的那一位真换了人,它才重新上岗 05
进展 系统不会卡死在半路,「等别人先走」的护栏总会放行 p.37 07
汇聚 中间怎么折腾都不留痕迹,结局只看最终配置 p.51 07

证据,和它自己承认的缺口

证据来自 Koishi:四年多、4000 多个社区插件 p.69。控制台里停用一个插件,它的改动当场撤回;开发时改了代码一保存,插件原地重载,其余部分的缓存和连接都还在。Koishi 的网页控制台本身又是另一个独立的 Cordis 应用,跑在浏览器里,说明这套模型不挑运行环境。

缺口论文自己写得很清楚 p.70:只在一个生态、一种语言(TypeScript)上验证过;是观察,不是和其他架构的对照实验;开销有多大、对开发效率有多大帮助,都还没量化。另外两条,后面会反复出现:撤销函数写得对不对,框架不检查,靠作者 p.59;已经发出去的消息、写出去的文件,撤不回来,只能补偿 p.71。

还有个版本细节,论文自己注明了:Koishi 跑的是上一代 Cordis(文中称 v3),论文讲的是新一代 v4,两代的核心组合模型相同 p.69。

带走这一句

效应管时间,反效应管空间,语境把两者拧成一股;组件只是三者的合体。

我在读论文 A Programming Paradigm for Spatiotemporal Composability(arXiv:2608.25512,Cordis 框架)。
请用我的项目举例,分别说明:
1. 我的项目里哪些操作算「效应」(对外部做的改动),它们现在有没有对应的撤销办法;
2. 哪些模块之间有「反效应」(依赖),现在是怎么声明的;
3. 有没有绕开统一入口、直接改全局状态的地方。