在大多数人的印象里,编程是幕后工作:写代码、跑测试、发版本,反馈以分钟甚至天计。但有一个圈子恰恰相反——他们把编辑器搬上舞台,当着观众的面写代码,回车一按,节奏与旋律立刻改变。本周,开源项目 TidalCycles 的官网重新出现在 Hacker News 的讨论区里,让「现场编程」(live coding)这种小众实践又进入了不少程序员的视野。
TidalCycles 是什么
TidalCycles(社区简称 Tidal)由音乐家兼研究者 Alex McLean 主导开发,是一套开源的现场编程环境。它的内核是用 Haskell 写成的「模式语言」:你用简短的表达式描述节奏与旋律的变换规律——叠加、切割、反转、按分母重组——解释器把这些规则展开为事件流,再交给 SuperCollider 的 SuperDirt 引擎合成声音。
像 d1 $ sound "bd bd*2 sd" 这样的单行代码,就足以定义一轨鼓点;改一个星号、套一层函数,音乐结构就随之变形。整个过程像即兴演奏:代码是乐谱,回车是琴键。对不想折腾本地环境的入门者,官方还维护了 JavaScript 重写的网页版 Strudel,打开浏览器就能出声。
从宣言到舞池
现场编程并非新事物。2004 年成立的 TOPLAP 社区发布了著名的《现场编程宣言》,主张让创作过程对观众可见,用屏幕上的代码取代黑箱式的「播放 set」。围绕这一理念逐渐长出了生态:视觉方向有 Hydra,教育方向有 Sam Aaron 的 Sonic Pi(曾被树莓派基金会带进课堂),Python 用户有 FoxDot,Clojure 用户有 Overtone。而由 Tidal 社区推动的 Algorave(算法锐舞派对)更是把这种实践推向了俱乐部舞池——台上的投影不是 MV,而是一行行正在被修改的代码。
Tidal 的独特之处在于「模式优先」。它不是让程序员去模拟 DAW 的时间线,而是提供一套可组合的代数:模式之间可以相加、相除、按概率扰动。这种抽象恰好击中程序员的舒适区——用组合子思考结构,用命名复用动机,改起来比重排 MIDI 轨道快得多。不少工程师正是从一段 Algorave 演出视频入坑,第一次体会到「代码的反馈回路可以短到以节拍计」。
放在当下的语境里,它还提供了一个反差点。当生成式 AI 把「一句提示词出一首歌」变成日常,现场编程强调的是反方向的价值:过程公开、每次修改都有出处,观众看到的不是模型的输出,而是创作者的即时判断。有意思的是,两者底层同样是算法——差别只在于,一个把决策交出去,一个把决策留在台上那双手里。
简短点评
TidalCycles 不会成为主流工具,也不需要。它的意义在于拓宽了「编程」这个词的边界:代码不只是搬运业务逻辑的苦力,也可以是即兴表达的乐器。对写惯了增删改查的开发者来说,它或许是一剂解乏的偏方——下次想换个脑子,不必再开一个 side project,打开 strudel.cc,敲一行 bd*4,声音会替你回答。