**Lua** je odľahčený, imperatívny a procedurálny programovací jazyk navrhnutý ako skriptovací jazyk s rozšírenou sémantikou. Názov je odvodený z portugalského slova mesiac.

História
--------

Lua vytvorili v roku 1993 Roberto Ierusalimschy, Luiz Henrique de Figueiredo a Waldemar Celes, členovia Computer Graphics Technology Group (Skupina technológie počítačové grafiky) na Pápežskej univerzite v Rio de Janeiro v Brazílii. Verzie Lua pred verziou 5.0 boli uverejnené pod licenciou podobnou BSD licencii, od verzie 5.0 je Lua distribuovaný pod licenciou MIT.

Lua bol použitý v mnohých komerčných aplikáciach (napr. v dobrodružnej hre firmy LucasArts *Escape from Monkey Island* a software ovládajúci roboty) rovnako ako v tých nekomerčných (Angband a jeho varianty). Medzi jeho najbližších príbuzných patrí Icon pre jeho dizajn a Python pre jednoduchosť použitia aj pre ne-programátorov.

Vlastnosti
----------

Jazyk Lua je určený ako rozširujúci alebo skriptovací jazyk a je dostatočne malý, aby se vošiel na najrôznejšie hostiteľské platformy. Podporuje iba malé množstvo atomárnych dátových štruktúr ako sú boolovské hodnoty, čísla (implicitne s dvojitou presnosťou plávajúcej čiarky) a reťazce. Bežné dátové štruktúry ako sú pole, množiny, hashovacie tabuľky, zoznamy a záznamy môžu byť reprezentované použitím jediné natívnej dátovej štruktúry - tabuľky, ktorá je v podstate heterogénnym asociatívnym poľom. Menné priestory a objekty môžu byť vytvorené taktiež za použitia tabuliek. Zahrnutím minimálneho počtu dátových typov sa Lua pokúša dosiahnuť rovnováhu medzi silou a veľkosťou.

Sémantika Lua môže byť rozširovaná a menená predefinovaním niektorých zabudovaných funkcií v metatabuľkách. Naviac Lua podporuje pokročilé vlastnosti, ako sú funkcie vyššieho rádu a garbage collector. Kombináciou mnohých týchto vlastností je možné v Lua písať aj objektovo orientované programy.

Ukážka kódu
-----------

Ukážka klasického programu "Hello, World!":

```
print("Hello, World!")

```
Výpočet faktoriálu pomocou rekurzívneho volania funkcie:

```
function factorial(n)
    if n <= 0 then
        return 1
    end
    
    return n \* factorial(n - 1)
end

```

Vnútorné postupy
----------------

Programy v Lua nie sú priamo interpretované, ale sú kompilované do tzv. *bytecode* (čítaj bajtkód), ktorý je následne spustený na Lua *virtual machine* (virtuálnom stroji). Proces kompilácie je často pre používateľov transparentný a robí sa za behu programu. Dá sa však vyvolať offline za účelom zvýšenia výkonu alebo omedzenia veľkosti obrazu v pamäti hosťujúceho prostredia vynechaním kompilátoru.

Nasledujúci príklad ukazuje výpis bytecode vyššie popísanej funkcie pre výpočet faktoriálu (v Lua 5.1):

```
function <factorial.lua:1,7> (10 instructions, 40 bytes at 0x805ee50)
1 param, 3 slots, 0 upvalues, 1 local, 3 constants, 0 functions
    1	[2]	LE       	0 0 -1	; compare value to 0
    2	[2]	JMP      	2	; to line 5
    3	[3]	LOADK    	1 -2	; 1
    4	[3]	RETURN   	1 2
    5	[6]	GETGLOBAL	1 -3	; factorial
    6	[6]	SUB      	2 0 -2	; - 1
    7	[6]	CALL     	1 2 2
    8	[6]	MUL      	1 0 1
    9	[6]	RETURN   	1 2
   10	[7]	RETURN   	0 1

```

Aplikácie
---------

Lua sa uplatňuje predovšetkým v mnohých hrách, ako je World of Warcraft, masívna onlinová multiplayerová hra na hrdinov, v ktorej si môžu používatelia prispôsobiť používateľské rozhranie, animácie postáv a vzhľad sveta práve v jazyku Lua, a sérii Baldur's Gate a videohre MDK2, kde je použitý ako skriptovací jazyk pre moduly. Taktiež sa objavuje v niektorých open source hrách, ako sú Battle for Wesnoth, Daimonin a hry v štýle Rogue: ToME a H-World. Skripty v jazyku Lua sú tiež využité v hrách Worms 3D, Worms 4: Mayhem a Mafia II. Therescript, použitý k riadeniu vozidiel a animácií v There, je mierne upravená verzia Lua. Správca okien Ion používa Lua pre svoje prispôsobovanie a rozširovanie. Program Chat Mapper pre zapisovanie a ukladanie rozhovorov (napríklad medzi postavami v hrách) používa jazyk Lua k riadeniu rozhovoru. Program LuaTeX rozširuje primitívne príkazy TeXu o možnosť zadávania kódu v jazyku Lua.

Zoznam projektov, o ktorých sa vie, že používajú Lua, je umiestnený na tejto stránke.

Knihy
-----

* Programming in Lua
* Game Development with Lua

Externé odkazy
--------------

* Lua.org
* Lua-users wiki
* LuaForge hosting a katalóg projektov v Lua.
* LuaBind pre viazanie funkcií a tried z C++ ku kódu v Lua.
* CPB Archivované 2005-04-04 na Wayback Machine knižnica pre spojení kódu v C++ a Lua.
* prístup ku kódu C/C++ z Lua

Zdroj
-----

*Tento článok je čiastočný alebo úplný preklad článku Lua na českej Wikipédii.*

| * z
* d
* u
Významné programovacie jazyky |
| --- |
| 
* Ada
* ALGOL
* APL
* AWK
* BASIC
* C
* C++
* C#
* COBOL
* D
* Eiffel
* Erlang
* F#
* Forth
* Fortran
* Go
* Haskell
* IDL
* Java
* JavaScript
* JSI
* Kotlin
* Lisp
* Logo
* Lua
* ML
* Objective-C
* Object Pascal (Delphi)
* Pascal
* Perl
* PHP
* PL/I
* PL/M
* PL/SQL
* Prolog
* Python
* R
* Ruby
* Rust
* SAS
* Scratch
* sh
* Scheme
* Simula
* Smalltalk
* SQL
* Swift
* Visual Basic

 |