Lua
Author
Albert FloresLua je multi-paradigmatický programovací jazyk, který se vyznačuje jednoduchou syntaktickou strukturou, efektivitou a modularitou. Byl vyvinut v roce 1993 v CERNu jako skriptovací jazyk pro manipulaci s daty a popis chování modelů při jejich analýze. Od té doby našel široké uplatnění především ve vývoji her, rozšířených reality a systémového programování. Lua se řadí mezi interpretované jazyky a výrazně snižuje čas potřebný pro vývoj a úpravu softwaru. Svého oblíbence našla zejména ve vývoji her, kde se využívá pro tvorbu umělé inteligence, algoritmů a aplikačních rozhraní. Díky své jednoduchosti a rychlosti je také často využívána v integrovaných systémech, jako jsou například mobilní telefony nebo digitální televize. Lua disponuje velkým množstvím knihoven a frameworků, které usnadňují vývoj aplikací. Kromě toho umožňuje také jednoduchou integraci s jinými programovacími jazyky, což z něj činí ideální volbu pro projekty, které vyžadují komunikaci mezi různými částmi softwaru. Lua je open-source jazyk, což znamená, že je volně dostupný a jeho zdrojový kód je k dispozici komunitě vývojářů. Díky tomu je možné provádět různé úpravy a rozšíření jazyka, což ho dělá velmi flexibilním a přizpůsobivým na míru potřebám konkrétního projektu. Lua je často označována jako "embeddable scripting language", což znamená, že je možné ji zabudovat do již existujících programů nebo systémů a využít ji jako jejich skriptovací jazyk. Díky své jednoduchosti a kompaktnosti je také populární volbou pro vývoj pro vyučování programování nebo pro hraní s programováním v amatérském prostředí. Celkově lze říci, že Lua je velmi výkonný a flexibilní programovací jazyk, který najde uplatnění ve velkém množství oblastí. Jeho jednoduchost a modularita ho činí oblíbenou volbou pro vývojáře po celém světě.
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.
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. +more0 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). +more 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. +more 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. +more 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!') Příklad 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
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. +more 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 (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. +more 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 [url=http://www. chatmapper. com/]Chat Mapper[/url] 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.
Knihy
[url=http://www.inf.puc-rio.br/~roberto/book/]Programming in Lua[/url] * [url=https://www.ereading.cz/vyvojovy-sw/programovaci-jazyk-lua-12651]Programovací jazyk Lua, Pavel Tišnovský, 2014[/url]
Odkazy
Reference
Externí odkazy
[url=http://www. lua. +moreorg/]Lua. org[/url] * [url=http://lua-users. org/wiki/]Lua-users wiki[/url] * [url=http://www. luaforge. net/]LuaForge[/url] hosting a katalog projektů v Lua. * [url=http://luabind. sf. net]LuaBind[/url] pro vázání funkcí a tříd z C++ ke kódu v Lua. * [url=https://web. archive. org/web/20050404004755/http://www. thomasandamy. com/projects/CPB/]CPB[/url] knihovna pro spojení kódu v C++ a Lua. * [url=http://www. tecgraf. puc-rio. br/~celes/tolua/]přístup ke kódu C/C++ z Lua[/url] * [url=http://www. root. cz/serialy/programovaci-jazyk-lua/]Výukový kurz Lua na root. cz[/url].
Kategorie:Programovací jazyky Kategorie:Software pod licencí MIT Kategorie:Objektově orientované programovací jazyky