Avaa päävalikko

Lua on kevyt ja kooltaan pieni skriptikieli. Se on tarkoitettu lähinnä ohjelmien helppoon laajentamiseen, mutta sillä voi myös tehdä laajempiakin kokonaisuuksia. Kielen nimi tulee portugalin sanasta lua, joka tarkoittaa kuuta. Luan logona onkin kuu.

Lua
Lua-Logo.svg
Paradigma proseduraalinen, funktionaalinen, olio-ohjelmointi
Tyypitys heikko, dynaaminen
Muistinhallinta automaattinen
Julkaistu 1993
Kehittäjä Roberto Ierusalimschy, Waldemar Celes, Luiz Henrique de Figueiredo
Vakaa versio 5.3.0 (15.01.2015)
Verkkosivu http://www.lua.org

Lua on pääasiassa proseduraalinen kieli, mutta Lua tukee funktionaalisesta ohjelmoinnista ja olio-ohjelmoinnista tunnettuja ominaisuuksia. Luassa on muun muassa ensimmäisen kertaluokan funktiot täydellä leksikaalisella näkyvyydellä. Muita kielen ominaisuuksia ovat assosiatiiviset taulukot, vuoroittaisrutiinit sekä metataulut. Kielessä on mahdollista käyttää moniperintää.[1]

Lua on julkaistu MIT-lisenssin alla, joka sallii hyvin vapaan käytön jopa kaupallisiin tarkoituksiin. Luaa käytetäänkin paljon erilaisissa sovellusohjelmissa (esim. VLC, Lightroom) ja tietokonepelien sisäisenä skriptikielenä (esim. World of Warcraft).[2]

Lua on suunniteltu helposti yhdistettäväksi muihin ohjelmointikieliin. Alkuperäisessä toteutuksessa on rajapinta, jota voi käyttää C ja C++ -ohjelmointikielillä. Tämän lisäksi rajapintoja löytyy muun muassa Pascalille, .NET:lle sekä Adalle.

ToteutusMuokkaa

Lua käännetään omalle virtuaalikoneelle. Ohjelmat voi kääntää virtuaalikoneen binääreiksi, mutta yleisempi käyttötapa on, että Lua-kääntäjä kääntää ohjelman muistiin ja suorittaa sen suoraan virtuaalikoneessa. Luan virtuaalikone on rekisteripohjainen.

Kielessä ei ole C-kielen kaltaista switch-lausetta, mutta vastaava toiminnallisuus voidaan toteuttaa käyttämällä hakutaulua (lookup-taulua) apuna.[3]

EsimerkkejäMuokkaa

Esimerkkiohjelma tulostaa rivin "Hei maailma!":

print("Hei maailma!")

Seuraava ohjelma laskee annetun luvun kertoman:

-- Kertoma-funktio
function fact (n)
  if n == 0 then
    return 1
  else
    return n * fact(n-1)
  end
end

print("Anna luku:")
a = io.read("*number")   -- Lue luku
print(fact(a))

Kommentti alkaa kahdella viivalla, useammalle riville ulottuva kommentti merkitään hakasulkeisiin.

-- Tämä on yksirivinen kommentti
print("Hei maailma!")
--[[ Tämä on kommentti,
 joka kattaa useamman rivin
]]
print("Hei maailma!")

LähteetMuokkaa

  1. 16.3 – Multiple Inheritance lua.org. Viitattu 14.9.2017.
  2. Lua: about lua.org. Viitattu 9.11.2012.
  3. Switch Statement lua-users.org. Viitattu 8.8.2019. (englanniksi) 

Aiheesta muuallaMuokkaa

Tämä tietotekniikkaan liittyvä artikkeli on tynkä. Voit auttaa Wikipediaa laajentamalla artikkelia.