Schița de curs

Introducere în Lua

  • Puțină 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 aplicarea strictităț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 de caractere
  • 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 numeric, secvențe

Structuri de control de bază

  • Structura 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

Programe exemplu

  • 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 returnare 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 pentru descrierea grafurilor
  • Matrice 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
  • Tabelele _ENV și _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
  • Înfășurarea 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

O privire de ansamblu asupra bibliotecilor standard Lua

Compilare

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

Colectarea deșeurilor

  • Tabele slabe
  • Finalizatori, metametoda __gc

Bytecode și mașina virtuală Lua

  • Generarea bytecode din codul sursă
  • Citirea și analizarea 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 de caractere
  • Userdata
  • Metatabele
  • Apeluri orientate pe obiecte
  • Light userdata

Gestionarea memoriei

  • Alocatori
  • API pentru colecția de deșeuri

Fire de execuție în Lua

  • Co-rutine vs fire de execuție
  • Multithreading real și stări Lua

Cerințe

Cunoștințe de bază despre cel puțin un alt limbaj de programare. Experiență în programare. Opțional, dacă ai cunoștințe despre alte limbaje de scriptare, acest lucru va face mai ușor înțelegerea Lua.

 21 Ore

Numărul de participanți


Pret per participant

Cursuri viitoare

Categorii înrudite