Intrati in legatura

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

Numărul de participanți


Pret per participant

Cursuri viitoare

Categorii înrudite