虽然近几年 Lua 不如之前风光了,大部分开发者已经转投 JavaScript 阵营。不过毫无疑问地,Lua 和 Lua VM 依然是我认为目前最好的入门编程语言实现的切入点。主要有以下几点原因:
- 具有简洁的语法
- 简洁的语法却又包含了不简单的语义 - 支持 Closure, Coroutine 等
- 规范清晰的前后端设计 - 词法分析 -> 语法分析 -> 代码生成 -> 虚拟机执行
- 虚拟机设计小巧灵活 - 支持嵌入到宿主程序中执行以及 C 语言相互调用
- 规模非常小且规范的代码 - 因为要支持嵌入到宿主程序中,以及尽可能的支持更多的硬件设备,Lua 源码使用了具有很高移植性的 C 语言子集,且代码量相对于其他语言的实现而言显得非常之精巧
虽然有以上这些优势,并不是说 Lua 就适合作为所有人的深入编程语言实现的切入点,大家需要具体结合自己已有的技术背景来做出最适合自己的选择。不过,相对于现有的 Python 和 JavaScript 实现来说,Lua 15000 行左右的代码,真的会让人一下感觉轻松很多。
该项目会不断地更新以记录我学习 Lua VM 的过程,不过目前并不会有一个非常明显的『由浅入深』的脉络。未来有可能的话会将它们整理成系列,现阶段会把每一节都以链接的形式罗列在下方。有相同需要的同学可以选择性阅读自己感兴趣的部分,或者利用 Github 的项目搜索功能、对项目进行全文检索。