Lua 简介

如下源自豆包,略有删减:

Lua(读音 /ˈluːə/,葡萄牙语意为 “月亮”),1993 年巴西里约天主教大学开发,轻量嵌入式脚本语言,源码用标准 ANSI C 编写,MIT 协议,完全免费商用。

核心定位:嵌入到 C/C++ 宿主程序里做扩展、配置、业务脚本,不是用来独立写大型桌面软件。

核心特点:
  1. 极度轻量 内核很小,编译后库文件几百 KB,资源占用低,适合嵌入式、单片机、网关、物联网设备。
  2. 可嵌入、双向互通 C/C++ 可以调用 Lua 脚本;Lua 也可以调用 C 写的函数,宿主提供底层能力,Lua 负责上层业务逻辑。
  3. 动态类型、自动 GC 不用声明变量类型,自带增量垃圾回收,不用手动管理内存。
  4. 唯一核心数据结构:table table 既是数组,又是哈希表,可以实现数组、字典、对象、类,是 Lua 最强大的特性。
  5. 多范式:支持过程式、函数式、基于原型的面向对象、闭包、协程(coroutine,用户态轻量协程,不是 OS 线程)
  6. 字节码虚拟机 源码编译成字节码在寄存器虚拟机执行;LuaJIT是高性能 JIT 版本,速度接近 C,OpenResty 大量使用。
  7. 语法简洁,学习门槛低。
和其他语言区别:
  • 和 Python:Lua 更小更快,标准库极简;Python 库丰富,适合独立应用。
  • 和 JS:Lua 没有浏览器绑定,主打嵌入式;JS 主打前端。
  • Lua 协程是用户态协作式,不是抢占式多线程。
分支版本:
  • Lua 官方原版:5.1 / 5.4(最常用稳定版)
  • LuaJIT:JIT 加速,性能极强,只支持到 5.1 语法
  • Luau:Roblox 魔改 Lua,增加类型、安全沙箱
适合你的场景(物联网硬件方向)

智能电表 / 水表等设备:底层 C 驱动硬件,业务逻辑、通信协议解析、上报规则用 Lua 脚本。 好处:

  1. 业务脚本可以远程升级,不用重刷固件;
  2. 规则可配置,不同客户不用改 C 代码;
  3. 资源占用小,适合 MCU / 模组。