Ero sivun ”Lua” versioiden välillä
Siirry navigaatioon
Siirry hakuun
Paranneltu ulkoasua. Mainittu LuaJIT. Lisätty lisäksi yksinkertaisempi esimerkkiohjelma.
p (→Aiheesta muualla: Lisätty PIL ja LuaRocks.) |
(Paranneltu ulkoasua. Mainittu LuaJIT. Lisätty lisäksi yksinkertaisempi esimerkkiohjelma.) |
||
Rivi 24: | Rivi 24: | ||
'''Lua''' on proseduaalinen ja olio-pohjainen skriptikieli, joka on suunniteltu ohjelmien toiminnallisuuden laajentamiseen. Kielellä voi myös tehdä omia itsenäisiä ohjelmia. Lua on totetutettu pienenä [[C]]-funktiokirjastona. Tämän ansiosta se toimii useilla käyttöjärjestelmillä. Automaatisen muistinhallinnan ja pienten muistivaatimuksiensa ansiosta sitä voi myös käyttää sulautetuissa järjestelmissä. Aivan kuten [[Python]] Lua-kieli on tulkattava ja se tarvitsee tulkin eli virtuaalikoneen. Lua on suunniteltu yhdistettäväksi muihin ohjelmointikieliin. Luodut ohjelmat voi kääntää virtuaalikoneen binääreiksi, mutta yleisin käyttötapa on kääntää ohjelma Lua:n muistiin ja suorittaa se suoraan virtuaalikoneessa. Lua-kieltä on käytetty monissa ohjelmissa kuten [[VLC]]:ssä, Lightroomissa ja peleissä mm. World of Warcraftissa. | '''Lua''' on proseduaalinen ja olio-pohjainen skriptikieli, joka on suunniteltu ohjelmien toiminnallisuuden laajentamiseen. Kielellä voi myös tehdä omia itsenäisiä ohjelmia. Lua on totetutettu pienenä [[C]]-funktiokirjastona. Tämän ansiosta se toimii useilla käyttöjärjestelmillä. Automaatisen muistinhallinnan ja pienten muistivaatimuksiensa ansiosta sitä voi myös käyttää sulautetuissa järjestelmissä. Aivan kuten [[Python]] Lua-kieli on tulkattava ja se tarvitsee tulkin eli virtuaalikoneen. Lua on suunniteltu yhdistettäväksi muihin ohjelmointikieliin. Luodut ohjelmat voi kääntää virtuaalikoneen binääreiksi, mutta yleisin käyttötapa on kääntää ohjelma Lua:n muistiin ja suorittaa se suoraan virtuaalikoneessa. Lua-kieltä on käytetty monissa ohjelmissa kuten [[VLC]]:ssä, Lightroomissa ja peleissä mm. World of Warcraftissa. | ||
Esimerkki Linuxille sovitetusta Lua-virtuaalikoneesta [[C++]]-kielellä toteutettuna. Luodaan seuraavanlainen ohjelma. | '''LuaJIT''' on vaihtoehtoinen toteutus Lua-kielen versiosta 5.1 (LuaJIT sisältää myös eräitä lisäosia). Sen tekee erikoiseksi se, että se on toteutettu JIT-kääntäjällä, mikä takaa erittäin hyvän suorituskyvyn. | ||
== Esimerkkejä == | |||
Yksinkertainen esimerkki. | |||
<syntaxhighlight lang="lua"> | |||
#!/usr/bin/lua | |||
local taulukko = {} | |||
math.randomseed(os.time()) | |||
for i=1,20 do | |||
taulukko[i] = math.random(1, 10) | |||
end | |||
-- Taulukot alkavat indeksistä 1. | |||
-- Tämän esimerkin lisäksi, taulukot toimivat myös kuten Perlin silput (eng. "hash") tai Pythonin sanakirjat. | |||
-- Eli ne elävät tavallaan "kaksoiselämää". | |||
-- Mutta ei kuitenkaan käytetä tätä ominaisuutta tässä esimerkissä. | |||
local laskuri = 1 | |||
while laskuri <= 20 do | |||
if taulukko[laskuri] % 2 == 0 then | |||
print(taulukko[laskuri] .. " on parillinen!") | |||
end | |||
laskuri = laskuri + 1 | |||
end | |||
</syntaxhighlight> | |||
=== Luan käyttäminen C++ projektissa === | |||
Esimerkki Linuxille sovitetusta Lua-virtuaalikoneesta [[C++]]-kielellä toteutettuna. Luodaan seuraavanlainen C++-ohjelma. | |||
<syntaxhighlight lang="c"> | <syntaxhighlight lang="c"> | ||
extern "C" | extern "C" | ||
Rivi 92: | Rivi 122: | ||
* [https://lua.org/pil/contents.html Programming in Lua (first edition) - Ilmainen e-kirja] | * [https://lua.org/pil/contents.html Programming in Lua (first edition) - Ilmainen e-kirja] | ||
* [https://luarocks.org LuaRocks paketinhallintajärjestelmä Lualle] | * [https://luarocks.org LuaRocks paketinhallintajärjestelmä Lualle] | ||
* [https://github.com/lunarmodules/luacheck luacheck - Lint-tyylinen ohjelma, jolla voi tarkistaa omat Lua-ohjelmat] | |||
* [https://luajit.org LuaJIT-projektin kotisivut] | |||
{{Pelinteko}} | {{Pelinteko}} | ||
{{Ohjelmointikielet}} | {{Ohjelmointikielet}} | ||
[[Luokka:Kehitystyökalut]] | [[Luokka:Kehitystyökalut]] |