一句话

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