Lua 作为目前最为流行的、免费轻量级嵌入式脚本语言,在很多工业级的应用程序中被广泛应用,如 Adobe’s Photoshop,甚至是在一些著名的游戏程序中也被大量使用,如星际。
不仅如此,由于 Lua 具备很多特殊的优点,如语法简单(基于过程)、高效稳定(基于字节码)、可以处理复杂的数据结构、动态类型、以及自动内存管理(基于垃圾收集)等,因此在很多嵌入式设备和智能移动设备中,为了提高程序的灵活性、扩展性和高可配置性,一般都会选择 Lua 作为它们的脚本引擎,以应对各种因设备不同而带来的差异。
Lua 脚本是跨平台的,是要使用 Lua 基本语法和标准库写的脚本,都是可以跨平台的(用了扩展库则不一定)。
Lua 源码是 C 语言写的,因此可以编译出各个平台上的 lua 解释器、或者 lua 库。
Lua 也能对面向对象编程,函数式编程,数据驱动式编程提供很好的支持。作为一个扩展式语言,Lua 没有 “main” 程序的概念:它只能嵌入一个宿主程序中工作,这个宿主程序被称作 embedding program 或简称为 host。
宿主程序可以通过调用函数执行一小段 Lua 代码,可以读写 Lua 变量,可以注入 C 函数让 Lua 代码调用。这些扩展的 C 函数,可以大大的扩展了 Lua 可以处理事务的领域,这样就可以订制出各种语言,而它们共享一个统一的句法格式的框架。Lua 的官方发布版就包含了一个叫做 Lua 的简单的宿主程序,它用 Lua 库提供了一个保证独立的 Lua 解释器。
高效性
作为一种脚本语言,Lua 的高效是众所周知的,因此在实际应用中,很多大型程序都会考虑将代码中易变的部分用 Lua 来编写。这不但没有明显降低系统的运行效率,反而使程序的稳定性和可扩展性得到了显著的提升。
可移植性
在官方网站中提供了基于多种平台的发布包,如 Linux/Unix、 Windows、 Symbian 和 Pocket PC 等。
可嵌入性
在语言设计之初,Lua 就被准确的定位为嵌入式脚本语言,因此 Lua 的设计者们为 Lua 提供了与其他编程语言之间的良好交互体验,这特别体现在和 C/C++ 之间的交互上。对于其他语言,如 Java 和 C#,也可以将 Lua 作为其嵌入式脚本引擎,并在代码中进行直接的交互。
简单强大
尽管是过程化脚本语言,但由于 Lua 的设计者们为 Lua 提供了 meta-mechanisms 机制,这不仅使 Lua 具备了一些基本的面向对象特征,如对象和继承,而且仍然保持了过程化语言所具有的语法简单的特征。
小巧轻便
在最新版本(5.2.0)的 Lua 中,仅仅包含了大约 20000 行的 C 语言代码,编译后的库文件大小约为 240K 左右,因此这对于很多资源有限的平台有着极强的吸引力。
免费开源
MIT Licence 可以让 Lua 被免费的用于各种商业程序中。