Ero sivun ”Lua” versioiden välillä

Linux.fista
Siirry navigaatioon Siirry hakuun
(Kirjoitusvirhe (muös / myös))
pEi muokkausyhteenvetoa
 
(10 välissä olevaa versiota samalta käyttäjältä ei näytetä)
Rivi 1: Rivi 1:
{{Perustietoa}}
{{Perustietoa}}
 
{{Ohjelmointikieli
'''Lua''' on proseduaalinen ja olio-pohjainen scriptikieli, joka on suunniteltu ohjelmien toiminnallisuuden laajentamiseen. Kielellä voi myö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.
| 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.
Esimerkki Linuxille sovitetusta Lua-virtuaalikoneesta [[C++]]-kielellä toteutettuna. Luodaan seuraavanlainen ohjelma.
<source lang="cpp">
<syntaxhighlight lang="c">
extern "C"
extern "C"
{
{
Rivi 44: Rivi 65:
  bail(L, "lua_pcall() failed");
  bail(L, "lua_pcall() failed");
lua_getglobal(L, "tellme");                 /* Mikä funktio suoritetaan */
lua_getglobal(L, "tellme");       /* Mikä funktio suoritetaan*/


     if (lua_pcall(L, 0, 0, 0))                 /* Suoritetaan funktio */
     if (lua_pcall(L, 0, 0, 0))   /* Suoritetaan funktio*/
  bail(L, "lua_pcall() failed");         /* Virhe jos lua tiedostossa on virhe. */
  bail(L, "lua_pcall() failed"); /* Virhe jos lua tiedostossa on virhe.*/
    
    
lua_close(L);
lua_close(L);
return 0;
return 0;
}
}
</source>
</syntaxhighlight>


Skripti1.lua sisältö voisi olla esimerkiksi tällainen.
Skripti1.lua sisältö voisi olla esimerkiksi tällainen.
<source lang="lua">
<syntaxhighlight lang="lua">
function tellme()
function tellme()
io.write("Tämä tuloste luetaan Lua tellme-funktion kautta.\n")
io.write("Tämä tuloste luetaan Lua tellme-funktion kautta.\n")
end
end
</source>
</syntaxhighlight>


Tiedosto <tt>ohjelma.cpp</tt> voidaan kääntää Linuxilla seuraavasti:
Tiedosto <tt>ohjelma.cpp</tt> voidaan kääntää Linuxilla seuraavasti:
Rivi 68: Rivi 89:


==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]]

Nykyinen versio 24. maaliskuuta 2022 kello 18.55

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

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
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 | The Mirror | OGRE | O3DE | Panda3D | Range Engine | 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
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