Schița de curs

Introducere la Lua

  • Un pic de istorie
  • Obiectivele, caracteristicile și non-goalurile lui Lua.
  • Resurse ale Lua documentație și tutoriale
  • Instalarea interpretului Lua.
  • Configurarea și utilizarea LuaRocks

Sintaxă și semantică de bază

  • Identificatori
  • Comentarii, blocați comentariile
  • Variabile globale și aplicarea strictității
  • Variabile locale
  • Programe independente, argumente de program
  • Unități de compilare, bucăți, expresii, punct și virgulă

Tipuri de date și structuri de date

  • Tipuri de bază: zero, boolean, număr, șir
  • Tipuri de obiecte: funcție, date utilizator, fir, tabel
  • Referințe/obiecte vs. valori de bază
  • Importanța tabelelor în Lua

Introducere în mese și versatilitatea acestora

  • Tabelele ca un tablou asociativ
  • Tabelele ca matrice numerice, secvențe

Structuri de control de bază

  • Sfârșitul dacă, atunci elseif altfel
  • Bucla while
  • Bucla repetată
  • Simplul for bucla

Eroare de manipulare

  • Valori returnate vs excepții
  • Conversia unei valori returnate într-o excepție
  • Conversia unei excepții într-o valoare returnată
  • Niveluri de eroare

Exemple de programe

  • Evaluare polinomială
  • Lățimea prima căutare
  • Exerciții suplimentare

Mai multe despre funcții

  • Argumente numite
  • Apeluri orientate pe obiecte
  • Închideri
  • curry
  • Apeluri de coadă
  • Atribuire multiplă și returnare
  • Varargs

Iteratoare și co-rutine

  • Bucla generică pentru
  • Iteratoare fără stat vs
  • Diferențele dintre iteratoare și co-rutine

Metatable și metametode

  • Exemplul stabilit
  • Metametoda __tostring
  • Metametode aritmetice
  • Metametodele __index, __newindex
  • Metametoda __len

Module și pachete

  • Utilizarea modulelor
  • Crearea modulelor
  • Organizarea modulelor în pachete

Tabele avansate

  • Mese pentru cozi și stive
  • Tabele care descriu grafice
  • Matricele ca tabele
  • Liste legate ca tabele
  • Buffer-uri de șiruri

Metatable prin exemple

  • Proxy-uri
  • Numai citire
  • Memorarea
  • Programare dinamică cu memorare
  • Exemplul Fibonacci

Medii

  • Relația dintre variabilele globale și medii
  • Variabile libere
  • Tabelul _ENV și tabelul _G

Mai multe despre module

  • Diferite abordări ale creării modulelor
  • Module care modifică comportamentul
  • Inițializarea modulului și argumentele
  • Utilizarea mediilor pentru a implementa module sigure

Iteratoare și co-rutine avansate

  • Producător, consumator, filtru
  • Încheierea co-rutinelor pentru a obține iteratori
  • Iterator fără stat pentru listele legate

Contribuția la ecosistem

  • Încărcarea pachetelor pe MoonRocks

Paradigma funcțională în Lua

  • Funcția de hartă
  • Funcția de reducere/pliere

Orientat pe obiecte Programming

  • Diferite abordări ale POO
  • Abordări diferite ale moștenirii
  • Exemple

O prezentare a Bibliotecilor standard Lua.

Compilare

  • Compilare
  • Eval
  • Relația cu mediul
  • Bucăți binare

Colectarea gunoiului

  • Mesele slabe
  • Finalizatoare, metametoda __gc

Lua bytecode și mașină virtuală

  • Generarea de bytecode din codul sursă
  • Citirea și analiza bytecode
  • Tur rapid al codului sursă al Lua VM

module C

  • Apelând C de la Lua
  • Search calea și încărcarea modulelor C

Apelând Lua de la C

  • Stiva
  • Eroare de manipulare
  • Continuări

Manipularea valorilor Lua și a tipurilor din C

  • Matrice
  • Siruri de caractere
  • Datele utilizatorului
  • Metatablele
  • Apeluri orientate obiect
  • Date ușoare ale utilizatorului

Gestionarea memoriei

  • Alocatori
  • GC API

Fire în Lua

  • Co-rutine vs fire
  • Multi-threading real și stări Lua.

Cerințe

Familiaritate cu cel puțin un alt limbaj de programare. Programming experiență. Opțional, dacă aveți familiaritate cu alte limbaje de scripting, acest lucru va facilita înțelegerea Lua.

 21 ore

Numărul de participanți


Pret per participant

Upcoming Courses