如下源自豆包,略有删减:
Lua(读音 /ˈluːə/,葡萄牙语意为 “月亮”),1993 年巴西里约天主教大学开发,轻量嵌入式脚本语言,源码用标准 ANSI C 编写,MIT 协议,完全免费商用。
核心定位:嵌入到 C/C++ 宿主程序里做扩展、配置、业务脚本,不是用来独立写大型桌面软件。
核心特点:
- 极度轻量 内核很小,编译后库文件几百 KB,资源占用低,适合嵌入式、单片机、网关、物联网设备。
- 可嵌入、双向互通 C/C++ 可以调用 Lua 脚本;Lua 也可以调用 C 写的函数,宿主提供底层能力,Lua 负责上层业务逻辑。
- 动态类型、自动 GC 不用声明变量类型,自带增量垃圾回收,不用手动管理内存。
- 唯一核心数据结构:table
table既是数组,又是哈希表,可以实现数组、字典、对象、类,是 Lua 最强大的特性。 - 多范式:支持过程式、函数式、基于原型的面向对象、闭包、协程(coroutine,用户态轻量协程,不是 OS 线程)
- 字节码虚拟机 源码编译成字节码在寄存器虚拟机执行;LuaJIT是高性能 JIT 版本,速度接近 C,OpenResty 大量使用。
- 语法简洁,学习门槛低。
和其他语言区别:
- 和 Python:Lua 更小更快,标准库极简;Python 库丰富,适合独立应用。
- 和 JS:Lua 没有浏览器绑定,主打嵌入式;JS 主打前端。
- Lua 协程是用户态协作式,不是抢占式多线程。
分支版本:
- Lua 官方原版:5.1 / 5.4(最常用稳定版)
- LuaJIT:JIT 加速,性能极强,只支持到 5.1 语法
- Luau:Roblox 魔改 Lua,增加类型、安全沙箱
适合你的场景(物联网硬件方向)
智能电表 / 水表等设备:底层 C 驱动硬件,业务逻辑、通信协议解析、上报规则用 Lua 脚本。 好处:
- 业务脚本可以远程升级,不用重刷固件;
- 规则可配置,不同客户不用改 C 代码;
- 资源占用小,适合 MCU / 模组。
