Hlavní navigace

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?

8. 4. 2015 17:49

akjfdadsf (neregistrovaný)

seriózní práce a python. Oxymorón.

29. 9. 2007 16:53

uživatel si přál zůstat v anonymitě
Ano myslím tím addony, které se píšou v Lua..
Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Podnikatel.cz: Vrátí zvýhodnění, ale výrazně omezí paušály

Vrátí zvýhodnění, ale výrazně omezí paušály

120na80.cz: Horní cesty dýchací. Zkuste fytofarmaka

Horní cesty dýchací. Zkuste fytofarmaka

DigiZone.cz: Flix TV má set-top box s HEVC

Flix TV má set-top box s HEVC

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Root.cz: Vypadl Google a rozbilo se toho hodně

Vypadl Google a rozbilo se toho hodně

Root.cz: Certifikáty zadarmo jsou horší než za peníze?

Certifikáty zadarmo jsou horší než za peníze?

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Podnikatel.cz: Babiš: E-shopy z EET možná vyjmeme

Babiš: E-shopy z EET možná vyjmeme

Vitalia.cz: Dáte si jahody s plísní?

Dáte si jahody s plísní?

Měšec.cz: Finančním poradcům hrozí vracení provizí

Finančním poradcům hrozí vracení provizí

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Podnikatel.cz: Na poslední chvíli šokuje výjimkami v EET

Na poslední chvíli šokuje výjimkami v EET

DigiZone.cz: ČRa DVB-T2 ověřeno: Hisense a Sencor

ČRa DVB-T2 ověřeno: Hisense a Sencor

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy