Aura 一个嵌入式小语言
💡
原文中文,约3100字,阅读约需8分钟。
📝
内容提要
Aocla 的 tuple 类型可以给局部变量赋值,让基于栈的语言写起来更自然。上周四和五,花了两个半天时间搭建基础功能,这周一又用一整天时间完善以及修理 Bug 。内部数据结构都用相当简单的基础结构构成,没有指针,没有动态数组,让程序运行时没有任何动态内存分配。Parser 的错误报告很简陋,没有实现必要特性。最后,作者收获到了恢复写代码的感觉,非常开心。Aocla 的功能还没有完全实现,但可以用简单的代码以 Lua 的形式重新实现。Aocla 相比 Lua 没有明显的性能优势,但可以更轻量地和 C 打交道。
🎯
关键要点
- Aocla 是一种结合了 FORTH 和 Lisp 的新语言,支持内嵌局部变量。
- 作者最初为数学库设计的 DSL 经过多次修改后决定剥离。
- Aocla 代码量少,作者计划在两天内重新实现一个类似的语言。
- 新 DSL 设计为函数式语言,所有值为不变量,执行过程不修改已有状态。
- 运行时使用 O(1) 方法重置堆栈,不实现复杂的垃圾回收。
- 局部变量数量上限提高到 255,使用更长的单词表示。
- Aocla 的 tuple 类型使得局部变量赋值更自然,限制元素个数不超过 4 个。
- 作者在短时间内搭建了基础功能并修复了明显的 Bug。
- 内部数据结构简单,没有动态内存分配,程序运行时不会出现动态内存分配。
- Parser 的错误报告简陋,未来可能用 Lua 重新实现以增加功能。
- Aocla 与 Lua 相比没有明显性能优势,但与 C 的交互更轻量。
- 作者通过这个项目恢复了写代码的感觉,感到非常开心。
➡️