【导语:Nick 的八岁女儿想制作电子游戏,Nick 为其打造了名为 Canon 的“可以制作游戏的游戏”,灵感源于互联网早期文字 MUD,旨在复现他九岁时用 HyperCard 编程的体验。】
1989 年九岁的 Nick 在计算机课上接触到 HyperCard,这是比尔·阿特金森在 LSD 之旅后发明的软件。其核心概念极为简单,卡片上放置按钮、文字、图片,堆叠起来就是应用。Nick 虽不懂编程,但通过将按钮链接到卡片,花几个星期放学后制作出《街头霸王》风格格斗游戏,从此开启了他对编程创作快感的追逐。
Nick 为女儿打造的 Canon 有三个组成部分:玩家、房间、物品。玩家和房间是文字描述加可选图片,物品则涵盖宠物、NPC 等“其他一切”,由 Cant 语言驱动。例如一个可点亮的灯笼,用 Cant 语言描述简单易懂。
Cant 语言底层有个 `or` 关键字,能让字符串随机挑选变体,给新程序员带来特别乐趣,既让他们有编程掌控感,又有意外惊喜。
对于程序员来说,Cant 语言写法糟糕,如 D20 骰子的写法极其低效,但它极其容易理解。它优化的是易理解性,而非书写速度,与 DRY 原则相反。
在 Canon 中,物品有 marks 和 numbers 两种状态,大小写本身代表类型,且状态挂在物品上,使 PVP 决斗成为“同意制”,设计十分巧妙。
有同行质疑 Canon 是“教编程”还是“给小孩玩具”,但 Nick 意图明确,他不是要女儿成为程序员,而是让她复现自己九岁时在“一切皆可编辑、查看源码”环境里创造东西的震撼体验。
Canon 的即时反馈、View Source、从 GUI 到代码的平滑梯度等功能都服务于这一目标。
编辑观点:Nick 以独特方式为女儿创造编程环境,Canon 虽简单却意义非凡,让孩子在低门槛中感受创造乐趣,为编程教育提供新思路。