Nykyinen versio |
Oma tekstisi |
Rivi 1: |
Rivi 1: |
| {{Perustietoa}} | | {{Perustietoa}} |
| {{Ohjelmointikieli
| |
| | nimi = Lua
| |
| | logo = [[Tiedosto:Lua-Logo.svg|150px]]
| |
| | paradigma = proseduaalinen, funktionaalinen, oliopohjainen
| |
| | tyypitys = heikko, dynaaminen
| |
| | suoritusmalli = tulkattava, käännettävä
| |
| | muistinhallinta = [[wikipedia:fi:Automaattinen_roskienkeräys|automaattinen]]
| |
| | tekijä =
| |
| | kehittäjä = Roberto Ierusalimschy, Waldemar Celes, Luiz Henrique de Figueiredo
| |
| | moottori =
| |
| | ensijulkaisu = 1993
| |
| | vakaaversio = 5.4.4
| |
| | vakaapvm = 26. tammikuuta 2022 [https://www.lua.org/versions.html#5.4]
| |
| | kehitysversio =
| |
| | kehityspvm =
| |
| | ohjelmoitu =
| |
| | käyttöliittymä =
| |
| | tyyppi = ohjelmointikieli, kehitystyökalut
| |
| | lisenssi = [[MIT]]
| |
| | kotisivu = [https://www.lua.org/ lua.org]
| |
| | lähdekoodi = [https://www.lua.org/ftp/ lua.org/ftp/]
| |
| }}
| |
| '''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.
| | '''Lua''' on proseduaalinen ja olio-pohjainen scriptikieli, joka on suunniteltu ohjelmien toiminnallisuuden laajentamiseen. Kielellä voi muös tehdä omia itsenäisiä ohjelmia. Lua on totetutettu pienenä C-functiokirjastona. 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. |
| <syntaxhighlight lang="c">
| |
| extern "C"
| |
| {
| |
| #include <lua5.2/lua.h>
| |
| #include <lua5.2/lauxlib.h>
| |
| #include <lua5.2/lualib.h>
| |
| #include <stdlib.h> /* For function exit() */
| |
| #include <stdio.h> /* For input/output */
| |
| #include <string.h>
| |
| }
| |
| | |
| // Aliohjelma virhetilanteen tulostamista varten
| |
| void bail(lua_State *L, const char *msg){
| |
| fprintf(stderr, "\nFATAL ERROR:\n %s: %s\n\n",
| |
| msg, lua_tostring(L, -1));
| |
| exit(1);
| |
| }
| |
| | |
| int main(void)
| |
| {
| |
| // Luodaan LUA-virtuaalikone.
| |
|
| |
| lua_State *L;
| |
|
| |
| L = luaL_newstate();
| |
| | |
| // Otetaan LUA:n kirjastot käyttöön.
| |
|
| |
| luaL_openlibs(L);
| |
| | |
| // Ladataan skipti1.lua käyttöön, mutta ei suoriteta sitä
| |
| if (luaL_loadfile(L, "scripti1.lua"))
| |
| // Virhe jos tiedostoa ei voi lukea
| |
| bail(L, "luaL_loadfile() failed");
| |
| | |
| // Suorita skipti1.lua
| |
| if (lua_pcall(L, 0, 0, 0))
| |
| // Virhe jos tiedoston sisällössä on virhe
| |
| bail(L, "lua_pcall() failed");
| |
|
| |
| lua_getglobal(L, "tellme"); /* Mikä funktio suoritetaan*/
| |
| | |
| if (lua_pcall(L, 0, 0, 0)) /* Suoritetaan funktio*/
| |
| bail(L, "lua_pcall() failed"); /* Virhe jos lua tiedostossa on virhe.*/
| |
|
| |
| lua_close(L);
| |
| return 0;
| |
| }
| |
| </syntaxhighlight>
| |
| | |
| Skripti1.lua sisältö voisi olla esimerkiksi tällainen.
| |
| <syntaxhighlight lang="lua">
| |
| function tellme()
| |
| io.write("Tämä tuloste luetaan Lua tellme-funktion kautta.\n")
| |
| end
| |
| </syntaxhighlight>
| |
| | |
| Tiedosto <tt>ohjelma.cpp</tt> voidaan kääntää Linuxilla seuraavasti:
| |
| g++ ohjelma.cpp -o ohjelma
| |
|
| |
|
| ==Katso myös== | | ==Katso myös== |
Rivi 89: |
Rivi 7: |
|
| |
|
| ==Aiheesta muualla== | | ==Aiheesta muualla== |
| | * [http://www.lua.org/ Ohjelman kotisivu] |
| * [http://yaamboo.com/suomipelit/artikkeli.php?id=52 Suomipelit - LUA:n alkeet] | | * [http://yaamboo.com/suomipelit/artikkeli.php?id=52 Suomipelit - LUA:n alkeet] |
|
| |
|
| {{Pelinteko}}
| |
| {{Ohjelmointikielet}}
| |
| [[Luokka:Kehitystyökalut]] | | [[Luokka:Kehitystyökalut]] |