在地球之上、元宇宙之外,有两块神奇的空间,一块是位于美国伯克利的 Dynamicland,另一块是即将坐落于中国深圳的 Dynamicland。2026 年 6 月 17 日,我有幸受邀观摩了 Dynamicland 工作坊的 Demo Day。虽然没有深度参与工作坊,但仅仅是在现场观看 Bret Victor 和各位 Author 的演示,就已经足够颠覆想象了。其间我经历了好多次魔法一般的体验,有太多值得回味之处。这篇笔记是一份粗糙的记录,目的是留下一些线索,以防遗忘。

此前我对 Dynamicland 的了解不多,看过它发布的一段介绍视频(🔗https://dynamicland.org/2024/Intro/),从中知道了一个相关的概念,叫公共计算(communal computing)。说实话,当时感觉有些抽象。恰好我这几天读了一些关于个人计算(personal computing)的历史,直到我带着对个人计算的认识来到 Dynamicland 空间,才第一次理解到公共计算这个想法的意义。
1940 年代末至 1950 年代初,计算机刚被发明出来。当时的计算机体型巨大,光是主体部分可能就要占掉一整层楼的空间。相比之下,操作员的控制室仅仅是一个小房间。他们有时候在控制台前工作,有时候需要进到计算机里面调试 Bug。

直到 1973 年 3 月,世界上第一台真正意义上的个人计算机才被设计制造出来。它叫 Alto,诞生在 Xerox PARC 实验室。Alto 已经小到可以放在桌面上,这是仅从外形上就能看出的变化。使用者可以坐在桌子前,通过鼠标、键盘、图形显示器跟它交互。

Alto 停留在实验室里,没有被推向市场。后来 Xerox PARC 迎来了一位访问者,名叫乔布斯。PARC 向他展示了三样东西:面向对象编程(OOP)、图形用户界面(GUI)和计算机网络。他只看到了其中的图形用户界面(🔗https://www.youtube.com/watch?v=BFlop4sP8Os),并把这个想法「借」走了。注意,乔布斯到 PARC 的时候,看到的不是「想法」,甚至不是「原型」,而是一台已经造出来、能实际工作的个人计算机。后来者比尔·盖茨说,他也从 PARC 那里「借」了一些想法。再后来的故事已经为大众熟知了,即 1980 年代爆发的个人计算机革命。
值得一提的是,Xerox Alto 并不是 Alan Kay 心目中个人计算的理想形态。他想要设计一台笔记本大小的便携式个人计算机,只是限于当时的技术条件,没能实现。所以,Xerox Alto 还有一个别名,叫「过渡期的 Dynabook」。

快进到今天,形似 Dynabook 的平板电脑已经随处可见,在它之前先普及的是尺寸更小的手持计算设备,也就是至今仍主导着消费市场的手机。尽管我们的现代生活中充斥着各种形态的计算机,Alan Kay 仍然认为「计算机革命尚未发生」。因为计算机并没有解放人的创造力,反而把每个使用者都圈在一个圆宇宙里:手——手机——屏幕——眼睛——大脑——身体——手。计算机革命不仅尚未发生,似乎还走进了一条死胡同(dead end)。
以上仅仅是对个人计算历史的极其粗线条的描绘,不过这些背景知识足够了。
我去参访的 Dynamicland 还只是一个为了工作坊临时搭建起来的空间,不是正式版。空间中摆着一些桌子,桌面上铺着白布,每个桌子上方都有一台摄像机和一台投影仪,由支架撑起。到了正式版,这些摄像机和投影仪可能会安置在天花板上,人走进空间后,其实无法感知到它们。不过就目前的形态来看,Dynamicland 的样子已经与之前提到的计算机都不一样了。摄像机可以看作它的输入设备,投影仪是输出设备,铺着白布的桌面就是它的桌面,既是字面意义上的桌面,也是真正意义上的桌面。而个人电脑里的桌面,只是虚拟的假桌面。

我看到这些设备,冒出一个看似有些蠢其实还挺值得回味的问题,我问 @Lounsen:这一组组设备就对应一台台计算机吗?答案是,这一组组设备不是独立的计算机。因为它们连接着同一个操作系统,互联成一个整体。也就是说,整个房间可以看作一台计算机。隔壁房间也算在内。只要部署了相应的设备,整层楼、甚至整栋楼都可以看作一台计算机。
在这里,Dynamicland 与 MIT 在 1951 年建造的 Whirlwind 计算机形成了遥远的呼应:Whirlwind 自己的身体占据着大量的建筑空间,它是空间的内容;而 Dynamicland 的计算设备嵌在建筑空间里,它们是空间的一部分,Dynamicland 指的不是某台计算机,而是这个被计算改造过的物理空间。它是一种供人类活动的环境,一种媒介。
Dynamicland 与个人电脑、平板电脑、手机也有着根本的不同。回顾一下前面提到的这些个人计算设备,你会发现它们都有一块屏幕,使用者要么坐在屏幕前,要么手持设备把屏幕凑到眼前,而且往往是独自一人对着它。这些设备的体积确实变小了,不再占据大量物理空间,可它们占据的是人的心智空间。一屏障目,不见泰山。使用者孤身一人被固定在屏幕前,心智又被这块屏幕占满,这两点或许正是个人计算走进圆宇宙这条死胡同的主要原因。
Dynamicland 是一个公共空间(communal space),公共空间最基本的含义,就是它可以容纳很多人。你不必独自长时间被钉在固定的位置上,也不必被迫持续盯着一块屏幕。你可以和很多人一起在同一个桌面上工作,可以随意在空间中移动,不同的人也可以在不同空间的桌面上分头协作。这一切都发生在物理空间,而不是虚拟空间,因此 Dynamicland 里的每一个人都是具身存在(embodied being)。
具身(embodiment)不能狭义地理解成我有我的身体,你有你的身体,两具身体之间可能会有一些互动,这本质上跟一个人坐在电脑前没有区别。无论是你的身体还是我的身体,都无法孤立地存在。我们都置身于同一个媒介之中,因这媒介而彼此相连。因而 Dynamicland 是一个媒介,而不是另一台计算机。这一点听起来或许有些抽象,但只要你走进 Dynamicland 的空间,就能切身地感受到它的独特之处。


Dynamicland 作为一种新媒介,真正改变的不只是计算机的形态,更是人与机器、人与空间、人与环境,乃至人与人之间的关系。
我们借助界面来更具体地理解这些关系。
界面(interface),字面意思就是 face 与 face 之间,也就是面对面。而真正意义上的面对面,只有在现实的物理空间里才能实现。人们一旦身处同一个公共媒介之中,彼此的交流就更容易发生。比如一张桌面,就不只是某个人的工作台,还是一个促进人与人交流的场所,因为我们都在同一张桌子上(we're on the same table)。此外,在 Dynamicland 里与他人交流时,公共媒介可以为对话提供大量的共享上下文。Dynamicland 的公共性决定了它并不是一处孤立的空间,而是始终与更大的社会空间相连,也有能力孵化并改变一种文化。
对于 Dynamicland 来说,机器、空间、环境已经基本融为一体,可以放在一起来看。我们也可以把 Dynamicland 与个人计算机做个简单的对比,分以下两个方面来说:
一、人与环境可以发生互动的场所。人与手机、平板、个人电脑的互动只发生在屏幕上。而 Dynamicland 首先是一个物理环境,其中所有的物理对象本身都可以互动,而且与它们互动得到的反馈永远是最真实的,你不需要在数字环境里模拟这些互动的效果。其次,Dynamicland 里可以布置很多桌面,只要是摄像机和投影仪能覆盖的平面,都可以当作桌面,而且不必是水平的。最后,也是 Dynamicland 真正神奇的地方,理论上,你可以把空间里任意一个物理对象表面上的任意位置,都变成能与计算系统交互的场所(具体机制后文会介绍)。更多的互动场所,会带来更多的互动可能性和更高的互动频率,而互动性(包括响应性)是任何创造性工作的基础。
二、人与环境互动的模式和通道。个人计算机发展到现在,已经能支持很多种人机交互方式,鼠标、键盘、触控笔、多点触控屏、语音、手势等等,这些方式覆盖了人的视觉、听觉和触觉。但这里所谓的触觉交互,其实都是在触摸一块屏幕,触感极其单调。与之相较,Dynamicland 不需要触控设备,因为人可以直接在物理空间里触摸物理对象,同时获得真实而丰富的触觉反馈。Dynamicland 也不需要鼠标这类定位设备(pointing device),它们是为了在虚拟空间里定位虚拟对象而准备的。另外还有一点容易被忽略,就是人可以在 Dynamicland 里走动,身体能自由地活动,感觉和动觉都完整地保留下来,而不必把身体固定在某个位置,也不必把所有感觉锁定在一块屏幕上。
Dynamicland 目前还不支持语音、手势这类交互方式,这并非技术上的限制,而是因为 Bret Victor 有意保留人与计算机之间的边界。据 @种瓜 讲,Bret 不想监视人。他可能把检测手势看作机器对人体的一种入侵。Bret 对 AI 技术也相当谨慎,尤其抵触生成式 AI。生成式 AI 是对大脑的入侵,一旦用得不好,就极有可能毁坏人的认知。麦克卢汉早就提醒过,我们塑造工具的同时,工具也在塑造着我们。而媒介对人的塑造能力只会比工具更强,并且它对人的影响更难被察觉,因为人沉浸在媒介之中,就像鱼生活在水里,而鱼根本意识不到水的存在。Bret 把 Dynamicland 当作一种媒介来设计,当然明白其中的利害。
我在现场向 Bret Victor 提了一个问题:理论上,桌面上的所有东西都可以被数字化,比如书、笔、尺子、程序卡片,甚至连桌面本身也可以被虚拟化,那么在设计 Dynamicland 时,要如何取舍,哪些部分用物理对象,哪些部分用数字方式来模拟?Bret 讲,一般的原则是尽可能把所有东西都物理化(physicalize everything),只有在无法用物理对象实现的地方,才用数字方式来呈现。
这是 Dynamicland 最根本的设计哲学,也决定了它与 VR/AR 这样的虚拟化方案完全不同。Dynamicland 完全以现实的物理世界为根基,始终处在现实世界之中,始终要回到现实世界。Dynamicland 主张计算系统不应是现实世界的控制中心,相反,它掌握的关于物理世界和人的信息,应当尽可能少。计算仅仅是附加在物理对象上的一个新属性。
Dynamicland 里的对象可以分成两类:物理对象和计算对象。物理对象存在于物理世界中,计算对象存在于计算系统中。物理对象我们早已习以为常,计算对象又过于抽象,但当计算对象叠加到物理对象上,魔法就发生了,它们融合成一种具有计算属性的物理对象,也就是计算物理对象(computational physical objects)。

Bret 现场演示了一本书,它既是用 Dynamicland 这个媒介制作的,也是为了这个媒介而制作的,你可以叫它 Dynabook(Kay 大概没想到,他的构想会以这种方式实现)。
书名叫《猫猫如何跳?》(How Do Cats Jump?)。

Bret 把书放在桌面上,翻开书页的那一刻,是我经历的第一个魔法时刻。那本书看上去和普通的书没什么两样,上面有些文字,但书页上同时还播放着一段视频,内容是 Bret 家的一只猫跳上房顶的镜头。我当时就联想到《哈利波特》里的一个场景,主角看着报纸,上面的新闻人物还会动。即使你知道它在技术上大概是怎么实现的,第一眼看到这样的东西,依然会本能地(viscerally)受到魔法的冲击。物理对象 + 计算对象 = 魔法对象。

第二个魔法体验:「分解」一只猫。无论是探究还是创作,都免不了要先把材料分解,再重新组合起来。Bret 把一幅猫的图像投到一大张纸上,先试着用黄色马克笔圈出猫的尾巴。这一步本应能把猫尾巴这部分图像拆出来,留作后续处理的素材。但现场的图像检测不太稳定,效果并不理想。Bret 又换了个办法,用一些黑色纸片遮住想拆出来的部分,再把它们复制出来,也就完成了分解。随后,你就可以用关节工具把拆出来的各个部分重新连接起来,去探索猫是怎么运动的。比如,Bret 现场演示了一只猫如果像人那样直立着做蹲起会是什么样子,画面很搞笑。

这里奇妙之处在于,我们要处理的是一张数字图像,用的工具却是物理的。你不需要先去熟悉某个图像处理软件的复杂界面,再握着鼠标,用一支虚拟的笔在屏幕上戳戳戳。而在 Bret 这套操作里,马克笔和纸片都是已经上手(ready to hand)的工具,连小朋友也能毫无障碍地用起来。
第三个魔法体验:可随意改变刻度的尺子。Bret 的工具集里有一把尺子,它的本体是一把真实的尺子,但上面的刻度是由计算系统虚拟出来、再投射上去的。一把物理尺子就此拥有了计算属性。和刻在物理尺子上的刻度相比,虚拟的刻度要灵活得多。你可以通过编程定制它的样式和精度,甚至调整它的比例。一把物理尺子上的 1cm,就对应现实里的 1cm,用来量物理对象正合适。可有时你要量的是数字对象,比如桌面上这张被放大的图像。图像里呈现的物体,它在虚拟空间的尺寸与它在物理空间的尺寸已经不再相等。假如图像被放大到三倍,物体真实的 1cm,在虚拟空间就会显示成 3cm。这时拿物理尺子去量,量到的是显示出来的 3cm,而不是你真正想知道的那个 1cm。好在虚拟刻度可以编程,你只要把尺子的比例改成「虚拟空间的 3cm 当作 1cm」,它就能直接读出物体的真实尺寸。另一个好处是,它的本体不必真是一把尺子,任何又长又直的物体,配上由计算表征出来的刻度,都能当尺子用。

我们还可以再往深处想一想,长度到底是什么?它是客观的吗?尺子上的 1cm,在任何空间里都真的是一厘米吗?它在人眼里看着也是一厘米吗?离远一点看,它还是一厘米吗?当我们在物理空间和多个虚拟空间之间来回穿梭,不断调整尺子的比例去适应当下的空间时,我们慢慢建立起来的,会是一种更接近爱因斯坦的现代时空观,而不是欧几里得式那种认为空间处处均匀一致的时空观。
在介绍接下来几个魔法体验之前,我们需要先认识一下 Dynamicland 里的一类特殊对象。你可能已经注意到了,它就是遍布在这个空间各处的程序卡片。程序卡片首先是一种存在于物理空间的物理对象,说到底就是一张纸卡。纸卡上面有一些由不同颜色的点构成的标记,它们分处四个角,框出一个平面。计算系统能识别出这些标记,卡片也就有了符号功能。正是这些具有符号功能的卡片,将物理对象与计算对象连接了起来。

这里有几处值得思考的地方,首先是为什么需要这些卡片。理论上,完全可以让计算系统直接去识别物体,就像 AR 那类方案做的那样。我认为有两点原因。第一,是前面提到的那条原则,也就是计算系统掌握的关于物理世界的信息应该尽可能少。第二,用卡片作为中介去连接物理对象和计算对象,反而能让两者解耦,从而带来更大的灵活性和可组合性。两者之间的关联,可以不依赖物理对象本身的性质,比如它的外观。因为这层关联本身已经成了一个实体,也就是那张卡片。
还有一个有意思的问题,为什么要用这些标记框出一块平面?你应该已经想到了,这个平面可以用作屏幕。你可以把卡片贴到某个物理对象的表面上,这样就制造出了一块屏幕,而这块屏幕又能成为你与计算系统交互的场所(回应前文)。所以理论上,在 Dynamicland 里,只要空间允许,你可以在任意物体的任意表面上制造出任意多的屏幕。你不再需要把所有心智资源都倾注在一块屏幕上,计算系统也不再需要倾尽全部资源,只为把你的注意力吸引到一块屏幕上。
程序卡片的标记形式,或者说它的语法,是可编程的。也就是说,卡片上的标记不必是现在这种样子,甚至连承载这些标记的东西,都不必是一张卡片。这将打开更大的想象空间。
接下来将介绍第四个魔法体验:手撕卡片。@种瓜 给我们简单演示了一下他在 Dynamicland 做学徒时记的日志。他想把日志内容显示得大一些,可当时桌面上既没有更大的卡片,也没有放大工具。于是他把一张小卡片的四个角撕下来,摆到桌面上,再调整它们的位置,就制造出了一块更大的屏幕。这个动作很不符合认知习惯,却很符合身体直觉。计算系统只关心那四个角上的标记,并不在乎它们是否固定在同一张卡片上,而纸质的卡片,恰好可以撕开。正是物理材料的可塑性和计算系统的语义灵活性,让这种魔法成为可能。

还记得我们前文讲过,只要是摄像机和投影仪能覆盖的地方,都可以成为一张桌面。也就是说,投在这张桌面上的内容,完全可以投到另一张桌面上,或者另一个空间的一面墙上。在 Dynamicland 里,空间是可编程的。日志本身就是一本动态书,@种瓜 可以把学徒日志铺在面前这张桌面上,用工具卡操控要显示的内容,再把它投到另一块更大的屏幕上。这听起来是不是很熟悉?很像我们在公司会议室或自家客厅里会做的事情。在 Dynamicland 里,要做到这些,不需要复杂的 PPT 软件,也不需要投屏工具。用手就可以。
第五个魔法体验:输入法作为一个对象。@种瓜 为 Dynamicland 的计算系统开发了一个中文输入法。在物理世界里,它对应着一张程序卡片。把输入法卡片连接到键盘卡片上,就能启用它;合上卡片,就能关闭中文输入。输入法同时也是一个程序,一个计算对象。

@种瓜 演示了另一个神奇的能力。他在一张键盘上激活了输入法,输入了两个字,这时输入法正处于候选词状态。他把输入法合上,跑到另一张桌面,在那里的键盘上重新激活,发现输入法依然停在刚才那个候选词状态。可以这样理解,计算对象是有记忆的,而且你能把它握在手里、揣进兜里,因为它和一张实体的程序卡片绑在一起。你可以在 Dynamicland 空间里任何需要的地方重新启动它,甚至你也可以把它带回家。
以上种种体验已经足以让我惊叹,但 Dynamicland 最有魅力的地方还没有展现出来,那就是 Realtalk 语言。Realtalk 应该和 Smalltalk 一样,没有操作系统这个概念,编程语言本身就是操作系统。我对 Realtalk 的了解还不多,因为我没有深入参与过工作坊,也没有真正用它写过项目。但听了 @种瓜 的介绍,我能感觉到,Realtalk 可能是人类至今能设计出的最美的计算系统。

Realtalk 语言有三个最基本的原语:Claim,声明;When,当某个条件成立时;Wish,希望系统里的对象达到某种状态。整个 Realtalk 系统,从最底层的实现到最上层的用户交互,都建立在这三个原语之上;用户写的程序,也是用它们表达的。
在 Realtalk 系统里,所有计算对象都处在同一个场(field)中,它们通过这个场彼此通信。这一点呼应了我们前面讲过的,Dynamicland 是一种媒介,所有来到这个空间的人都沉浸其中。不只是人,所有物理对象也一样,都沉浸在这个媒介里。媒介就是场,场就是媒介。人、物体、计算对象,表达的是同一种存在论。
Dynamicland 是一种媒介,一种文化,也是一种哲学。这里有太多颠覆想象和认知的东西,除了「魔法」这个词,我想不出还有什么更合适的词来形容它。