Mulțumim pentru trimiterea solicitării! Un membru al echipei noastre vă va contacta în curând.
Mulțumim pentru trimiterea rezervării! Un membru al echipei noastre vă va contacta în curând.
Schița de curs
Introducere în Lua
- Un pic de istorie
- Obiectivele, caracteristicile și non-obiectivele Lua
- Resurse de documentație și tutoriale Lua
- Instalarea interpretorului Lua
- Configurarea și utilizarea LuaRocks
Sintaxă și semantică de bază
- Identificatori
- Comentarii, comentarii pe bloc
- Variabile globale și impunerea stricteții
- Variabile locale
- Programe independente, argumente ale programului
- Unități de compilare, bucăți, expresii, punct și virgulă
Tipuri de date și structuri de date
- Tipuri de bază: nil, boolean, număr, șir
- Tipuri de obiecte: funcție, userdata, thread, tabel
- Referințe/obiecte vs. valori de bază
- Importanța tabelelor în Lua
Introducere în tabele și versatilitatea lor
- Tabele ca array asociativ
- Tabele ca array numerice, secvențe
Structuri de control de bază
- if then elseif else end
- Bucla while
- Bucla repeat
- Bucla for simplă
Gestionarea erorilor
- Valori de return vs excepții
- Conversia unei valori de return într-o excepție
- Conversia unei excepții într-o valoare de return
- Niveluri de eroare
Exemple de programe
- Evaluarea polinoamelor
- Căutarea în lățime
- Exerciții suplimentare
Mai multe despre funcții
- Argumente numite
- Apeluri orientate pe obiecte
- Closures
- Currying
- Apeluri finale
- Atribuire și return multiplă
- Varargs
Iteratori și co-rutine
- Bucla for generică
- Iteratori fără stare vs cu stare
- Diferențe între iteratori și co-rutine
Metatabele și metametode
- Exemplul set
- Metametoda __tostring
- Metametode aritmetice
- Metametodele __index, __newindex
- Metametoda __len
Module și pachete
- Utilizarea modulelor
- Crearea modulelor
- Organizarea modulelor în pachete
Tabele avansate
- Tabele pentru cozi și stive
- Tabele care descriu grafuri
- Matrici ca tabele
- Liste înlănțuite ca tabele
- Buffere de șiruri
Metatabele prin exemple
- Proxiuri
- Readonly
- Memoizare
- Programare dinamică cu memoizare
- Exemplul Fibonacci
Medii
- Relația dintre variabilele globale și medii
- Variabile libere
- Tabelul _ENV și tabelul _G
Mai multe despre module
- Diferite abordări pentru crearea modulelor
- Module care modifică comportamentul
- Inițializarea și argumentele modulelor
- Utilizarea mediilor pentru a implementa module sigure
Iteratori și co-rutine avansate
- Producător, consumator, filtru
- Învelirea co-rutinelor pentru a obține iteratori
- Iterator fără stare pentru liste înlănțuite
Contribuții la ecosistem
- Încărcarea pachetelor pe MoonRocks
Paradigma funcțională în Lua
- Funcția map
- Funcția reduce / fold
Programare orientată pe obiecte
- Diferite abordări ale OOP
- Diferite abordări ale moștenirii
- Exemple
Prezentare generală a bibliotecilor standard Lua
Compilare
- Compilare
- Eval
- Relația cu mediul
- Bucăți binare
Colectarea gunoiului
- Tabele slabe
- Finalizatori, metametoda __gc
Bytecode și mașina virtuală Lua
- Generarea bytecode din codul sursă
- Citirea și analiza bytecode
- Tur rapid prin codul sursă al mașinii virtuale Lua
Module C
- Apelarea C din Lua
- Calea de căutare și încărcarea modulelor C
Apelarea Lua din C
- Stiva
- Gestionarea erorilor
- Continuări
Manipularea valorilor și tipurilor Lua din C
- Array-uri
- Șiruri
- Userdata
- Metatabele
- Apeluri orientate pe obiecte
- Light userdata
Gestionarea memoriei
- Alocatori
- API-ul GC
Fire de execuție în Lua
- Co-rutine vs fire de execuție
- Multithreading real și stări Lua
Cerințe
Cunoașterea a cel puțin unui alt limbaj de programare. Experiență în programare. Opțional, dacă ai cunoștințe despre alte limbaje de scriptare, acest lucru va facilita înțelegerea Lua.
21 Ore