Lua (programmeertaal): verschil tussen versies
Versie 26721333 van 213.124.218.143 (overleg) ongedaan gemaakt. |
Geen bewerkingssamenvatting |
||
Regel 67: | Regel 67: | ||
* ''[[Grim Fandango]]'' |
* ''[[Grim Fandango]]'' |
||
* ''[[Harvest: Massive Encounter]]'' |
* ''[[Harvest: Massive Encounter]]'' |
||
* ''[[League_of_Legends_(video_spel)]]'' |
|||
* ''[[Multi Theft Auto]]'' |
* ''[[Multi Theft Auto]]'' |
||
* ''[[Operation Flashpoint: Dragon Rising]]'' |
* ''[[Operation Flashpoint: Dragon Rising]]'' |
Versie van 13 sep 2011 23:24
Lua | ||||
---|---|---|---|---|
Paradigma | multi-paradigma, functioneel | |||
Verschenen | 1993 | |||
Ontworpen door | R. Ierusalimschy, W. Celes, L. Henrique de Figueiredo | |||
Huidige versie | 5.1.4 (Augustus 2008) | |||
Typesysteem | dynamisch, duck-typing | |||
Beïnvloed door | Scheme, Icon | |||
Invloed op | Io, Squirrel, Dao | |||
Licentie | MIT-licentie (versie 5.0 en hoger) | |||
Website | http://www.lua.org/ | |||
|
Lua (LOO-ah, maan in het Portugees) is een dynamisch getypeerde imperatieve scripttaal[1] die veel in applicaties gebruikt wordt. De scripts worden uitgevoerd op een virtuele machine met garbage collection. De taal heeft een eenvoudige syntaxis met enkele primitieve types (zoals booleans, doubles en strings) en tabellen, in essentie associatieve arrays, waarmee de bekende datastructuren zoals arrays, lijsten en hashmaps geconstrueerd kunnen worden.
De taal is ontwikkeld door Roberto Ierusalimschy, Waldemar Celes en Luiz Henrique de Figueiredo aan de PUC-Rio te Rio de Janeiro, Brazilië. De versies tot versie 5.0 zijn uitgebracht onder een licentie die vergelijkbaar is met de BSD-licentie. Vanaf versie 5.0 is Lua uitgebracht onder de MIT-licentie.
Kenmerken
Lua is een multi-paradigmaprogrammeertaal waar niet allerlei taalconstructies zijn ingebouwd maar die wel mogelijk zijn met de bestaande taalconstructies. De taal kan hiermee als het ware uitgebreid worden door bestaande taalconstructies op een bepaalde wijze te gebruiken. Zo bevat Lua geen ingebouwde ondersteuning voor overerving maar het is wel mogelijk dit te simuleren met metatabellen. Op vergelijkbare wijze kunnen programmeurs naamruimten en klassen implementeren met behulp van de tabellen in Lua. Ook is het mogelijk veel technieken uit het functioneel programmeren te gebruiken met behulp van de functies in Lua. De taal dwingt de programmeur hierdoor niet een bepaald paradigma op.
Als gevolg hiervan is Lua niet zo groot (de interpreter is na compilatie ongeveer 150 kilobyte) en de taal kan uitgebreid worden om gebruikt te worden in allerlei specifieke applicaties.
Werking
Code die geschreven is in Lua wordt niet direct geïnterpreteerd maar het wordt gecompileerd naar bytecode die vervolgens uitgevoerd wordt door de virtuele machine van Lua. Het compileren vindt tijdens het uitvoeren van het programma plaats en het is doorgaans niet merkbaar voor de gebruiker. Het is ook mogelijk dit van tevoren te doen om het geheugengebruik en de benodigde rekentijd te beperken.
Voorbeelden
Het Hello world programma in Lua is:
print "Hello, World!"
Het berekenen van de faculteit van n:
function factorial(n)
if n == 0 then
return 1
else
return n * factorial(n - 1)
end
end
Gebruik
Computerspellen
Lua wordt vaak gebruikt in computerspellen voor de spel logica zoals bots en de interactie met de spel wereld. Door Lua te gebruiken kan deze logica gemakkelijk door de ontwikkelaars aangepast worden zonder telkens opnieuw de spel Engine opnieuw te moeten compileren, wat soms uren kan duren. Daarnaast is Lua, na compilatie, niet zo groot, praktisch net zo snel is als dat het in de spel engine zelf zou zijn geprogrammeerd en is het onder de MIT-licentie beschikbaar.
Enkele spellen die Lua gebruiken zijn:
- Company of Heroes
- Crysis
- Far Cry
- Farming Simulator
- Garry's Mod
- Grim Fandango
- Harvest: Massive Encounter
- League_of_Legends_(video_spel)
- Multi Theft Auto
- Operation Flashpoint: Dragon Rising
- Painkiller
- Ragnarok Online
- SimCity 4
- Star Wars: Battlefront
- Supreme Commander
- Tibia
- Warhammer 40,000: Dawn of War
- Warhammer Online: Age of Reckoning
- World of Warcraft
Andere applicaties
Enkele andere applicaties die Lua gebruiken:
Externe links
- (en) Lua website
- (en) Lua 5.1 reference manual
Bronnen, noten en/of referenties
|