跳到正文

← 文章

页面即房间:一篇你读着读着就动手改写了的文章

把 Realtalk 的 Claim/When/Wish 搬进一张网页:规则可读、可改、可组合。这篇文章讲动态媒介,而它本身就是一个动态媒介——读到最后,你会发现自己已经编了程。

第一幕:你现在是读者

大多数网页是应用:功能被开发者密封好,你只能沿着预设的路径点击。 而媒介不同——纸可以折,黏土可以捏,粉笔字可以擦了重写。 Bret Victor 的 Dynamicland 实验室把整栋建筑变成了计算机:纸张既是程序又是界面, 放上桌子就运行,谁都可以当场改写。他们管这叫 Realtalk。

Realtalk 的空间性看起来无法搬进屏幕——我们没有那张桌子。 但有一个诚实的对应物:页面即房间,视口即桌面,滚动即走动。 你往下读的每一步,都是在房间里移动。

比如:这句话就是房间里的第一个物件—— 它有名字,别的规则可以指认它。这正是 Realtalk 的 Claim:宣称”我在这里,我叫这个名字”。

第二幕:你现在是操作者

下面是这个房间的规则清单。它们正在运行——试着勾选、取消勾选第一条, 然后把页面往回滚一点再滚下来,看看

有什么反应。

这个房间的规则

这个页面里住着 3 条规则:当『reactive-box』进入视野,希望『reactive-box』变成青色;当『first-object』被悬停,希望『reactive-box』被高亮;当『first-object』被点击,希望『click-counter』计数加一。(启用 JavaScript 后,你可以亲手开关、改写、添加这些规则。)

规则就写在它作用的对象旁边——Realtalk 的可见性原则:程序印在物体上。

第三幕:你现在是修理者

房间里还有一个物件:一枚等着被点击的徽标。 下面这条规则本想数它被点击的次数,但目标槽选错了对象。 展开词槽,把它修好——然后点几下徽标试试。

修理即编程:你刚才改的不是设置,是程序的语义。

第四幕:你现在是作者

上面任何一个规则清单里都有一个”+ 添加一条规则”。 写一条你自己的——让某个物件在你滚动到页面一半时变色,或者每两秒挪动一下。 没有语法错误这回事:词槽里的每个选项都是合法的。

第五幕:刚才发生了什么

你在读一篇文章的过程中,不知不觉做了四件事:读、操作、修理、创作。 每一步的门槛都只比上一步高一点点——这就是 Ink & Switch 说的 gentle slope, 从消费者到创造者之间不该有悬崖。

“开发”与”使用”的分离是制度,不是必然。 这个网站的每个组件下面都有一个「⌥ 源码」, 这篇文章讲的道理,就是你刚刚亲身经历的事。