Mini Micro:一台用 MiniScript 点亮的「幻想计算机」
文章摘要
Mini Micro 是一台「幻想计算机(fantasy computer)」——它模拟出一台不存在于现实的复古电脑,重现 1980 年代家用机开机即见「Ready 提示符」、立刻就能编程的体验。它由 Joe Strout 开发,完全免费,可在 Mac、Windows、Linux 以及浏览器(WebGL)上运行,iOS 和 Android 移动版也已进入公测。
它的灵魂是 MiniScript 语言:一门由 Joe Strout 专门设计的、轻语法、易上手却不失表达力的现代脚本语言。它是面向对象的、不使用行号(区别于传统 BASIC),用 C# 和 C++ 编写,全部源码开放在 GitHub 上。在 Mini Micro 里,命令行 shell 和编写程序用的是同一门语言,浑然一体。
硬件规格相当扎实:默认分辨率 960×640 像素、全彩色,最多支持 8 个显示图层;文本模式为 26 行 × 68 列全彩;图块(tile)显示支持缩放与滚动;精灵(sprite)显示支持缩放、旋转和简单的碰撞检测。音频方面同时支持数字采样与合成音,可控制音高、音量与立体声声相。它还内置 HTTP 等能力,足以做出真正的游戏。与同类「幻想主机」PICO-8 相比,PICO-8 偏向制作、分享和玩「微型游戏」,而 Mini Micro 更聚焦于编程教育与复古计算的氛围营造——作者还配套出版了一本 54 页的彩色书,面向小学到初中年龄段教授编程概念。
HN 评论精华
讨论几乎完全跑题成了一场「缩进 vs. 花括号」的语言设计辩论(颇具 HN 特色):
- alex_x:抛出引子——「我很好奇为什么这些易学语言都用缩进而非花括号来表示作用域,那不是更难解释吗?」
- echoangle:回应说,缩进能确保「你判断作用域所用的东西(缩进)」和「计算机判断作用域所用的东西」相匹配。
- graemep:认为缩进更直观——即便用花括号语言的人,通常也会靠缩进让代码可读;那样反倒得同时解释「打括号」和「缩进」两件事。
- latexr:表达不同偏好,更喜欢花括号,因为缩进有时很碍事——并非每次都和括号一起用,很多场景下去掉或自定义缩进反而更清晰,而基于缩进的解析也让实验和排查问题更难。
- Gormo:提出一个「形式与功能」之辨——缩进利于人类阅读,但花括号是给编译器/解释器的无歧义指令;把两者混为一谈是错误的,「不该因为调整视觉排版就有可能改变或破坏程序逻辑」。Wowfunhappy 认为这对老手成立、对新手不然,因为同时在脑中持有「视觉表示」和「语法表示」两套并行表征是更高阶的技能。
- jim_lawless / layer8:关键澄清——其实 MiniScript 根本不靠缩进!它用关键字
end(如end if)来界定代码块,官方速查手册明确写着「缩进无关紧要(仅为可读性)」,风格类似 BASIC、FORTRAN、PASCAL。 - NooneAtAll3:从教学角度回答最初的问题——「易学语言」之所以常用缩进,是因为否则新手根本不会去缩进;教编程时会发现缩进是学生最爱「优化掉」的东西之一,而缩进纪律的价值要到程序规模变大时才显现。