Pluralistic:CARDiac、语法高亮、查看源代码与氛围编程Pluralistic: CARDiac, syntax coloring, view source and vibe code (03 Jul 2026)
作者探讨了编程语言中不断升级的抽象层级对开发者权力、责任和代码保真度带来的复杂影响。文章将“语法高亮”和“查看源代码”等基础概念与当下流行的“氛围编程(Vibe Code)”进行对比,反思了现代编程工具的演变。此外,还简述了版权巨魔败诉、住房补贴政策等近期社会与时事热点。
今日链接
CARDiac、语法高亮、查看源代码与凭感觉编程(永久链接)
在20世纪70年代中期,我爸爸——当时还是一位初露头角的计算机科学家,后来成了一名数学老师——把我的第一台电脑带回了家:CARDiac,这是一台图灵完备的、全硬纸板制作的纸模型计算机,你可以在上面编写并执行程序:
https://en.wikipedia.org/wiki/CARDboard_Illustrative_Aid_to_Computation
CARDiac 代表“计算纸板教学辅助工具(CARDboard Illustrative Aid to Computation)”,它于1968年在贝尔实验室(Bell Labs)诞生,旨在向高中生传授计算机的工作原理。我当时离上高中的年纪还差得远(我想我当时在上三年级?),但 CARDiac 让我大开眼界。在此之前的一年,我接触过一台电传打字终端和声学耦合器,让我能操作多伦多大学的一台 PDP 机器,从那以后我就对计算机的各种可能性产生了无尽的痴迷。我编写简单的 BASIC 程序,与 ELIZA 聊天,给其他系统用户发消息,每次敲击一个按键,这一切全都记录在纸上(该终端没有屏幕,只有一台打印机,我们把我妈从幼儿园教室带回来的1000英尺长的纸卷塞进终端里,然后我再把这些纸卷回去,这样她就能把它们放回洗手间给孩子们擦手用)。
与计算机实时交互非常吸引人,但直到我组装并使用了 CARDiac,这一切才在我的脑海中豁然开朗。有了 CARDiac,你可以用纸笔编写简单的程序,然后按照指令,将代表数据的纸制令牌移入和移出代表内存单元和累加器的各种插槽。电子计算机所做的全部工作,无非是使用微小的晶体管,每秒数以百万次地重复这些粗糙的机械操作。当然,所有这些动作都是肉眼无法观察到的。如果你有一块非常灵敏的万用表和一台非常好的显微镜,可以想象你能够间接地观察到这场复杂的“舞蹈”,但这仅限于非常早期的处理器,而且前提是你必须大幅度降低它们的运行速度。
很久以后,我学到了一个词来形容我从 CARDiac 中获得的东西:直观性(legibility)。我和 CARDiac 一起组成了一台可以工作的数字计算机,由我来代替物理法则,推动电子在微芯片无尽的迷宫中穿梭,就像弹球触发各种发出哔哔声和嘟嘟声的弹簧缓冲器一样。尽管我们执行的运算极其简单(1加1就算得上一项大工程!),但执行这种计算的物理过程赋予了我一种 Fingerspitzengefühl(“指尖直觉”):
https://en.wikipedia.org/wiki/Fingerspitzengef%C3%BChl
这在后来的岁月里让我受益匪浅。直到今天,当我想起我的计算机时,我有时仍会想象那些小硬纸板卡片,在我那台纸板做的 CARDiac 的缝隙中穿梭进出。这种意象令人感到无比安心。无论我与指尖下那数以十亿计排列的纳米级晶体管之间隔着多少层抽象,它们都在执行着我多年前在童年书桌上煞费苦心完成的那些熟悉操作。
(这也是让《Science Comics Computers: How Digital Hardware Works》成为一本如此惊艳的儿童读物的诸多原因之一!通过展示计算机的操作是如何由可以表示为物理开关的简单布尔逻辑构建而成,这本漫画发挥了与我从 CARDiac 中获得的相同的“清晰化”魔力:)
https://pluralistic.net/2025/11/05/xor-xand-xnor-nand-nor/#brawniac
在我体验 CARDiac 后不久,我爸爸带回家一台 Apple ][+,它附带了一张原理图,以一种让我感到视觉震撼的方式揭示了这台机器的内部工作原理,尽管它远不如 CARDiac 那样容易理解:
https://downloads.reactivemicro.com/Apple%20II%20Items/Hardware/II_&_II+/Schematic/Apple%20II%20Schematics.pdf
(至少对我是如此。但对于传奇硬件黑客 Andrew "bunnie" Huang 来说,这是一段旅程的起点,这段旅程使他成为了世界上最顶尖的逆向工程大师和科学传播者之一:)
https://pluralistic.net/2026/01/09/quantity-break/#so-many-chips
Apple ][+ 刚开箱时能做的非常有限。它自带了几张软盘的演示程序,我们又在当地的计算机商店买了一些,但我最终在那台机器上使用的大多数程序,都是我亲自从街角商店买的杂志里敲进去的(我把买杂志的预算一半花在了《Cracked》、《Mad》和《Crazy》上,另一半花在了满是 BASIC 程序清单的计算机杂志上)。
逐个按键地敲入程序,是另一种培养“指尖直觉”(Fingerspitzengefühl)的练习。我打字并不熟练,所以进度很慢,当然也会犯很多拼写错误。更重要的是,此时的 BASIC 已经分化成了好几种方言,因此,即使是一个一字不差敲进去的程序,在针对这台计算机自带的 BASIC 版本进行适配之前,也可能无法运行。要让一个程序在我的计算机上运行起来,需要我磨炼打字技能,但更重要的是,它锻炼了我解决问题的能力。
经过几个月的折腾,我从基本原理出发(重新)发明了调试器,想出了许多用于识别和解决程序错误的小技巧和门道(其中许多效率极低)。在后来的岁月里,我有很多机会去使用由专业程序员创建和维护的真正的调试器,他们遗忘的代码知识都比我这辈子能学到的多,而我当初笨手笨脚地尝试构建他们工具的个人版本,赋予了我一种通过其他方式无法获得的自信和直觉理解力。弄清楚对调试器的需求,然后自己动手造一个(粗糙、低效的)调试器,让所有的调试器对我来说都变得更加通俗易懂了。
我认为“清晰易懂性”(legibility)是一个被低估的特质。如果一个系统对你来说是清晰易懂的,那么你就拥有了一个绝佳的基础,去理解它、改进它,并在它出故障时让它重新运转起来。
有一个老笑话说:“物理是应用数学,化学是应用物理,生物是应用化学”(我也听过以“数学是应用哲学”开头,一直到“社会学是应用生物”等版本)。虽然这并不完全正确,但其中蕴含着深刻的道理:我们通过将复杂的现实包裹在抽象层中来理解和操纵它,这些抽象层就像一层光滑、宁静的薄膜,带有坚固且易于抓握的把手,将一台翻滚、运转、震动的机器封装其中。你可以使用物理工具来做化学研究,但化学家几秒钟就能完成的计算,你可能需要花上好几个小时(就像用 CARDiac 计算 1+1 要花上一辈子一样)。
尽管如此,生物学家有时需要思考化学过程,化学家有时需要从物理层面思考相互作用,而物理学家有时需要做数学计算。薄膜和把手是必不可少的,但有时你必须拆开密封的包装,直接检查和操纵它的内部结构。解决问题、改进和维护都需要在抽象层之间上下穿梭的能力,以便找出该把探针放在哪里,该在哪里进行干预。
这就是“可读性(legibility)”发挥作用的地方。与物理过程的互动能改善你的心智模型。在《Broad Band》(一部关于计算机领域女性的权威历史著作)中,Claire Evans 谈到,第一批程序员是那些从事物理连线这种“非熟练”劳动的女性,她们培养了强大的“指尖直觉(Fingerspitzengefühl)”,对机器的运行拥有极高保真度、跨越抽象层的心智模型,以至于她们成为了世界上最优秀的程序员和调试员:
https://pluralistic.net/2021/02/13/data-protection-without-monopoly/#broad-band
我早期的编程冒险经历之所以如此深刻且具有教育意义,是因为我在 Apple ][+ 上交互的几乎所有程序都是用 BASIC 编写的(不仅包括我敲进去的那些,还包括演示软件以及我们购买的大部分商业软件)。这意味着我可以获取我正在使用的任何程序的代码清单,揭开薄膜查看底下的机械结构。我甚至可以用我的玩具调试器费力地追踪该程序的运行操作。这也是一种可读性:在运行代码的效果和指令本身之间切换的能力(然后在大脑中将这些指令映射为 CARDiac 中纸板代币的移动)。
这种可供性(affordance)后来在早期的 Web 上再次出现,这要归功于每个浏览器内置的“查看源代码(View Source)”功能,它就像是薄膜上的魔术贴搭扣,将渲染后的网页与其底层指令分隔开来。在我作为 Web 开发人员的早年岁月里,我复制、粘贴、修改、探测和追踪 HTML 的方式,对于那个敲入 BASIC 程序并拆解电脑上商业软件的年幼的我来说,是再熟悉不过的了。
我曾在哪里读到过,发明 CARDiac 的贝尔实验室(Bell Labs)科学家们曾担心,由于晶体管的出现,下一代程序员将无法理解程序运行时展开的物理和物质过程,这意味着可读性、直觉和“指尖直觉”的丧失。我现在找不到出处了,但这让我记忆犹新,因为 CARDiac 是保存这些美德的完美方式。
正是出于这个原因,现代计算机科学课程包含了一些芯片设计的内容(就像化学家学习物理,生物学家学习化学一样)。但是,有许多程序员——他们比我曾经或将来都要优秀——是自学成才的,他们从未接触过 CARDiac,也没有深入思考过芯片设计。他们在不同的抽象层工作,以不同的方式解决不同的问题。也许他们可以通过摆弄 FPGA 来提升自己的技艺,但即使是最高明的工匠,也总有办法去完善并不断提升自己的手艺。
同样地,有许多程序员——比我曾经或将来都要优秀——他们的起点是比电传打字机或 CARDiac 更高的抽象层。也许他们是从浏览器的“查看源代码”开始的,通过拆解别人的 Javascript 来创建奇特的各种 Myspace 定制效果。也许他们调整了 Minecraft 中的可编程方块。也许他们修改了 Scratch 游戏。又或者,他们使用 Applescript、Hypercard 或 Visual Basic 录制宏来自动化日常任务,随后为了进行微调而打开了宏录制器生成的源代码。
无论你是从 Stack Overflow 粘贴源代码,还是在 Excel 中录制宏,你只需一步操作就能揭开表层,暴露出底下的代码。借助现代互联网、Wikipedia 以及无尽的教程视频,你只需再迈出一步,就能穿透高级代码,深入其下的代码,以及再下一层的代码,一路向下直达裸机。
这就引出了“氛围编程”(vibe coding)。正如我所写过的,为生产环境编写代码与编写解决自身问题的“个人软件”有着天壤之别。无论那段代码有什么缺陷(因为你不是熟练的程序员),都会因为你是工具的制造者这一事实而得到弥补(这意味着你的需求没有在程序员的理解过程中被有损过滤):
https://pluralistic.net/2026/06/15/vernacular/#hypercardian
能解决你问题的代码,即使你不知道它是怎么运作的,即使它在几年后会崩溃,即使没有其他人能维护、扩展或调试它,也无可厚非。个人软件与那些供他人使用和维护的软件有着本质的区别:
https://pluralistic.net/2026/07/02/canonization/#operate-iterate-improve
更高层级的抽象是必不可少的。在 CARDiac 的缝隙间移动标记是一项很有意义的练习,但最终你会想要做些比一加一更实质性的工作,因此你需要将计算机制封装在一个带有易于掌握的把手的外壳中(同时心里清楚,如果有必要,你随时可以打开这层外壳)。
你生成的自动化代码(宏、粘贴的 Javascript、Minecraft 方块)越多,现成的预制组件让你失望的可能性就越大。到了那个时候,你就有了手段、动机和机会去打开外壳,开始摆弄它的内部结构,而每一次这样做,你都更有可能产生顿悟,从而提升你对整个系统的掌控力。
自动化代码——无论来自 LLM、“查看源代码”、Stack Overflow 还是宏记录器——都处于漏斗的顶端。进入漏斗的许多人(甚至是绝大多数人)都不会顺着抽象的滑道进一步滑下去。他们会解决自己的问题(这本身就是一种美德!)然后继续前行。但是,我们在漏斗顶端聚集的人越多,我们的文明就越有机会培养出另一名熟练的工匠,他们能够理解并改进、迭代和修复我们其他人使用的代码。
嘿,看看这个(永久链接)
客体永久性(永久链接)
#20年前 真正的选举可以从真人秀投票中学到什么 https://henryjenkins.org/2006/07/democracy_big_brother_style_1.html
#20年前 资深纸媒记者谈被忽视的受众群体 http://citmedia.org/blog/2006/07/03/guest-posting-is-media-performance-democracys-critical-issue/
#10年前 最卑劣的版权流氓之一被吊销律师执照 https://fightcopyrighttrolls.com/2016/07/03/prendas-hansmeier-stipulates-to-suspension-of-his-law-license/
#10年前 马其顿的“色彩革命者”向政府大楼和纪念碑泼洒颜料以反抗国家机器 https://globalvoices.org/2016/07/03/defying-police-harassment-the-macedonian-colorful-revolutionaries-continue-to-chant-freedom/
#10年前 特朗普和英国脱欧就像彩票:越不切实际越好 https://www.irishtimes.com/news/world/europe/fintan-o-toole-brexit-and-the-politics-of-the-fake-orgasm-1.2707398
#10年前 美国低收入家庭每月获得 0.08 美元的联邦住房补贴;最富有的 0.1% 群体则获得 1,236 美元 https://web.archive.org/web/20160702151008/https://www.thenation.com/article/who-benefits-most-from-housing-subsidies-the-wealthy/
#5年前 未来是对称的 https://pluralistic.net/2021/07/03/beautiful-symmetry/#fibrous-growth
#1年前 特朗普不会保护工人免受强迫劳动 https://pluralistic.net/2025/07/03/states-rights-trumps-wrongs/#mamdani
即将出席的活动(永久链接)
近期出席的活动(永久链接)
最新著作(永久链接)
即将出版的著作(永久链接)
版权页(永久链接)
今日主要来源:
正在撰写:《后美国互联网》(The Post-American Internet),《屎化》的续作,讲述既然特朗普已经毁了美国,我们其他人将如何拥有一个更美好的世界。已完成第四稿。已提交给编辑。
本作品——不包括任何连载小说——采用知识共享署名 4.0(Creative Commons Attribution 4.0)许可。这意味着你可以以任何你喜欢的方式使用它,包括商业用途,前提是你必须将其归属于我(Cory Doctorow),并包含指向 pluralistic.net 的链接。
https://creativecommons.org/licenses/by/4.0/
引言和图片不包含在此许可内;它们基于版权的限制或例外规定,或基于单独的许可而包含在内。请谨慎使用。
如何获取 Pluralistic:
博客(无广告、无追踪、无数据收集):
Pluralistic.net
订阅邮件(无广告、无追踪、无数据收集):
https://pluralistic.net/plura-list
Mastodon(无广告、无追踪、无数据收集):
https://mamot.fr/@pluralistic
Bluesky(无广告,可能有追踪和数据收集):
https://bsky.app/profile/doctorow.pluralistic.net
Medium(无广告,设付费墙):
https://doctorow.medium.com/
Tumblr(大规模、无限制的第三方监控与广告):
https://mostlysignssomeportents.tumblr.com/tagged/pluralistic
“当生活给了你 SARS,你就去酿撒尔沙(sarsaparilla)” ——乔伊·“手风琴男”·德维拉
请仔细阅读:阅读本声明即表示,您代表您的雇主同意,永久免除我因与您的雇主及其合作伙伴、许可方、代理人和受让人缔结的任何及所有未经协商的协议、许可、服务条款、拆封协议、点击协议、浏览协议、保密协议、不披露协议、竞业禁止协议和可接受使用政策(统称“虚假协议”)而产生的一切义务与权利放弃,且不影响我既有的权利与特权。您还须声明,您有权代表您的雇主免除我受任何“虚假协议”的约束。
ISSN:3066-764X
需要完整排版与评论请前往来源站点阅读。