Lua: vestavitelný minimalista

Jakub Šťastný 10. 9. 2007

Programovací jazyk Lua možná není jazykem pro všechny a pro všechno, pokud ale hledáte minimalistický a rozšiřitelný jazyk, který by se dal velmi jednoduše a nenásilně používat jako vestavěný skriptovací jazyk vaší aplikace, určitě Luu nepřehlédněte – malá, ale šikovná, taková je Lua.

Jak Lua vznikla aneb pár slov k historii jazyka

Lua je docela mladý jazyk – světlo světa spatřila teprve v roce 1993. Kdože v tom má prsty? Roberto Ierusalimschy, Luiz Henrique de Figueiredo a Waldemar Celes z Rio de Janeira. Mezi zajímavosti patří i sám název jazyka – ten totiž pochází z portugalského slova pro měsíc.

Co to je Lua?

Lua patří mezi moderní dynamicky typované skriptovací jazyky. Jedná se o minimalistický skriptovací jazyk určený především pro rozšiřování aplikací jako jejich interní skriptovací jazyk, stejně dobře ale může sloužit sama o sobě pro psaní drobnějších samostatných aplikací. Je implementována jako knihovna napsaná v čistém ANSI C.

Pro čtenáře Roota jistě není bez zajímavostí, že Lua je od verze 2.1 uvolněna jako free software, přičemž od verze 5.0 využívá populární MIT licenci, verze předchozí byly k mání pod licencí podobné licenci BSD.

Vlastnosti jazyku Lua

V porovnání s ostatními programovacími jazyky Lua jednoznačně vyniká svou systémovou nenáročností – rychlostí a paměťovou šetrností. V porovnání s ostatními skriptovacími jazyky se jedná skutečně o značný rozdíl a má smysl uvažovat o jejím použitím i na hardwarově kritických částech aplikace.

Vzhledem k minimalismu jazyka podporuje Lua pouze několik málo základních datových struktur – nil, boolean, number a string, function, thread a userdata. Kolekce zde pak zastupuje jediná struktura – tabulka čili table. Tabulkou lze nahradit jak klasická, tak asociativní pole a nejen je – tabulky mají poměrně úctihodné možnosti a mimo jiné lze jimi nahradit i objekty. Neobávejte se, že OOP bude v takovémto podání ořezané – standardních možností jako například dědičnosti se dočkáte, i když konečné řešení je volné a závisí čistě na programátorovi.

Co se týče podporovaných programátorských technik, Lua se profiluje jako klasický moderní skriptovací jazyk – podporuje jak klasické techniky procedurálního programování, tak také obsahuje prvky z funkcionálního programování. Podpora OOP je samozřejmostí, i když v dost netradičním podání – je to spíše takové „udělej si sám“.

Kde je Lua používána?

Lua je ideální jazyk pro tvorbu her. Příkladem budiž například Baldur's Gate, Fish Fillets, World of Warcraft a mnohé další. Zde však možnosti využití Lua zdaleka nekončí, důkazem čehož může docela dobře být jak tiled window manager ION, tak například Elinks nebo APT-RPM. Pro další příklady použití se můžete podívat na domovskou stránku jazyka Lua.

Pár ukázek aneb Lua v praxi

Abyste viděli, jak se s Luou pracuje, připravil jsem si pro vás jednoduchou ukázku. Protože Hello World nic zajímavého nepoví a výpočet faktoriálu najdete na každé druhé stránce, zkusil jsem připravit něco vlastního:

#!/usr/bin/env lua
-- just a head
print [[
This program is free software.
You can use it, but it is provided as usual with no guarantees.
]]

-- functions
function salut(name, surname)
   print("Hello " .. name .. " " .. surname .. " aka " .. os.getenv("USER") .. "!")
   print("Today is " .. os.date("%d.%m.%Y"))
end

salut("Jakub", "Stastny")

Po spuštění dostanu toto:

jakubstastny@MacBoocek botanicus $ chmod +x test.lua
jakubstastny@MacBoocek botanicus $ ./test.lua
Hello Jakub Stastny aka botanicus!
Today is 09.09.2007

Nic světaborného, ale pro ilustraci to doufám stačí. Vřele doporučuji předhodit zdrojový kód nějakému editoru se zvýrazňováním syntaxe, protože že komentář začíná dvěma pomlčkami za sebou, nemusí být hned každému jasné. Váš Vim či Emacs to zvládne bez problémů.

Luu lze testovat jak klasicky zapsáním kódu do skriptu, tak také interaktivně. Do interaktivního režimu se dostanete jednoduše tak, že zavoláte interpret lua bez parametrů.

Stojí za zmínku, že zdrojový kód lze pro rychlejší běh také zkompilovat do bytekódu, k čemuž poslouží utilitka luac, kompiler. Když jej poštvete na skript v Lue, vyplivne vám soubor luac.out, což je právě zmíněný bytekód. Je platformově nezávislý, alespoň v rámci stejněbitových systémů – 32bitové navzájem či 64bitové navzájem, 32 a 64bitové mezi sebou však nikoliv. Spustíte jej pomocí lua luac.out.

Závěr

Lua je pěkný a dle mého názoru neprávem opomíjený programovací jazyk. Protože patrně nejpalčivější problém malé rozšířenosti jazyka Lua v našich podmínkách je totální nedostatek informací na česky mluvícím internetu, rozhodl jsem se pomoci alespoň tímto krátkým seznamovacím článkem. Osobně mě Lua zaujala a čas od času ji alespoň na drobné skriptíky používám.

Odkazy

Ohodnoťte jako ve škole:

Průměrná známka 2,36

Našli jste v článku chybu?
Zasílat nově přidané názory e-mailem
Podnikatel.cz: Paušální daň: Sociální, zdravotní v jednom

Paušální daň: Sociální, zdravotní v jednom

DigiZone.cz: O2TV zve na souboj Ledecké s Myslivcovou

O2TV zve na souboj Ledecké s Myslivcovou

120na80.cz: Tady se vaří padělané léky

Tady se vaří padělané léky

Vitalia.cz: 10 rad šéfkuchařů pro perfektní grilování

10 rad šéfkuchařů pro perfektní grilování

120na80.cz: Jak správně vytrhnout mléčný zub?

Jak správně vytrhnout mléčný zub?

DigiZone.cz: Panasonic v Praze uvedl TV pro rok 2016

Panasonic v Praze uvedl TV pro rok 2016

Lupa.cz: Válka e-shopů. Alza končí s Heurekou

Válka e-shopů. Alza končí s Heurekou

Podnikatel.cz: Různé podoby lahve Coca–Coly. Úchvatné

Různé podoby lahve Coca–Coly. Úchvatné

Vitalia.cz: Proč máme prasklý chléb nejraději?

Proč máme prasklý chléb nejraději?

DigiZone.cz: Rádio Retro spouští stream o Karlu IV.

Rádio Retro spouští stream o Karlu IV.

DigiZone.cz: Změní se veřejnoprávní status ČT?

Změní se veřejnoprávní status ČT?

Vitalia.cz: Falšovaný salám v Kauflandu

Falšovaný salám v Kauflandu

Vitalia.cz: Tetanus v USA – i po odřeninách

Tetanus v USA – i po odřeninách

DigiZone.cz: Stream představil souboj žroutů

Stream představil souboj žroutů

Vitalia.cz: Mražené ryby z Makra byly falšované

Mražené ryby z Makra byly falšované

120na80.cz: 5 triků, jak zastavit krvácení po holení

5 triků, jak zastavit krvácení po holení

120na80.cz: 10 dezinfekcí: Vede „starý dobrý“ peroxid

10 dezinfekcí: Vede „starý dobrý“ peroxid

Vitalia.cz: Vydával se za český, prozradila ho DNA

Vydával se za český, prozradila ho DNA

120na80.cz: Zjistěte, zda je vaše klíště infikované

Zjistěte, zda je vaše klíště infikované

Podnikatel.cz: Když už je sexy, tak ať taky funguje

Když už je sexy, tak ať taky funguje