一句话
Lua 是为嵌入而生的小型脚本语言——核心只有几百 KB,可以塞进任何 C/C++ 程序当作"脚本层"。
它在哪里
| 场景 | 谁在用 |
|---|---|
| 游戏 | World of Warcraft、Roblox(Luau 方言)、Garry's Mod、Defold |
| 移动游戏框架 | Love2D、Solar2D、Defold |
| 编辑器配置 | Neovim(init.lua)、ZeroBrane Studio |
| 网络服务 | OpenResty/Nginx、HAProxy、Kong |
| 数据库 | Redis(EVAL)、PostgreSQL(PL/Lua) |
| 嵌入式 | NodeMCU(ESP8266)、Tarantool |
| 桌面应用 | Adobe Lightroom、VLC |
几乎没有"纯 Lua"应用——它的价值就是寄生在大型 C/C++ 程序里。
为什么选它(嵌入者视角)
- 解释器几百 KB——能跑就能塞
- 标准 C 写的,零外部依赖
- LuaJIT 有 trace JIT,速度逼近 C
- 调用 C 函数 + 被 C 调用都简单
- License: MIT,商用零顾虑
为什么不选它(应用作者视角)
- 标准库特意做得小——文件、网络、字符串模式都是简化版
- 包生态远不如 Python / JS
- 索引从 1 开始(别问)
- 无内置面向对象、无内置类
- 工业级类型检查工具(Luau 除外)几乎没有
如果你做的是"独立 web/CLI 应用",Python / Go 更合适。Lua 的甜区是别人家应用里写小脚本。
版本
- Lua 5.4(2020 起):现行标准,集成
<close>to-be-closed 变量 - Lua 5.1:上古版本,但 LuaJIT 长期停在这个语法(OpenResty / WoW 走这条路)
- LuaJIT 2.1:兼容 Lua 5.1 语法 + 部分 5.2/5.3 借鉴,性能怪兽
- Luau:Roblox 自家方言,加了类型注解、严格运行时
写代码前先查:宿主用哪个版本。LuaJIT 项目里写 5.4 的 <integer> 语法直接报错。
25 篇怎么排
| 模块 | 篇数 | 主要内容 |
|---|---|---|
| 入门(02-05) | 4 | 安装 / 语法 / 字符串 / 控制流 |
| 核心(06-13) | 8 | Table / 函数 / 闭包 / metatable / OOP / 模块 / 错误 / 协程 |
| 标准库 + 性能(14-18) | 5 | string / math-io-os / 整数 / 性能 / LuaJIT |
| 嵌入场景(19-25) | 7 | Roblox / Love2D / Neovim / Redis / OpenResty / 嵌 C / 路线图 |
学习前提
- 会任何一门语言的基本概念(变量、函数、循环)
- 不要求 C 背景——24 篇嵌 C 那篇会从零讲
不满足?看 Python 基础 01-10 过一遍编程基础。
→ 下一篇 安装 Lua + REPL