Lua

programovací jazyk From Wikipedia, the free encyclopedia

Lua

Lua je odlehčený, vysokoúrovňový, reflexivní, multiparadigmatický, imperativní a procedurální programovací jazyk navržený jako skriptovací jazyk s rozšiřitelnou sémantikou. Název je odvozen z portugalského slova pro měsíc.

Stručná fakta Paradigma, Vznik ...
Lua
Thumb
Paradigmaimperativní (procedurální), strukturovaný
Vznik1993
AutorRoberto Ierusalimschy
Waldemar Celes
Luiz Henrique de Figueiredo
Poslední verze5.4.7 (25. června 2024)
Hlavní implementaceLua, LuaJIT, LLVM-Lua, Lua Alchemy
DialektyMetalua, Idle, GSL Shell
OSCross-platform
LicenceMIT Licence
Weblua.org
Přípona souboru.lua
Zavřít

Historie

Lua vytvořili v roce 1993 Roberto Ierusalimschy, Luiz Henrique de Figueiredo a Waldemar Celes, členové Computer Graphics Technology Group (Skupina technologie počítačové grafiky) na Papežské univerzitě v Rio de Janeiro v Brazílii. Verze Lua předcházející verzi 5.0 byly uveřejněny pod licencí podobnou BSD licenci, od verze 5.0 je Lua distribuován pod licencí MIT.

Lua byl použit v mnoha komerčních aplikacích (např. v adventuře firmy LucasArts Escape from Monkey Island a software ovládajícím roboty) stejně jako těch nekomerčních (Angband a jeho varianty). Mezi jeho nejbližší příbuzné lze řadit Icon pro jeho design a Python pro snadnost použití i pro neprogramátory.

Vlastnosti

Jazyk Lua je určen jako rozšiřující nebo skriptovací jazyk a je dostatečně malý, aby se vešel na nejrůznější hostitelské platformy. Podporuje jen malé množství atomárních datových struktur jako jsou boolovské hodnoty, čísla (implicitně s dvojitou přesností plovoucí čárky) a řetězce. Běžné datové struktury jako jsou pole, množiny, hashovací tabulky, seznamy a záznamy mohou být reprezentovány použitím jediné nativní datové struktury – tabulky, která je v podstatě heterogenním asociativním polem. Jmenné prostory a objekty mohou být vytvořeny taktéž za použití tabulek. Zahrnutím minimálního počtu datových typů se Lua pokouší dosáhnout rovnováhy mezi sílou a velikostí.

Sémantika Lua může být rozšiřována a měněna předefinováním některých zabudovaných funkcí v metatabulkách. Navíc podporuje Lua pokročilé vlastnosti, jako jsou funkce vyššího řádu a garbage collector. Kombinací mnoha těchto vlastností je možné v Lua psát i objektově orientované programy.

Ukázka kódu

Ukázka vytvoření proměnných:

local a, b, c = true, "string", 1

Klasický program Hello world lze napsat následovně:

print('Hello, world!')

Cyklus for (For loop) jde udělat následovně:

-- poslední z trojice čísel je nepovinný a zde nadbytečný inkrement
for i = 1, 10, 1 do
    print(i)
end

(vypíše čísla 1 až 10)

Výpočet faktoriálu ukazuje rekurzivní volání funkce:

function factorial(n)
    if n <= 0 then
        return 1
    end

    return n * factorial(n - 1)
end

Uzávěry a možnost funkce v proměnné („prvotřídní“ funkce):

function adder(x)
  return function(a)
    return a+x
  end
end

add7 = adder(7)
r = add7(3)     --  =>  r == 10

Vnitřní postupy

Programy v Lua nejsou přímo interpretovány, ale jsou kompilovány do bajtkódu, který je následně spuštěn na Lua virtual machine (virtuálním stroji). Proces kompilace je obvykle pro uživatele transparentní a je prováděn za běhu programu. Lze jej však vyvolat offline za účelem zvýšení výkonu nebo omezení velikosti obrazu v paměti hostujícího prostředí vynecháním kompilátoru.

Následující příklad ukazuje výpis bajtkódu výše popsané funkce pro 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

Aplikace

Lua se uplatňuje především v mnoha hrách, jako je World of Warcraft, masivní onlinová multiplayerová hra na hrdiny, ve které si mohou uživatelé přizpůsobit uživatelské rozhraní, animace postav a vzhled světa právě v jazyku Lua, a sérii Baldur's Gate a videohře MDK2, kde je použit jako skriptovací jazyk pro moduly. Také se objevuje v některých open source hrách, jakými jsou Battle for Wesnoth, Daimonin a hry ve stylu Rogue: ToME a H-World. Skripty v jazyce Lua jsou také využity u her Worms 3D, Worms 4: Mayhem, Mafia II, Roblox a v modifikaci pro GTA V, FiveM. Therescript, použitý k řízení vozidel a animací v There, je mírně upravená verze Lua. Správce oken Ion nebo Awesome používají Lua pro své přizpůsobování a rozšiřování. Program Chat Mapper pro zapisování a ukládání rozhovorů (například mezi postavami ve hrách) používá jazyk Lua k řízení rozhovoru. Program LuaTeX rozšiřuje primitivní příkazy TeXu o možnost zadávání kódu v jazyce Lua.

Je udržován seznam projektů, o nichž se ví, že používají Lua.[1]

Knihy

Odkazy

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.