William Byrd on "The Most Beautiful Program Ever Written" [PWL NYC]
PapersWeLove在 YouTube 播放 ↗
字幕解读
William Byrd 先从 Scheme 中列表、符号、Lambda、环境和闭包逐步构造一个精简 Lisp 解释器,指出少数规则已能表达词法作用域、高阶函数和递归。随后他把解释语义写成 miniKanren 关系,反向执行同一关系来寻找满足输入输出约束的表达式与程序。程序合成因此成为对解释器语义的搜索和约束求解;其效率与可表达约束仍有限。
自动字幕 · 引文按字幕原文展示,可点时间戳回看片段。
内容要点
- 精简解释器把表达式、环境、变量查找与闭包应用压缩成少数核心规则。
- 把解释过程写成关系后,输入与输出都可作为未知量参与求解。
- 测试约束能支持合成和检查,但搜索效率、规格表达及运行时间约束仍是限制。
视频章节 6
- 五行程序与解释器之美
- Scheme 的列表和表达式
- 构造 Lisp 解释器
- 环境、闭包与递归
- 关系解释器和反向求解
- 约束驱动的程序合成
具体观点与证据 4
仅靠变量查找、函数构造与应用就能表达通用计算,数字与条件可另行编码。
讲者明确承认额外语法对效率和表达力仍有价值。
you only need these three lines that's turn complete actually解释器的环境记录变量绑定,扩展环境使闭包保留词法作用域。
演示以高阶函数表示环境,也可换成数据结构表示。
the environment is going to contain somehow associations between variables and values将解释器写成关系后,既可求输出,也可反求输入或补全缺失代码。
程序合成仍受搜索复杂度与给定约束质量影响。
even code or some mixture thereof we can put variables anywhere we want局部程序与测试不相容可被证明,即使搜索尚不能合成完整程序。
不相容不说明一定是代码错,也可能测试或底层解释语义错。
the partially specified code you've written is actually incompatible with one of your tests补充字幕原文 2
将关系解释器用于程序合成,可以从约束中推断缺失部分。
program synthesis so we have the ability关系语义把等式看作双向约束,而非只有由表达式到结果的单向计算。
there's no direction to that equal sign解读边界
演讲展示的是研究原型与示例,程序合成可能返回许多满足约束但不符合意图的程序;字幕说明运行时间约束当时尚不能直接表达,性能改进仍在进行。
相关视频与证据 1
等价计算能力的两种构造极简解释器与幻灯片都能承载通用计算
Byrd说明变量查找、Lambda与应用的极小核心已能表达通用计算;PowerPoint演示以动画磁带和可修改转移表模拟图灵机。两者揭示通用计算不依赖熟悉的表面语法或庞大语言。
William Byrd on "The Most Beautiful Program Ever Written" [PWL NYC]
仅靠变量查找、函数构造与应用就能表达通用计算,数字与条件可另行编码。
you only need these three lines that's turn complete actuallyOn The Turing Completeness of PowerPoint (SIGBOVIK) ↗
改变穿孔卡片位置可改变转移函数,从而模拟其他图灵机。
essentially imitate any transition function of any other touring machine▶ 4:07–4:17 · 观看片段适用边界 PowerPoint仍需人工点击推进;可计算性等价不意味着速度、内存或工程可用性等价。