Lua
| Lua programmeertaal | |
|---|---|
| Auteur | Roberto Ierusalimschy Luiz Henrique de Figueiredo Waldemar Celes |
| Datum van herkomst | 1993 |
| Laatste versie | 5.4.4 (26 januari 2022) |
| Gebruik | generiek, scripting, gameprogrammering |
| paradigma's | multi-paradigma: scripting , imperatief ( procedureel , object-georiënteerd ), functioneel |
| Typen | sterk, dynamisch |
| Algemene extensies | .lua |
| Beïnvloed door | C ++ , CLU , Modula , Schema , SNOBOL |
| Het beïnvloedde | Ik , GameMonkey , Eekhoorn , Falcon , MiniD , Julia |
| Referentie implementatie | |
| Besturingssysteem | multi platform |
| Licentie | MIT-licentie |
| Website | www.lua.org/ |
| ( NL )
"De programmeertaal." |
( IT )
"De programmeertaal." |
Lua is een dynamische, reflexieve , imperatieve en procedurele programmeertaal die wordt gebruikt als een algemene scripttaal .
Geschiedenis
Lua werd in 1993 opgericht door Roberto Ierusalimschy , Luiz Henrique de Figueiredo en Waldemar Celes [1] , leden van Tecgraf / PUC-RIO , de Technology and Computação Gráfica-groep aan de Pontifícia Katholieke Universiteit van Rio de Janeiro , Brazilië [2] . Versies van Lua vóór versie 5.0 zijn uitgebracht onder een licentie die vergelijkbaar is met de zlib-licentie [3] . Sinds versie 5.0 is Lua uitgebracht onder de MIT-licentie [3] .
In een artikel gepubliceerd in Dr. Dobb's Journal , verklaarden de makers van Lua dat Lisp en Scheme met hun typische datastructuur, de lijst, de grootste invloed hadden op de beslissing om de tabel als de primaire datastructuur in Lua te gebruiken [4] .
Lua is gebruikt in veel commerciële en niet-commerciële toepassingen. [5]
Kenmerken van de taal
De belangrijkste kenmerken van Lua zijn de functies, gezien als "objecten" van het eerste niveau en daarom toewijsbaar aan variabelen, en het gebruik van tabellen als generieke datastructuren. Met deze functies kan de taal functies implementeren die worden gezien in objectgeoriënteerde talen zonder hetzelfde te zijn.
Voorbeelden
Het klassieke " Hallo wereld " programma kan worden geschreven als:
print "Hallo wereld!"
Factorial is een voorbeeld van een recursieve functie :
functie faculteit ( n )
als n == 0 retourneer dan
1 end
return n * faculteit ( n - 1 )
end
Dit voorbeeld laat zien hoe het in Lua mogelijk is om de functies van de taal opnieuw te definiëren:
do
local oldprint = print - sla de functie op zoals deze is gedefinieerd door Lua, sla de
- retourwaarde van de functie niet op, maar de functie zelf
print = functie ( s ) - herdefinieer de functie print
if s == "foo" dan
oldprint ( "bar" )
else
oldprint ( s )
end
end
end
Alle toekomstige aanroepen van de afdrukfunctie verwijzen nu naar de nieuwe functie en de oude functie is alleen toegankelijk voor de nieuwe versie daarvan.
Dit voorbeeld toont een kenmerk van Lua: de mogelijkheid om tabellen dynamisch te definiëren (de gegevensstructuur die door de taal wordt gebruikt). In dit geval is het een tabel die het n-de Fibonacci-getal koppelt aan de fibs [n]-waarde .
fibs = { 1 , 1 } - beginwaarde voor fibs [1] en fibs [2]
setmetatable ( fibs , {
__index = functie ( fibs , n ) - roep deze functie aan als fibs [n] waarde niet bestaat
fibs [ n ] = fibs [ n - 2 ] + fibs [ n - 1 ] - bereken en bewaar de waarde
return fibs [ n ]
end
})
Gebruiksvoorbeelden
- Lua wordt heel vaak gebruikt in PSP voor Homebrew -programmering .
- De firmware van Olivetti - printers zoals Any_way, Simple_way en My_way, genaamd HERCULE, is gemaakt met de dynamische programmeertaal Lua.
- De Lua wordt gebruikt om scripts en plug-ins te maken voor de MMORPG Lineage II .
- De Lua wordt ook gebruikt om add-ons te maken die compatibel zijn met de World of Warcraft MMORPG .
- De Lua wordt ook gebruikt om scripts te maken met de Metin2 MMORPG .
- De Lua wordt ook gebruikt om mods voor Garry's Mod te maken .
- Lua heeft ook talloze scripts en trainers gemaakt voor de bekroonde game GTA IV van Rockstar Games .
- In de pc -videogame Baldur 's Gate II: Shadows of Amn wordt de kunstmatige intelligentie van de personages beheerd in Lua. Het is in feite mogelijk om deze scripts volledig aan te passen om het standaardgedrag van elk personage aan te passen aan de verschillende spelomstandigheden.
- Twee mods van de Minecraft -videogame , ComputerCraft en OpenComputers genaamd, stellen je in staat om programma's in de game zelf te maken door ze in Lua-taal te schrijven.
- Veel TeamSpeak -scripts zijn gemaakt met Lua. Een daarvan is de aetas funscripts.lua.
- De Open Source OpenTx- firmware die verschillende radiobesturingsapparaten uitrust voor het maken van modellen, heeft de mogelijkheid om programma's uit te voeren die in de Lua-taal zijn gemaakt.
- Multi Theft Auto, de mod waarmee je online kunt spelen in GTA: San Andreas , is deels geschreven met Lua.
- Met het NUT-platform van Cedac Software kunt u embedded applicaties maken met behulp van de Lua-taal.
- De spellen die beschikbaar zijn op Roblox zijn volledig geschreven met Lua.
- Veel mods voor de Minetest -videogame zijn gemaakt in Lua.
- Sommige frameworks voor het ontwikkelen van 2D-videogames gebruiken de Lua-taal: waaronder Defold , Love2D en Solar2D .
- Het Esp8266-prototypingbord is programmeerbaar in Lua, via de firmware in het IoT NodeMCU- platform .
- De Game-Guru-game-engine baseert de programmering en het gedrag van objecten en personages in Lua-taal.
Citaten
- In de videogame Escape from Monkey Island wordt de Scumm Bar een verfijnde sushibar en wordt de naam veranderd in Lua Bar , wat de adoptie van de nieuwe scripttaal in GrimE , de Lua, onderstreept.
Opmerkingen
- ^ Roberto Ierusalimschy, Luiz Henrique de Figueiredo en Waldemar Celes, De evolutie van Lua ( PDF ) , op lua.org , 2007 , p. 1. Ontvangen 4 november 2015 .
- ^ Over , op lua.org , 19 oktober 2015. Ontvangen op 4 november 2015 .
- ^ a b Licentie , op lua.org , 12 mei 2015. Ontvangen op 4 november 2015 .
- ^ Roberto Ierusalimschy , Luiz Henrique de Figueiredo en Waldemar Celes, Lua: een uitbreidbare ingebedde taal , in Dr. Dobb's Journal , vol. 21, n. 12, 1 december 1996 , ISSN 1044-789X Ontvangen 4 november 2015 .
- ^ Gebruikt , op lua.org , 24 maart 2015. Ontvangen 4 november 2015 .
Andere projecten
Wikibooks bevat teksten of handleidingen over Lua
Wikimedia Commons bevat afbeeldingen of andere bestanden over Lua
Externe links
- ( EN , PT ) Officiële site , op lua.org .
- Lua source repository , op github.com .
- ( EN ) Lua , op Vrije Software Directory .
- Lua , op lua-users.org . _ _