2026 年 7 月 11 日,开发者 Dilshan R. Jayakody 发布了面向中端微控制器的开源解释器项目 Tiny Basic for Arduino(托管于 GitHub 的 dilshan/tiny-basic 仓库,采用 BSD 3-Clause 许可证)。作者在 7 月 10 日的 Hackster.io 文章中表示,希望用廉价现代开发板和串口终端重现 Commodore 64 式的编程体验,官方页面更是打出了免 PC IDE 硬件端直接编程与功能齐全的招牌。但如果剥开这层复古外壳就会发现,它既不能脱离电脑独立存活,在基础语法上也严苛得近乎苦行;它真正的工程价值,是把现代硬件外设协议塞进交互式命令行,变成了一个披着 1975 年古老语法外衣的硬件调试 Shell。

96KB 内存只配 26 个变量:免 IDE 承诺背后的苦行与断电现实

这个新项目最让人意外的地方,是充裕的现代算力与极端克制的语言能力之间的巨大反差。官方目前明确支持两款 32 位开发板,默认平台是搭载 Cortex-M3 内核(SAM3X8E,主频 84 MHz)的 Arduino Due,拥有 96 KB RAM 和 512 KB Flash,最多支持 1,024 行代码;另一款是搭载 Cortex-M4 内核(RA4M1,主频 48 MHz)的 Arduino UNO R4 WiFi,配备 32 KB RAM 和 256 KB Flash,支持最多 264 行代码。在这样宽裕的 32 位硬件资源上,解释器却维持着半个世纪前的古典限制:单行代码上限 64 个字符,强制要求写 LET 赋值,不支持数组、字符串变量和自定义函数,全局只允许使用 A 到 Z 共 26 个单字母变量(支持整数与浮点数),GOSUB 子程序嵌套上限为 32 层,循环嵌套上限为 16 层。

硬件资源充裕度与语法限制的极端反差 Arduino Due 最大内存 96 KB 84 MHz 主频 / 512 KB 闪存 最高容纳 1,024 行代码 UNO R4 WiFi 内存 32 KB 48 MHz 主频 / 256 KB 闪存 最高容纳 264 行代码 全局可用变量总数 26 个 仅限 A-Z 单字母变量 无数组 / 无字符串 / 断电即失

官方宣传的无需连接 PC IDE 同样存在明显的认知落差。该项目基于 PlatformIO 构建(提供 due、uno_r4_wifi 及不含硬件操作的 native 主机测试三种环境),但它根本没有调用片上 Flash、EEPROM 或外置 SD 卡做持久化存储。用户敲入的所有程序完全保存在易失性 RAM 中,断电即丢失。所谓的 LOAD 命令并非从文件系统读取文件,而是让用户通过配置为 9600 波特率(8N1 格式)的串口终端,把电脑端保存的源码文本直接复制粘贴进开发板,再用 LIST 命令打印导出来备份。

所谓免 IDE 编程的真实串口工作流 1. PC 串口连接 9600 波特率 8N1 仍需挂接电脑终端 2. LOAD 粘贴源码 无本地文件系统 纯文本流串口灌入 3. RAM 交互调测 单行上限 64 字符 直调 I2C 与 SPI 4. LIST 导出备份 纯易失性内存存储 拔掉电源立刻清空
  • 提醒.创客教育者若想用它制作带屏幕电池的独立复古掌机,会因缺乏断电保存、数组及字符串支持而直接受阻;此外官方文档虽强调其轻量与快速,却未公布固件本身的最小 RAM/Flash 占用体积,也没有提供任何每秒语句数或执行速度跑分数据。

放弃数组却点满 I2C 与 SPI:三大 Arduino BASIC 的路线分野

为什么放着几十 KB 的内存不用,偏要守着 26 个变量的残缺语法?把时间轴拉回 1975 年微型计算机萌芽期就能看清脉络。该项目在 philosophy.md 文档中称参考了经典的 1975 年王理真(Li-Chen Wang)语法规范——这里其实有一处开源社区常见的历史溯源错位:文献记载 1975 年提出 Tiny BASIC 最初架构设计的是 Dennis Allison(刊登于 1976 年 1 月《Dr. Dobb's Journal》创刊号),而王理真著名的 Palo Alto Tiny BASIC 实际上诞生于 1976 年。但无论如何,早期 Tiny BASIC 的核心精神就是极简,而在当代 Arduino 生态里,不同开发者对极简的理解早已分化出截然不同的工程路线。

项目名称目标硬件与内存规模变量、类型与语法能力存储持久化与外设亮点
Tiny Basic for Arduino32位 Cortex-M3/M4 (32KB-96KB RAM)仅 26 个单字母变量,支持整数/浮点,无数组/字符串纯 RAM 断电即失,原生内置 I2C/SPI/PWM 及结构化控制流
TinyBasic Plus (BleuLlama)8位 AVR 芯片仅支持 16 位有符号整数支持内部 EEPROM 及可选 SD 卡(开 SD 需约 9KB Flash 和 1KB RAM)
ArduinoBASIC (Robin Edwards)8位 AVR (默认仅 1,024 字节工作区)支持浮点数、字符串变量与多维数组支持 EEPROM 自启动,可接 PS/2 键盘与 OLED 屏幕独立运行

做个横向对比就很清楚了。前辈项目 ArduinoBASIC 在老旧 8 位 AVR 芯片默认的 1,024 字节(1 KB)狭小工作区里,硬是塞进了浮点数、字符串变量、多维数组以及键鼠屏幕独立运行能力;TinyBasic Plus 也把重点放在了 EEPROM 和 SD 卡文件读写上。相比之下,Dilshan 的新项目在语言完备性上全面退守,却把技能点全加在了现代控制流与底层硬件通信上。

语言上退回 1975 年的苦行,是为了换取免编译探测现代硬件的敏捷。

这正是该项目的真正定位。它在传统 GOTO 和 GOSUB 之外,越界加入了结构化的 IF/THEN/ELSE/ENDIF、WHILE/WEND 和 REPEAT/UNTIL 循环,内置了三角函数与位运算标准库,更重要的是原生集成了直接操作 GPIO、PWM、模拟输入(ADC)、声音以及 I2C 和 SPI 总线的命令。

  • 结论.对于嵌入式硬件工程师而言,当手里拿到一颗陌生的 I2C 传感器或需要快速测试引脚电平时,无需打开笨重的 IDE 反复修改 C++ 代码、等待编译并重新烧录固件,只需连上串口敲两行 WHILE 循环和总线读写指令就能实时验证寄存器响应,这才是它不可替代的实用场景。

接下来观察这个开源项目能不能从极客玩具走向趁手工具,只需要盯紧三个具体变量:作者与社区后续是否会补齐片上 Flash 或 EEPROM 的非易失性存储支持,是否会将其跨平台架构真正移植到 ESP32 或 RP2040 等更主流的现代 MCU 上,以及何时能拿出一份实打实的内存占用与执行速度基准测试报告。