Lua (programming language)
- For the Roman goddess, see Lua.
The Lua (pronouced LOO-ah or /lua/ in SAMPA) programming language is a lightweight imperative/procedural language, designed as glue language with extensible semantics as a primary goal. The name derives from the Portuguese word for moon.
Lua was created by the Computer Graphics Technology Group of the Pontifical Catholic University of Rio de Janeiro in Brazil in 1993. It is released as free software, versions before 5.0 were released under BSD-like license terms, which are non-copyleft. From version 5.0 Lua uses the MIT License.
Lua has been used in many commercial applications (e.g., in LucasArts' Escape from Monkey Island adventure game and robot control software) as well as non-commercial applications (like Angband and its variants). Its closest relative in the family of programming languages is perhaps the Icon programming language, although it could also be compared to Python in its emphasis on ease of use for non-programmers.
Lua has a compact design, and this is evident from the fact that it supports only one data structure, the table. Tables can be used as arrays, sets, hashtables, lists or records, and can also simulate namespaces. There is a similar level of simplicity in Lua's atomic datatypes -- all arithmetic is done in double-precision floating point, for example (however this can be changed to single precision floating point or integer arithmetic). The language's semantics can be extended by redefining certain built in operations on tables, and Lua also supports higher-order functions and garbage collection. It is possible to write object-oriented programs in Lua by combining all these features.
Lua programs are translated into bytecode and interpreted. Although Lua is usable as a stand-alone language, it is primarily designed to be used as an extension language or scripting language within programs written in C. In this respect, it is similar to Tcl. The Lua interpreter can be accessed through a small C library, which includes both the interpreter and an API for accessing its runtime state from a host C program. The API allows different parts of a program to be written in C and Lua and gives two-way access to variables and functions across the languages (i.e., a function in Lua can call a function in C, and vice versa).
Lua features prominently in World of Warcraft, a Massive Multiplayer Online Role-Playing Game, where the users have an unparalleled ability to customize many facets of the game, such as its user interface, character animation and world appearance, via Lua.
External links
- Lua.org
- Lua-users wiki, based on UseMod code.
- LuaBind to bind functions and classes from C++ to Lua code.