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


Dată început

Dată sfârșit


Dates are subject to availability and take place between 09:30 and 16:30.

Pret per participant

Mărturii (3)

Cursuri înrudite

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

Categorii înrudite