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

Našli jste v článku chybu?
Vitalia.cz: Očkování je nutné, říká homeopatka

Očkování je nutné, říká homeopatka

Měšec.cz: Do ostravské MHD bez jízdenky. Stačí karta

Do ostravské MHD bez jízdenky. Stačí karta

Měšec.cz: Platíme NFC mobilem. Konečně to funguje!

Platíme NFC mobilem. Konečně to funguje!

Vitalia.cz: „Sjíždět“ porno není bez rizika

„Sjíždět“ porno není bez rizika

Lupa.cz: Olympiáda zakázala GIFy. Moc to nepomáhá

Olympiáda zakázala GIFy. Moc to nepomáhá

Vitalia.cz: Ženy, které milují příliš, jsou neštěstí

Ženy, které milují příliš, jsou neštěstí

Vitalia.cz: Musí moudrák opravdu ven?

Musí moudrák opravdu ven?

Lupa.cz: Hackujete? Můžete mít problém sehnat práci

Hackujete? Můžete mít problém sehnat práci

Měšec.cz: Udali ho na nelegální software a přišla Policie

Udali ho na nelegální software a přišla Policie

Vitalia.cz: Za její cukrovkou stojí rodiče

Za její cukrovkou stojí rodiče

Podnikatel.cz: Kauza z Vinohrad pokračuje. Policie se omlouvá

Kauza z Vinohrad pokračuje. Policie se omlouvá

Lupa.cz: Elektronika tajemství zbavená. Jak s ní začít?

Elektronika tajemství zbavená. Jak s ní začít?

Měšec.cz: Kurzy platebních karet: vyplatí se platit? (TEST)

Kurzy platebních karet: vyplatí se platit? (TEST)

Podnikatel.cz: Pozor na vykuky, imitují služby České pošty

Pozor na vykuky, imitují služby České pošty

Lupa.cz: Nechcete datacentrum? Jsou na prodej

Nechcete datacentrum? Jsou na prodej

Měšec.cz: Ceny PHM v Evropě. Finty na úspory

Ceny PHM v Evropě. Finty na úspory

Měšec.cz: Se stavebkem k soudu už (většinou) nemusíte

Se stavebkem k soudu už (většinou) nemusíte

Vitalia.cz: 9 potravin, které nesmí chybět v jídelníčku těhotné

9 potravin, které nesmí chybět v jídelníčku těhotné

Měšec.cz: Co s reklamací, když e-shop krachuje?

Co s reklamací, když e-shop krachuje?

Lupa.cz: Měřičům síly hesla se nedá věřit. Víte proč?

Měřičům síly hesla se nedá věřit. Víte proč?