close

Lua

Spring naar navigatie Spring naar zoeken
Lua
programmeertaal
Lua-Logo.svg
AuteurRoberto Ierusalimschy
Luiz Henrique de Figueiredo
Waldemar Celes
Datum van herkomst1993
Laatste versie5.4.4 (26 januari 2022)
Gebruikgeneriek, scripting, gameprogrammering
paradigma'smulti-paradigma: scripting , imperatief ( procedureel , object-georiënteerd ), functioneel
Typensterk, dynamisch
Algemene extensies.lua
Beïnvloed doorC ++ , CLU , Modula , Schema , SNOBOL
Het beïnvloeddeIk , GameMonkey , Eekhoorn , Falcon , MiniD , Julia
Referentie implementatie
Besturingssysteemmulti platform
LicentieMIT-licentie
Websitewww.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

Opmerkingen

  1. ^ Roberto Ierusalimschy, Luiz Henrique de Figueiredo en Waldemar Celes, De evolutie van Lua ( PDF ) , op lua.org , 2007 , p. 1. Ontvangen 4 november 2015 .
  2. ^ Over , op lua.org , 19 oktober 2015. Ontvangen op 4 november 2015 .
  3. ^ a b Licentie , op lua.org , 12 mei 2015. Ontvangen op 4 november 2015 .
  4. ^ 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  ( WC  ACNP ) . Ontvangen 4 november 2015 .
  5. ^ Gebruikt , op lua.org , 24 maart 2015. Ontvangen 4 november 2015 .

Andere projecten

Externe links