Lua

Linux.fista
Tux.png
Linux.fi-wikissä artikkelit käsittelevät yleensä aihettaan siltä osin, kuin se koskee Linuxia ja avoimia/vapaita ohjelmistoja. Yleisluontoisemman artikkelin tästä aiheesta löydät tietosanakirja Wikipediasta.
Lua
Lua-Logo.svg
Paradigma proseduaalinen, funktionaalinen, oliopohjainen
Tyypitys heikko, dynaaminen
Suoritusmalli tulkattava, käännettävä
Muistinhallinta automaattinen
Kehittäjä(t) Roberto Ierusalimschy, Waldemar Celes, Luiz Henrique de Figueiredo
Ensijulkaisu 1993
Vakaa versio 5.4.4  / 26. tammikuuta 2022 [1]
Tyyppi ohjelmointikieli, kehitystyökalut
Lisenssi MIT
Kotisivu lua.org
Lähdekoodi 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.

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;
}

Skripti1.lua sisältö voisi olla esimerkiksi tällainen.

function tellme()
	io.write("Tämä tuloste luetaan Lua tellme-funktion kautta.\n")
end

Tiedosto ohjelma.cpp voidaan kääntää Linuxilla seuraavasti:

g++ ohjelma.cpp -o ohjelma

Katso myös[muokkaa]

  • Löve on Lua-scriptikieltä käyttävä pelimoottori.

Aiheesta muualla[muokkaa]

v  k  m
GameProgramming.png Peliohjelmointiin liittyvät artikkelit
 Yleiset  Peliohjelmointi Linuxilla | Musiikki ja äänet | Kuvankäsittely | Mallinnus | Lokalisointi
 2D 
 Pelimoottorit  Solar2D | Defold | Fife | LÖVE
  -Karttamuokkaimet  Tiled | OGMO Editor
 3D 
 Avoimet  Banshee 3D | Castle Game Engine | DarkPlaces | Defold | Godot Engine | Grit engine | Irrlicht Engine | id Tech (Quake) | ioquake3 | jMonkeyEngine | Lightfeather 3D | OGRE | O3DE | Panda3D | Serious | UPBGE | QFusion
 Suljetut  Axis Game Factory | CryEngine | Source | Unity3D | Unreal Engine
 Keskeytyneet  Crystal Space
  kuvankäsittely tekstuurikartoitus mallinnus 
 Kuvankäsittely  Gimp
  -Pikseligrafiikka  Aseprite | Pixelator
 Mallinnus  Blender | UPBGE | Bforartists | MakeHuman | Neobarok | ngPlant | ArbaroDust3D
  -Tekstuurikartoitus  AwesomeBump | Material Maker | Ptex
  -Tekstuurien luonti  ArmorLab
  -Pintakuviomaalaus  ArmorPaint
 Maastogeneraattorit  TerraForge3D
 Ohjelmointikielet 
  -Käännettävät  C | C++
  -Tulkattavat  Java | Python | Lua
  Ohjelmointimoduulit  pygame
  -Kirjastot  Assimp | OpenGL | Vulkan | SDL
v  k  m
Emojione BW 1F4AC.svg Ohjelmointikielet
 Käännettävät  Assembly | C | C++ | Go | Haxe | Haskell | Java | Pascal
 Tulkattavat  Python | Perl | PHP | Ruby
 -skriptikielet  Lua | Bash
 GPGPU  OpenCL
 muut  GLSL