Kursplan

Introduksjon til Lua

  • En del historie
  • Luas mål, egenskaper og ikke-mål
  • Ressurser for Lua-dokumentasjon og tutorials
  • Installering av Lua-tolker
  • Oppsett og bruk av LuaRocks

Grunnleggende syntaks og semantikk

  • Identifikatorer
  • Kommentarer, blokkkommentarer
  • Globale variabler og gjennomføring av strenghet
  • Lokale variabler
  • Selvstendige programmer, programmeringsargumenter
  • Kompileringsenheter, stykker, uttrykk, semikoloner

Datatyper og datastrukturer

  • Grunnleggende typer: nil, booleansk, nummer, streng
  • Objekttyper: funksjon, brukerdata, tråd, tabell
  • Referanser/objekter vs. grunnleggende verdier
  • Betydeingen av tabeller i Lua

Introduksjon til tabeller og deres mangfoldighet

  • Tabeller som et assosiativt array
  • Tabeller som numeriske arrayer, sekvenser

Grunnleggende styringsstrukturer

  • If then elseif else end
  • Den while-sløyfen
  • Den repeat-sløyfen
  • Den enkle for-sløyfen

Feilhåndtering

  • Returverdier vs. unntak
  • Konvertering av en returverdi til et unntak
  • Konvertering av et unntak til en returverdi
  • Feilnivåer

Eksempelprogrammer

  • Utregning av polynom
  • Bredde-først-søk
  • Tillegse øvelser

Mer om funksjoner

  • Navngitte argumenter
  • Objektorienterte kall
  • Lukkede funksjoner
  • Currying
  • Halekall
  • Multi-assignering og retur
  • Varargs

Iteratører og co-routines

  • Den generiske for-sløyfen
  • Statløse vs. statfulle iteratører
  • Forskjeller mellom iteratører og co-routines

Metatabeller og metametoder

  • Set-eksempelet
  • __tostring metametoden
  • Aritmetiske metametoder
  • __index, __newindex metametoder
  • __len metametoden

Moduler og pakker

  • Bruk av moduler
  • Oppretting av moduler
  • Organisering av moduler i pakker

Avanserte tabeller

  • Tabeller for køer og stabler
  • Tabeller som beskriver grafer
  • Matriser som tabeller
  • Lenkede lister som tabeller
  • Strengbuffer

Metatabeller gjennom eksempler

  • Proksier
  • Skrivbeskyttet
  • Memoisering
  • Dynamisk programmering med memoisering
  • Fibonacci-eksempelet

Miljøer

  • Forholdet mellom globale variabler og miljøer
  • Frie variabler
  • _ENV-tabellen og _G-tabellen

Mer om moduler

  • Forskjellige tilnærminger til å opprette moduler
  • Moduler som endrer oppførsel
  • Modulinitialisering og argumenter
  • Bruk av miljøer for å implementere sikre moduler

Avanserte iteratører og co-routines

  • Produsent, forbruker, filter
  • Pakking av co-routines for å få iteratører
  • Statløs iteratør for lenkede lister

Bidra til Økosystemet

  • Opplasting av pakker til MoonRocks

Funksjonell paradigme i Lua

  • Map-funksjonen
  • Reduce/fold-funksjonen

Objektorientert programmering

  • Forskjellige tilnærminger til OOP
  • Forskjellige tilnærminger til arv
  • Eksempler

En gjennomgang av Lua Standardbibliotekene

Kompilering

  • Kompilering
  • Eval
  • Forholdet til miljøet
  • Binære stykker

Søppelinnsamling

  • Svekkede tabeller
  • Finalizers, __gc metametoden

Lua bytecode og virtuell maskin

  • Generering av bytecode fra kildekode
  • Lesing og analyse av bytecode
  • Kort tur gjennom kildekoden til Lua VM

C-moduler

  • Kalling av C fra Lua
  • Søkevei og lasting av C-moduler

Kalling av Lua fra C

  • Stabelen
  • Feilhåndtering
  • Fortsettelser

Håndtering av Lua-verdier og -typer fra C

  • Arrayer
  • Strenger
  • Brukerdata
  • Metatabeller
  • Objektorienterte kall
  • Lett brukerdata

Minnehåndtering

  • Allokerere
  • GC API

Tråder i Lua

  • Co-routines vs. tråder
  • Ekte multitråd og Lua-stater

Krav

Kjennskap til minst ett annet programmeringsspråk. Programming erfaring. Eventuelt hvis du har kjennskap til andre skriptspråk, vil det gjøre det lettere å forstå Lua.

 21 timer

Antall deltakere


Pris per deltaker

Kommende kurs

Relaterte kategorier