Struttura del corso

Introduzione a Lua

  • Un po' di storia
  • Obiettivi, caratteristiche e non obiettivi di Lua
  • Risorse di Lua documentazione ed esercitazioni
  • Installazione dell'interprete Lua
  • Impostazione e utilizzo di LuaRocks

Sintassi e semantica di base

  • Identificatori
  • Commenti, bloccare i commenti
  • Variabili globali e applicazione del rigore
  • Variabili locali
  • Programmi autonomi, argomenti di programma
  • Unità di compilazione, blocchi, espressioni, punto e virgola

Tipi di dati e strutture di dati

  • Tipi di base: nil, booleano, numero, stringa
  • Tipi di oggetto: function, userdata, thread, table
  • Riferimenti/oggetti vs. valori di base
  • L'importanza delle tabelle in Lua

Introduzione alle tabelle e alla loro versatilità

  • Tabelle come array associativo
  • Tabelle come matrici numeriche, sequenze

Strutture di controllo di base

  • L'if then elseif else end
  • Il ciclo while
  • Il ciclo di ripetizione
  • Il semplice ciclo for

Gestione degli errori

  • Valori restituiti ed eccezioni
  • Conversione di un valore restituito in un'eccezione
  • Conversione di un'eccezione in un valore restituito
  • Livelli di errore

Esempi di programmi

  • Valutazione polinomiale
  • Ampiezza prima ricerca
  • Esercizi aggiuntivi

Maggiori informazioni sulle funzioni

  • Argomenti denominati
  • Chiamate orientate agli oggetti
  • Chiusure
  • Currying
  • Chiamate di coda
  • Assegnazione multipla e restituzione
  • Varargs

Iteratori e co-routine

  • Il ciclo for generico
  • Iteratori senza stato e iteratori con stato
  • Differenze tra iteratori e co-routine

Metatabelle e metametodi

  • L'esempio dato
  • Il metametodo __tostring
  • Metametodi aritmetici
  • I metametodi __index __newindex
  • Il metametodo __len

Moduli e pacchetti

  • Utilizzo dei moduli
  • Creazione di moduli
  • Organizzazione dei moduli in pacchetti

Tabelle avanzate

  • Tabelle per code e pile
  • Tabelle che descrivono i grafici
  • Matrici come tabelle
  • Liste concatenate come tabelle
  • Buffer di stringa

Metatable attraverso esempi

  • Proxy
  • Sola lettura
  • Memorizzazione
  • Programmazione dinamica con memorizzazione
  • L'esempio di Fibonacci

Ambienti

  • Relazione tra variabili globali e ambienti
  • Variabili libere
  • La tabella _ENV e la tabella _G

Maggiori informazioni sui moduli

  • Diversi approcci alla creazione di moduli
  • Moduli che modificano il comportamento
  • Inizializzazione e argomenti del modulo
  • Utilizzo di ambienti per l'implementazione di moduli sicuri

Iteratori avanzati e co-routine

  • Produttore, consumatore, filtro
  • Wrapping delle co-routine per ottenere iteratori
  • Iteratore senza stato per elenchi collegati

Contribuire all'ecosistema

  • Caricamento di pacchetti su MoonRocks

Paradigma funzionale in Lua

  • La funzione mappa
  • La funzione di riduzione/piegatura

Orientato agli oggetti Programming

  • Diversi approcci all'OOP
  • Diversi approcci all'ereditarietà
  • Esempi

Procedura dettagliata delle librerie standard Lua

Compilazione

  • Compilazione
  • Eval
  • Rapporto con l'ambiente
  • Blocchi binari

Garbage Collection (Raccolta dei rifiuti)

  • Tabelle deboli
  • Finalizzatori, il meta-metodo __gc

Lua Bytecode e macchina virtuale

  • Generazione di bytecode dal codice sorgente
  • Lettura e analisi del bytecode
  • Presentazione rapida del codice sorgente della macchina virtuale Lua

Moduli C

  • Chiamare C da Lua
  • Search percorso e caricamento dei moduli C

Chiamata Lua da C

  • La pila
  • Gestione degli errori
  • Continuazioni

Gestione di valori e tipi Lua da C

  • Matrici
  • Stringhe
  • Dati dell'utente
  • Metatabelle
  • Chiamate orientate agli oggetti
  • Dati utente leggeri

Gestione della memoria

  • Il 25-day-a
  • GC API

Discussioni in Lua

  • Confronto tra co-routine e thread
  • Multi-threading reale e stati Lua

Requisiti

Familiarità con almeno un altro linguaggio di programmazione. Programming Esperienza. Opzionalmente, se si ha familiarità con altri linguaggi di scripting, ciò renderà più facile la comprensione di Lua.

  21 ore

Numero di Partecipanti



Prezzo per Partecipante

Recensioni (3)

Corsi relativi

Combined C/C++, JAVA and Web Application Security

  28 ore

Advanced Java Security

  21 ore

Combined JAVA, PHP and Web Application Security

  28 ore

Standard Java Security

  14 ore

Java and Web Application Security

  21 ore

Advanced Java, JEE and Web Application Security

  28 ore

Categorie relative