视频提纲 · v4 · 调查 / 对比 / 规律 / 预测 · 2026-10-25

文本与树:结构化编辑与代码可视化的得失和未来

不按年代流水账,而按“每一波押注了什么、得到了什么、失去了什么”来组织;用一张对比表把三十个系统放在同一把尺子上,归纳出八条规律,最后在 AI 背景下给出八个带可信度的判断。

得 / 结构化编辑失 / 代码可视化留下 / 交汇
序章约 6 分钟

先拆开问题“文本还是树”其实是四个问题

七十年来很多争论没有结论,是因为把四件事混在一起谈。视频开头先给出这把尺子,后面每个系统都按它定位、比较。

① 存储

代码在磁盘上是什么:字符文本,还是语法树 / 数据库 / 哈希寻址的定义?

② 编辑

手的动作作用在什么上:字符与选区,还是节点与模板?

③ 呈现

眼睛看到什么:等宽文本、积木、连线图、表格、3D 城市?

④ 运行可见

能不能在写的同时看到值、轨迹与变化?

例:Scratch 是“树存储 + 节点编辑 + 积木呈现”;paredit 是“文本存储 + 节点编辑 + 文本呈现”;gofmt / Prettier 是“文本存储,但文本只是语法树的一种标准投影”;Python Tutor 只做第 ④ 项。

第一部分调查:五波尝试,每一波都押注了一个假设
第一波1971–1990

正确性优先:语法制导编辑器

押注只要编辑器不让你写出非法程序,错误就会消失。

Emily(1971)、Interlisp、Mentor、Cornell Program Synthesizer(1978–81)、Gandalf、Synthesizer Generator(1984)、Centaur、Pan

证据:Waters 1982 · Structure editor 词条

Xerox Alto,Smalltalk 的诞生地
Xerox Alto,Smalltalk 的诞生地Maksym Kozlenko · CC BY-SA 4.0 · Wikimedia Commons
Smalltalk-76 界面示意(重绘)
Smalltalk-76 界面示意(重绘)SUMIM.ST · CC0 · Wikimedia Commons
第二波1975–至今

绕开文本:图形与数据流语言

押注图比字更直观,程序画出来就能看懂。

VisiCalc(1979)/ Excel、Pygmalion(1975)、Prograph、LabVIEW(1986)、HyperCard(1987)、Max(1988)/ Pure Data(1996)、Unreal 蓝图、Node-RED

证据:认知维度 · CD 教程(Blackwell & Green)

LabVIEW 数据流框图
LabVIEW 数据流框图Labvi · Public domain · Wikimedia Commons
Pure Data 补丁
Pure Data 补丁Reduzent · CC BY-SA 3.0 · Wikimedia Commons
Unreal 蓝图:规模变大后的“面条图”
Unreal 蓝图:规模变大后的“面条图”Kuldhi · CC BY-SA 4.0 · Wikimedia Commons
第三波1990s–至今

形状即语法:积木编程

押注让拼不上的东西拼不上,新手就不会被语法挡住。

Etoys、Alice、Scratch(2007)、App Inventor、Blockly(2012)、Snap!、MakeCode

证据:Weintrop & Wilensky 2019

Scratch 3.0
Scratch 3.0Screenshot is own work, Scratch is by MIT and other contributors · CC BY-SA 2.0 · Wikimedia Commons
Blockly
BlocklyDave Braunschweig · CC BY-SA 4.0 · Wikimedia Commons
Snap!
Snap!DancingPhilosopher · CC BY-SA 4.0 · Wikimedia Commons
第四波1990s–至今

一模多视:投影式编辑与语言工作台

押注源代码是模型,文本、表格、公式、图只是它的投影;语言可以自由组合。

Intentional Programming(Simonyi,1990s–2017)、JetBrains MPS(2003–)、mbeddr、Lamdu、Unison、Darklang Classic(2017–2024)、Cirru / Calcit Editor(2012–2025,自动布局的树编辑器,按定义逐屏编辑、多端实时同步)及其 Canvas 实验 Hovenia Editor

证据:Berger et al. FSE 2016 · Darklang 状态更新 · Petro & Porubän 2024 · calcit-lang/editor · Hovenia Editor

Calcit Editor:表达式按块自动布局
Calcit Editor:表达式按块自动布局Cirru / calcit-lang · 项目 README 截图
Calcit Editor:定义依赖树
Calcit Editor:定义依赖树Cirru / calcit-lang · 项目 README 截图
Hovenia Editor:Canvas 渲染的树布局
Hovenia Editor:Canvas 渲染的树布局Cirru / calcit-lang · 项目 README 截图
第五波2005–至今

结构沉到文本底下

押注别换掉文本,在文本下面加一棵随时可用的树。

paredit(约 2005)、Coccinelle、gofmt(2009)/ Prettier(2017)、LSP(2016)、tree-sitter(2018)、Semgrep / ast-grep / Comby(结构化搜索与改写)、OpenRewrite(无损语义树,大规模重构)、difftastic(结构化 diff)、Mergiraf(2024,按语法树合并)、Cursorless

证据:Hazelnut POPL 2017 · Pantograph POPL 2025 · 结构编辑器清单

GNU Emacs(paredit 的宿主)
GNU Emacs(paredit 的宿主)Fossdd · CC BY-SA 4.0 · Wikimedia Commons
平行线索1947–至今

可视化的四次转向

可视化这条线也有自己的押注变化:从“画出结构”到“放映算法”,再到“俯瞰全局”和“看见运行”。

  1. 画结构1947–1997

    流程图、Nassi–Shneiderman 图、UML。结局:设计文档里活着,代码里没人维护——图与代码不同步。

  2. 放映算法1981–2010

    《Sorting Out Sorting》、BALSA、Tango、Python Tutor。结局:教学中长盛不衰,职业开发中少见。

  3. 俯瞰全局1991–2015

    Treemap、SeeSoft、CodeCity、Gource。结局:论文多、演示惊艳、日常使用少。Merino 等综述 181 篇 SOFTVIS/VISSOFT 论文,约 62% 没有任何评估。

  4. 看见运行2011–至今

    火焰图(2011)、调试器变量视图、覆盖率标记、notebook(Mathematica 1988 → Jupyter)、Code Bubbles / Code Canvas(2010)、Bret Victor 的演讲、Light Table、Glamorous Toolkit。结局:小而专的视图成了标配,宏大的“实时编程环境”多数停在原型。

证据:Merino et al. 系统综述 · Diehl 讲义 · Light Table

Nassi–Shneiderman 结构图
Nassi–Shneiderman 结构图Stefan Birkner (squizzz) · CC BY-SA 3.0 · Wikimedia Commons
排序算法动画
排序算法动画Simpsons contributor · CC0 · Wikimedia Commons
树图
树图KeyMetricSoft · CC BY-SA 3.0 · Wikimedia Commons
自动布局的调用图
自动布局的调用图Seb35 · CC BY-SA 2.5 · Wikimedia Commons
Gource:版本历史动画
Gource:版本历史动画Revansx · CC BY-SA 4.0 · Wikimedia Commons
CodeCharta:3D 软件地图
CodeCharta:3D 软件地图Roki68199 · CC BY-SA 4.0 · Wikimedia Commons
第二部分对比:把三十个系统放进同一张表
对比表视频中逐行展开

同一把尺子量所有系统

系统① 存储② 编辑③ 呈现④ 运行可见主要领域结局
VisiCalc / Excel单元格网格公式表格即时重算办公/财务/分析最大规模的终端用户编程
Cornell Program Synthesizer树节点/模板文本部分教学停用,思想被继承
Interlisp / paredit文本(S式)节点文本—Lisp 社区小众但长寿
LabVIEW图连线数据流图有测控领域标准
Max / Pure Data图连线补丁图实时音频/艺术领域标准
Scratch / Blockly树拖拽积木有入门教育大规模成功
JetBrains MPS模型投影混合—工业 DSL稳定小众
Unison哈希树文本→解析文本—通用仍在发展
Darklang Classic树结构(Fluid)文本有后端2024 年回到文本
Cirru / Calcit树快照(Cirru EDN)树编辑器 → Agent CLI自动布局积木 → 命令行视图热替换个人/小团队 Web 应用2025–26 年弃用树编辑器,保留树存储
gofmt / Prettier文本文本规范文本—通用普及
LSP / tree-sitter文本文本+结构命令文本—通用普及
Hazel树结构(带洞)文本样式实时研究/教学研究前沿
Python Tutor文本文本文本+堆栈图逐步教学教学常用
CodeCity / Gource文本—3D/动画历史分析/展示演示多、日常少
火焰图——层叠条形采样性能分析普及
Jupyter / Observable文本单元文本文本+结果实时数据/科学普及
OpenRewrite / Semgrep / Mergiraf文本规则化改写文本—大规模维护工业中普及
Haystack 等画布 IDE文本文本+AI无限画布—通用早期
Kiro / Spec Kit(规格驱动)文本+规格自然语言→AI规格/任务清单—通用2025 年兴起
DeepWiki 等 AI 文档图文本—自动生成文档与图—理解代码库2025 年兴起
Unreal 蓝图 / ComfyUI / n8n图连线节点图有游戏/AI 流程/自动化快速增长

读表的方法:凡是动了“① 存储”的方案,都要为整个工具生态(diff、合并、评审、搜索、复制粘贴、聊天里贴代码)付出重建成本;只动“② 编辑”和“③ 呈现”、存储仍是文本的方案,普及速度明显更快。这一点是第三部分第一条规律的来源。

第三部分规律:七十年里反复出现的八件事
规律 1文本的网络效应

文本是所有工具的公共接口:版本控制、diff、grep、邮件、论坛、代码评审,以及如今大模型的训练数据。改存储格式等于退出这个网络,要支付“生态税”。

案例:Darklang、Unison、Intentional Software 的经历
规律 2结构会下沉

成功的结构化不是取代文本,而是藏到文本底下:后台解析、前台仍是文本。格式化器本质上就是投影式编辑的胜利——文本成了语法树的规范视图。

案例:paredit → LSP → tree-sitter → Prettier
规律 3正确性与流畅性的拉锯

结构编辑追求“随时合法”,而人的思考大量发生在不合法的中间状态。谁能让“未完成”也有意义,谁就能缓解这对矛盾。

案例:Waters 1982、Berger 2016 的删除/选择问题、Hazel 的类型洞
规律 4领域决定成败

当领域本身就是流(信号、音频、着色器、数据管线)、用户不是职业程序员时,图形与结构胜出;通用编程中撞上规模天花板。

案例:LabVIEW、Max、蓝图、ComfyUI 对比通用可视化语言
规律 5新手红利不迁移

结构化界面降低入门门槛,但优势在转向文本后消失;它适合当入口,不适合当阶梯本身。

案例:Weintrop & Wilensky 2019
规律 6可视化要回答一个具体问题

日常使用的可视化都是“一个高频问题、零配置”:火焰图回答热点在哪,git 图回答分支怎么合,调试器回答变量是多少。宏大的全景视图常常没有人每天需要。

案例:Merino 等:62% 无评估;火焰图与 CodeCity 的对比
规律 7演示与产品之间的鸿沟

实时编程的演示极有感染力,但需要语言、运行时、编辑器三者同时配合,产品化成本巨大,多数停在原型或缩回研究。

案例:Bret Victor 的演讲、Light Table、Eve(2014–2018)、Dynamicland
规律 8思想约 15 年回潮一次

每当输入设备或交互范式变化(光笔、鼠标、网页、触屏、大模型),同一批想法会换个名字重来一遍,并带回上一轮的一部分成果。

案例:1960s Sketchpad → 1980s 语法制导 → 2000s MPS → 2010s 实时编程 → 2020s AI
第四部分AI 背景下:变量变了,结论会变吗
现状调查2023–2026

已经发生的六件事

  1. 2023–24
    大模型巩固了文本

    模型以文本训练、以文本输出。Darklang 明确把“代码生成的世界”列为放弃结构编辑器的理由之一。

  2. 2024–26
    两种相反的退出方式

    Darklang 移除结构编辑器,存储改回文本、接入 LSP;Calcit 在 2025–26 年弃用人用的树编辑器(文档理由是转向 LLM 生成代码的工作流),但保留树存储,把编辑改成给智能体调用的结构化命令,带 dry-run 与版本守卫。前者放弃了树,后者只放弃了“人手编辑树”。

  3. 2023–25
    智能体在后台大量使用结构

    用 tree-sitter 生成仓库地图挑选上下文,用语言服务器做跳转、重命名和诊断,用测试和类型检查做反馈回路。结构没有消失,它成了 AI 的工具。

  4. 2024
    类型洞成为 AI 的上下文

    Hazel 团队(OOPSLA 2024)让语言服务器告诉模型“洞”的类型和上下文,类型定义对补全质量影响最大,并提出给 LSP 加 ChatLSP 扩展。

  5. 2025
    约束解码进入代码生成

    PLDI 2025 等工作在解码时用语法和类型约束模型输出,显著减少编译错误。“生成过程只能产出合法树”——这正是 1970 年代语法制导编辑器的理想,换了一个执行者。

  6. 2023–26
    节点图在 AI 流程里复兴

    ComfyUI、n8n、Dify 等用连线图编排模型与工具,并开始出现由 AI 生成和修改节点图的助手(如 ComfyUI-Copilot)。

证据:Darklang · Calcit 结构编辑器文档 · Typed holes + LLM(OOPSLA 2024) · Type-Constrained Code Generation(PLDI 2025) · ComfyUI-Copilot

Node-RED
Node-RED1-Byte · CC BY-SA 4.0 · Wikimedia Commons
新方案调查2023–2026

AI 带出来的新尝试,以及它们在重复谁

把新方案放回历史坐标里看:几乎每一个都对应一个旧想法,只是执行者从人换成了模型。

新方案做了什么对应的旧想法变化在哪
规格驱动开发(Kiro、GitHub Spec Kit、Tessl,2025)先写需求、设计与任务清单,再由智能体生成和更新代码;规格成为主要编辑对象Intentional Programming 的“意图树”、文学化编程“意图”第一次有了能自动落地为代码的执行者
按语法与类型约束的解码、ChatLSP生成时只允许合法语法或类型,或把类型洞的上下文喂给模型1970 年代的语法制导编辑器、Hazel 类型洞约束作用在生成器上,人不再为“随时合法”付出粘滞度
智能体的结构化工具(LSP / tree-sitter 封装为工具、MCP 服务)重命名、跳转、按符号读取、结构化替换paredit、IDE 重构、结构编辑器的命令集命令的使用者从键盘变成智能体
AI + 确定性改写(OpenRewrite 配合 LLM、AI 生成 codemod)模型写改写规则,规则在无损语义树上确定地执行Coccinelle、程序变换系统规则的编写成本大幅下降,执行仍可审计
下一处编辑预测(Copilot NES、Cursor Tab 等)根据最近的修改预测下一处要改的位置和内容结构化重构中的“相关修改”传播不需要显式的结构模型,靠统计学习
画布 IDE(Haystack,2024)把函数放在无限画布上,按调用关系排列,AI 辅助导航与编辑Code Bubbles、Code Canvas(2010)布局与关联由 AI 自动维护
草图即程序(tldraw Make Real,2023)在画布上画界面草图,模型生成可运行的网页Sketchpad、RAND GRAIL、Pygmalion“画出来就能跑”第一次在通用场景可用
AI 生成的代码库文档与图(DeepWiki,2025)为任意仓库自动生成架构说明与图示,可追问SeeSoft、CodeCity 等全景可视化按需生成、能对话,绕开“没人维护”的问题
节点图 + AI(ComfyUI、n8n,及其 AI 助手)模型生成或修改节点图LabVIEW、Max/Pd图由 AI 搭建,人在图层面审阅
可塑软件(Ink & Switch,2025 文章)主张让用户借助 AI 改造自己的工具Smalltalk、HyperCard、Glamorous Toolkit“为自己造工具”的成本可能降到普通用户可承受

这些新方案大多还在早期,采用规模和效果缺少独立评估;视频中只描述它们做了什么、对应什么,不对效果下结论。

证据:Martin Fowler:SDD 工具比较 · GitHub Spec Kit · OpenRewrite LST · Moderne:LST + 生成式 AI · Mergiraf(LWN) · Haystack · tldraw Make Real · DeepWiki 介绍 · Ink & Switch:Malleable software · Excel LAMBDA

预测2026–2031

八个判断,各附可信度与观察指标

结构化编辑的“买家”从人变成 AI可信度 较高

历史上结构编辑失败的主因是人手编辑的粘滞度。当大部分修改由智能体发起,粘滞度的代价消失,而“只产出合法修改”的价值上升。结构化编辑原语(重命名、移动、提取、填洞)会以工具接口的形式暴露给 AI,而不是以快捷键的形式暴露给人。

观察指标:智能体工具集中 AST/LSP 操作的比例;约束解码进入主流产品
瓶颈从“写”转到“读”,可视化需求回升可信度 较高

AI 让生成变便宜,审核变成稀缺环节。需要的是回答具体问题的视图:这次改动影响了哪些调用者、行为差异在哪、为什么测试变了。正好避开了规律 6 的陷阱。

观察指标:代码评审工具中出现语义 diff、影响面图、执行轨迹对比
按需生成的一次性可视化可信度 中

可塑开发(Glamorous Toolkit)主张“为每个问题造一个检视器”,过去成本太高;AI 可以在几秒内为当前问题写一个专用视图,用完即弃。全景式可视化的“没人每天需要”问题因此被绕开。

观察指标:IDE/智能体输出中内联图表、自动生成的架构图被频繁使用
文本仍是交换格式,但更像“投影”可信度 较高

人和模型都读写文本,网络效应在 AI 时代更强。但文本越来越由格式化器、代码生成和约束解码产生,存储层面的“唯一真相”逐渐是树与类型信息,文本是它的规范视图。

观察指标:格式化与 lint 全自动化;仓库中手写格式差异趋近于零
“未完成的程序”成为一等公民可信度 中

智能体大量工作在半成品状态:留洞、占位、待实现。Hazel 式的“有类型的洞”可能从研究走向工业语言与工具协议。

观察指标:LSP 或主流语言增加对洞/占位的正式支持
领域节点图继续扩张,混合形态成为主流可信度 较高

粗粒度流程用图(人好审),细粒度逻辑用代码(AI 好写)。图中节点由 AI 生成和改写,人主要在图层面审阅。

观察指标:AI 流程平台用户规模;节点内嵌代码的比例
编辑对象上移到规格与意图可信度 中

规格驱动开发让人主要编辑需求、设计和任务清单,代码由智能体维护。这是 Intentional Programming 想法的回潮;它能否持久,取决于规格与代码长期保持一致的成本。

观察指标:规格文件在仓库中的比例;规格与代码不一致导致的返工报告
非文本存储的语言获得第二次机会可信度 低

Calcit 改由智能体通过结构化命令编辑树存储,说明这条路在个别项目中可行;但训练数据和工具生态仍以文本为主,能否推广还没有证据。

观察指标:模型对 MCP/工具化代码库操作的熟练度;此类语言的生态增长
视频结构三集,合计约 55–65 分钟

分集建议

  1. 上集 · 调查
    序章四维框架;五波尝试(每波“押注—得—失—留下”);可视化四次转向。约 22 分钟。动画:同一段代码在文本/树/积木/连线图之间变形;SeeSoft 与排序赛跑复刻。
  2. 中集 · 对比与规律
    对比表逐行展开;八条规律,每条配一个正例一个反例。约 20 分钟。动画:系统在“存储—呈现”平面上的分布图;粘滞度演示(同一修改在文本与结构编辑器中的步数)。
  3. 下集 · AI 与预测
    现状六件事;新方案对照表;八个判断与观察指标;结尾回到“文本还是树”。约 18 分钟。

已确认:三集;Cirru / Calcit 的关键尝试并入对比表、第四波和 AI 现状,与其他系统同等处理,只陈述可查证的事实。写稿时逐条核对原文,标“待核”的优先处理;Calcit 编辑器截图可由你提供或从仓库 README 引用。

附录

前史与配图素材

1947 年冯·诺依曼的流程图、1963 年 Sketchpad、1968 年 NLS 与 GRAIL 作为开场素材;Smalltalk 浏览器、积木与数据流的截图用于第一部分。

1947 年 Goldstine 与冯·诺依曼报告中的流程图
1947 年 Goldstine 与冯·诺依曼报告中的流程图Goldstine, Herman Heine, and John Von Neumann. · Public domain · Wikimedia Commons
Sketchpad(1963)
Sketchpad(1963)Scanned by Kerry Rodden from original photograph by Ivan Sutherland · CC BY-SA 3.0 · Wikimedia Commons
NLS 的鼠标与和弦键盘
NLS 的鼠标与和弦键盘Michael Hicks from Saint Paul, MN, USA · CC BY 2.0 · Wikimedia Commons
Etoys
EtoysOLPC user: Jacobolus · CC BY-SA 2.5 · Wikimedia Commons
App Inventor
App InventorFlorian Schäffer · CC0 · Wikimedia Commons
Pharo:Smalltalk 浏览器的今天
Pharo:Smalltalk 浏览器的今天Mhss · CC BY-SA 4.0 · Wikimedia Commons
参考来源

Structure editor(Wikipedia) · Waters 1982 · Berger et al. FSE 2016 · Petro & Porubän SLATE 2024 · Weintrop & Wilensky 2019 · Merino et al. 软件可视化评估综述 · 认知维度 · Darklang 状态更新 · Typed holes + LLM(OOPSLA 2024) · Type-Constrained Code Generation · ComfyUI-Copilot · Hazelnut · Pantograph · 结构编辑器清单 · Diehl 软件可视化讲义 · Light Table · Dynamicland · calcit-lang/calcit · calcit-lang/editor · cirru.org
图片:Wikimedia Commons,自由授权,作者与授权见各图说明。