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ů.

widgety

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?
120na80.cz: Pálení žáhy: která jídla ne a co nás uzdraví?

Pálení žáhy: která jídla ne a co nás uzdraví?

Lupa.cz: Proč jsou firemní počítače pomalé?

Proč jsou firemní počítače pomalé?

Měšec.cz: TEST: Vyzkoušeli jsme pražské taxikáře

TEST: Vyzkoušeli jsme pražské taxikáře

Lupa.cz: Cimrman má hry na YouTube i vlastní doodle

Cimrman má hry na YouTube i vlastní doodle

Vitalia.cz: Tradiční čínská medicína a rakovina

Tradiční čínská medicína a rakovina

DigiZone.cz: Samsung EVO-S: novinka pro Skylink

Samsung EVO-S: novinka pro Skylink

Vitalia.cz: Test dětských svačinek: Tyhle ne!

Test dětských svačinek: Tyhle ne!

Vitalia.cz: Pryč se zastaralým stravováním ve školách

Pryč se zastaralým stravováním ve školách

DigiZone.cz: Světový pohár v přímém přenosu na ČT

Světový pohár v přímém přenosu na ČT

Lupa.cz: Jak se prodává firma za miliardu?

Jak se prodává firma za miliardu?

Vitalia.cz: 5 chyb, které děláme při skladování potravin

5 chyb, které děláme při skladování potravin

Vitalia.cz: Jak Ondra o astma přišel

Jak Ondra o astma přišel

DigiZone.cz: Ginx TV: pořad o počítačových hráčích

Ginx TV: pořad o počítačových hráčích

Podnikatel.cz: Byla finanční manažerka, teď cvičí jógu

Byla finanční manažerka, teď cvičí jógu

Vitalia.cz: Tahák, jak vyzrát nad zápachem z úst

Tahák, jak vyzrát nad zápachem z úst

DigiZone.cz: Numan Two: rozhlasový přijímač s CD

Numan Two: rozhlasový přijímač s CD

Podnikatel.cz: Udělali jsme velkou chybu, napsal Čupr

Udělali jsme velkou chybu, napsal Čupr

Vitalia.cz: dTest odhalil ten nejlepší kečup

dTest odhalil ten nejlepší kečup

Vitalia.cz: Tesco nabízí desítky tun jídla zdarma

Tesco nabízí desítky tun jídla zdarma

DigiZone.cz: Technisat připravuje trojici DAB

Technisat připravuje trojici DAB