close

Lua

Gå til navigation Gå til søg
Lua
Lua-Logo.svg
Roberto Ierusalimschy
https://www.lua.org/
Generel information
Almindelige udvidelser .lua
Paradigme Multiparadigme :
fortolket ,
imperativt
( proceduremæssigt ,
prototypebaseret ,
objektorienteret ),
funktionelt
Dukkede op i 1993
Designet af Roberto Ierusalimschy
Waldemar Celes
Luiz Henrique de Figueiredo
Seneste stabile version 5.4.4 [ 1 ] ​( 26. januar 2022 (8 måneder og 22 dage))
type system dynamisk , højt , and
implementeringer Lua , LuaJIT , LLVM-Lua , LuaCLR , Nua , Lua Alchemy , Luvit
dialekter Metalua , Luau
påvirket af Scheme , SNOBOL , Modula , CLU , C++
har påvirket Io , GameMonkey , Squirrel , Falcon , Dao , MiniD
Operativ system Multi platform
Licens MIT-licens

Lua er et forholdsvis let, struktureret , imperativt , multi -paradigme programmeringssprog, der er designet som et fortolket sprog med udvidelig semantik . Det er primært designet til at blive brugt indlejret i applikationer. [ 2 ] Lua er et sprog på tværs af platforme , og dets tolk er skrevet i ANSI C. Navnet betyder "måne" på portugisisk .

Historie

Lua blev skabt i 1993 af Roberto Ierusalimschy , Luis Enrique de Figueiredo og Waldemar Celes , medlemmer af Computer Graphics Technology Group ( Tecgraf ) ved det pavelige katolske universitet i Rio de Janeiro , baseret på en struktur svarende til C og Perl .

Versioner af Lua før 5.0 blev distribueret under en licens svarende til BSD , fra version 5.0 og fremefter bruges MIT-licensen , kompatibel med GPL .

Lua er blevet brugt i mange kommercielle og ikke-kommercielle applikationer , hvoraf antallet stiger hvert år. [ 3 ]

Funktioner

Lua er et programmeringssprog, der er kompakt nok til at blive brugt på forskellige platforme. I Lua har variabler ingen type , kun data og kan være logiske tal , heltal , flydende kommatal eller strenge . Datastrukturer såsom vektorer , sæt , hashtabeller , lister og poster kan repræsenteres ved hjælp af Luas eneste datastruktur: tabellen.

Lua er et multi -paradigme sprog , fordi dets semantik kan udvides og modificeres ved at omdefinere datastrukturfunktioner ved hjælp af metatables , næsten som Perl (hvilket gør det muligt at implementere arv , for eksempel, selvom det er fremmed for sproget). Lua tilbyder understøttelse af højere ordens funktioner , garbage collector . Ved at kombinere alt ovenstående er det muligt at bruge Lua i objektorienteret programmering .

Interne funktioner

Lua-programmer tolkes ikke direkte, men kompileres til bytecode , som udføres i den virtuelle Lua -maskine . Kompileringsprocessen er normalt gennemsigtig for brugeren og udføres under kørsel, men kan udføres i forvejen for at øge ydeevnen og reducere hukommelsesforbruget ved at omgå compileren.

Kompilering under kørsel ved hjælp af LuaJIT er også muligt .

Eksempelkoder

Det klassiske Hello World -program kan skrives som følger:

print ( "Hej verden!" )

Det kan også skrives som

io.write ( 'Hej verden! \n ' )

eller eksemplet givet på Luas hjemmeside

io.write ( "Hej verden, fra " , _VERSION , "! \n " )

Kommentarer bruger følgende syntaks, der ligner Ada , SQL og VHDL

-- En kommentar i Lua begynder med en dobbelt bindestreg indtil næste linje 
--[[ Strenge og kommentarer med flere linjer 
     er prydet med dobbelte parenteser]]

Faktorialet er et eksempel på en rekursiv funktion .

funktion  factorial ( n ) 
   hvis  n  ==  0  returnerer 1 end return n * factorial ( n - 1 ) end _
        
        

Sløjfer

Lua har fire typer sløjfer: while-løkken , den generiske numeriske for loop og gentagelsesløkken.

While-løkken har denne syntaks:

mens  ( betingelse )  gør 
   - Blok 
slut

Formen af ​​det numeriske for loop er:

lokal  start ,  slutning ,  trin  =  10 ,  1 ,  - 1  -- Trin kan være negativt, hvilket gør det muligt for for -løkken at trække fra eller tilføje 
for  indeks = start , slutning , trin skal udskrives ( indeks  ) slut    
   

En anden form for for-løkken er den generiske for:

for  nøgle ,  værdi  i  par ( _G )  skal du 
   udskrive ( tast ) 
end

Denne formular itererer tabellen _G ved hjælp af standardpar iteratoren, indtil den vender tilbage

nul

Gentagelsesløkken:

lokal  tilstand  =  falsk 
gentagelse 
   -- blok 
indtil  tilstand

Det udfører løkkens krop mindst én gang, og vil blive ved med at køre, indtil "cond" bliver sandt . Dette minder meget om do while i andre programmeringssprog, bortset fra at do while gentages, så længe betingelsen er opfyldt, og i dette tilfælde vil den gentages, indtil betingelsen er opfyldt.

Ansøgninger

Lua er primært designet til at blive indlejret i applikationer. [ 2 ] På grund af ovenstående bruges det almindeligvis som hovedsproget for forskellige API'er til udvikling af tilføjelser og modifikationer. For eksempel kan programmer som ZeroBrane Studio, REAPER eller Rockbox udvides ved at bruge Lua. Et andet program, der gør brug af dette sprog, er Renoise , en DAW skrevet i C++, der i sine seneste versioner giver mulighed for at bruge Lua-kode til at udvide sine muligheder. På denne måde kan enhver bruger med kendskab til Lua-sproget og Renoises egen tilgængelige API udvide funktionaliteterne i dette program ved at tilføje nye specifikke funktioner, udløst fra selve drop-down menuerne eller endda skabe flydende vinduer med deres egen grafiske grænseflade, kombinerer Lua med OSC og MIDI input/output . Hele dette sæt tillader næsten ubegrænset yderligere tilpasning af dette program. Selv Renoise har sin egen terminal til at redigere og køre Lua-kode, hvilket gør det meget nemmere at finde fejl i koden.

Sproget er også blevet brugt til at behandle inputdata i komplekse systemer, konfigurere applikationer, styre hardware og forskellige andre opgaver. [ 4 ]

  • I Ion- vinduestyringen kan du bruge Lua til at tilpasse dens udseende og udvide dens funktionalitet.
  • Awesome window manager version 3 bruger Lua til sin konfigurationsfil.

Sprog som Lua giver virksomheder mulighed for at spare omkostninger, [ anmodet citat ] ved at forenkle arbejdet med at udvikle ny software. For at overføre en applikation udviklet med Lua fra et operativsystem til et andet, kræves der kun minimale ændringer af kildekoden.

Lua er også et af de mest udbredte programmeringssprog til Sony PSP homebrew udvikling på grund af dets enkelhed. [ henvisning nødvendig ]

Portabilitet

På grund af sin enkelhed er Lua tilgængelig til flere processorarkitekturer . Der er versioner af Lua til videokonsoller som PSP , Wii og SEGA Saturn , som bruger SEGAs egne biblioteker .

I videospil

Fordi Lua er et letvægtssprog, relativt hurtigt og har en tilladelig licens, har det vundet en tilhængerskare blandt videospiludviklere . Cryteks grafikmotor, CryEngine, er programmeret i Lua, foruden C++. [ citat nødvendig ] LÖVE2D er en anden spilmotor, der gør det muligt at skabe spil på tværs af platforme ved hjælp af Lua. [ 5 ] Virksomheder som Valve , Electronic Arts og Bethesda har skiftet dele af kodebaser fra C++ til Lua. [ henvisning nødvendig ]

Andre videospil og spilmotorer, der gør brug af Lua er:

  • World of Warcraft , hvor brugeren har mulighed for næsten helt at tilpasse den grafiske grænseflade .
  • Også i en sandkassetype mod til Half-Life 2 kaldet Garry's Mod , der er i stand til at modificere det næsten fuldstændigt. Meget af Garrys Mod er skrevet i Lua.
  • Også i en mod til Half-Life 2 kaldet Fortress Forever , der giver mulighed for meget konfigurerbare kort.
  • Det storstilede realtidsstrategi-videospil Supreme Commander , som kan ændres af brugeren i næsten alle aspekter.
  • Tibia - rollespillet , næsten fuldstændigt modificerbart (kræfter, kort osv.) sammen med XML .
  • En del af STALKER: Shadow of Chernobyl , der giver spilleren mulighed for at ændre våben, rustninger og forskellige aspekter af spillet.
  • Grim Fandango og The Escape from Monkey Island (fjerde del af Monkey Island -sagaen ) bruger internt Lua-scripts til at definere historien og de begivenheder, der opstår under spillet.
  • Worms 4: Mayhem bruger Lua og XML til at definere missionerne og udfordringerne.
  • Ved at bruge et hjemmelavet program (eller hjemmebrygget), LuaPlayer, kan du køre .lua-filer på Sonys velkendte bærbare konsol.
  • Ragnarok Online bruger Lua til at programmere homunculi's kunstige intelligens.
  • Regnum Online bruger Lua til de fleste spilscripts som grænseflade, spiltilstand, handlinger osv.
  • TASpring er et real-time strategispil, det bruger Lua til de fleste af spillets scripts som grænseflade, spiltilstand, handlinger osv.
  • Multi Theft Auto: San Andreas bruger Lua til at designe spiltilstande, kort og scripts. Dette program er en multiplayer-mod, der giver brugeren mulighed for at spille Grand Theft Auto San Andreas online med en anden bruger fra computer til computer.
  • Blitzkrieg : Lua-sproget bruges i korteditorer, og du kan endda skrive dem selv.
  • Counter-Strike 2D : Giver dig mulighed for at bruge Lua-scripts til at skabe f.eks. helt nye spiltilstande ved hjælp af en "hooks, tabeller, variabler og arrays"-grænseflade
  • StepMania : Lua-sproget bruges til at udvikle implementeringen af ​​animationer af det grafiske miljø, og også udførelsen af ​​interne kommandoer relateret til gameplayet.
  • Wolfenstein: Enemy Territory : Nogle tilstande i dette spil kommer med Lua-sproget til at køre scripts som mini-mods, management scripts, kortændringer osv.
  • Hedgewars : Bruger Lua i scripts, missioner og kort.
  • Transformice bruger Lua og XML til at definere udfordringerne og en del af designet, samt bruges som et værktøj, i dette tilfælde LUA til at bygge minispil og XML til at bygge kort.
  • Railworks: Train Simulator : Bruges i scripts til at ændre eller definere objekters adfærd.
  • YGOPro: Duelsystem : Fra korteffekter til den samme kunstige intelligens bruger dette sprog.
  • The Binding of Isaac: Rebirth : I januar 2017 blev Afterbirth+ DLC udgivet, hvori understøttelse af Mods programmeret med dette sprog blev tilføjet.
  • Factorio : Brug dette sprog (LUA) som base og til at implementere mods til spillet.
  • Roblox : Bruger en modificeret version af Lua kendt som RBX.lua
  • Detroit Bliv menneske
  • Sonic Robo Blast 2
  • Minetest : Giver dig mulighed for at oprette mods eller komplette videospil.

Tibia.com eller servere

Lua kan implementeres på mange måder i Tibia RPG RPG, så længe de sekundære funktioner og handlinger findes på din konsol, mange mennesker bruger Lua-sproget til at lave systemer, scripts, mods til Tibia-servere, og dette er til gavn for brugeren. Tibia server. [ henvisning nødvendig ]

Se også

Referencer

  1. http://www.lua.org/news.html
  2. ^ a b "Lua - et udvideligt udvidelsessprog" . www.lua.org . Hentet 25. november 2021 . 
  3. ^ "PYPL Popularity of Programming Language Index" . pypl.github.io (på engelsk) . Hentet 27. april 2021 . 
  4. Brug af Lua
  5. ^ "LÖVE - Gratis 2D-spilmotor" . love2d.org . Hentet 25. november 2021 . 

Eksterne links