Programa do Curso

Introdução a Lua

  • Um pouco de história
  • Objetivos, recursos e não objetivos de Lua
  • Recursos de Lua documentação e tutoriais
  • Instalando o interpretador Lua
  • Configurando e usando LuaRocks

Sintaxe e semântica básicas

  • Identificadores
  • Comentários, bloquear comentários
  • Variáveis globais e aplicação de rigor
  • Variáveis locais
  • Programas independentes, argumentos de programa
  • Unidades de compilação, pedaços, expressões, ponto e vírgula

Tipos de dados e estruturas de dados

  • Tipos básicos: nulo, booleano, número, string
  • Tipos de objetos: função, userdata, thread, tabela
  • Referências/objetos vs. valores básicos
  • A importância das tabelas em Lua

Introdução às tabelas e sua versatilidade

  • Tabelas como uma matriz associativa
  • Tabelas como matrizes numéricas, sequências

Estruturas básicas de controle

  • O if then elseif else termina
  • O loop while
  • O ciclo de repetição
  • O loop for simples

Manipulação de erros

  • Valores de retorno versus exceções
  • Convertendo um valor de retorno em uma exceção
  • Convertendo uma exceção em um valor de retorno
  • Níveis de erro

Programas de exemplo

  • Avaliação polinomial
  • Amplitude da primeira pesquisa
  • Exercícios adicionais

Mais sobre funções

  • Argumentos nomeados
  • Chamadas orientadas a objetos
  • Fechamentos
  • Escovando
  • Chamadas finais
  • Atribuição múltipla e retorno
  • Varargs

Iteradores e co-rotinas

  • O loop for genérico
  • Iteradores sem estado vs. com estado
  • Diferenças entre iteradores e co-rotinas

Metatabelas e metamétodos

  • O exemplo definido
  • O metamétodo __tostring
  • Metamétodos aritméticos
  • Os metamétodos __index, __newindex
  • O metamétodo __len

Módulos e pacotes

  • Usando módulos
  • Criando módulos
  • Organizando módulos em pacotes

Tabelas avançadas

  • Tabelas para filas e pilhas
  • Tabelas que descrevem gráficos
  • Matrizes como tabelas
  • Listas vinculadas como tabelas
  • Buffers de string

Metatabelas através de exemplos

  • Proxies
  • Somente leitura
  • Memoização
  • Programação dinâmica com memoização
  • O exemplo de Fibonacci

Ambientes

  • Relação entre variáveis globais e ambientes
  • Variáveis livres
  • A tabela _ENV e a tabela _G

Mais sobre módulos

  • Diferentes abordagens para a criação de módulos
  • Módulos que mudam o comportamento
  • Inicialização e argumentos do módulo
  • Usando ambientes para implementar módulos seguros

Iteradores e co-rotinas avançados

  • Produtor, consumidor, filtro
  • Envolvendo co-rotinas para obter iteradores
  • Iterador sem estado para listas vinculadas

Contribuindo para o Ecossistema

  • Fazendo upload de pacotes para MoonRocks

Paradigma funcional em Lua

  • A função do mapa
  • A função reduzir/dobrar

Orientado a objetos Programming

  • Diferentes abordagens para OOP
  • Diferentes abordagens para herança
  • Exemplos

Um passo a passo das Lua bibliotecas padrão

Compilação

  • Compilação
  • Avaliação
  • Relação com o meio ambiente
  • Pedaços binários

Coleta de lixo

  • Mesas fracas
  • Finalizadores, o meta-método __gc

Lua bytecode e máquina virtual

  • Gerando bytecode a partir do código fonte
  • Lendo e analisando bytecode
  • Tour rápido pelo código-fonte da VM Lua

Módulos C

  • Chamando C de Lua
  • Search caminho e carregamento de módulos C

Chamando Lua de C

  • A pilha
  • Manipulação de erros
  • Continuações

Tratamento de valores e tipos Lua de C

  • Matrizes
  • Cordas
  • Dados do usuário
  • Metatabelas
  • Chamadas orientadas a objetos
  • Dados de usuário leves

Gerenciamento de memória

  • Alocadores
  • API do GC

Tópicos em Lua

  • Co-rotinas vs threads
  • Multi-threading real e estados Lua

Requisitos

Familiaridade com, pelo menos, uma outra linguagem de programação. Programming experiência. Opcionalmente, se você tiver familiaridade com outras linguagens de script, isso facilitará a compreensão de Lua.

  21 horas
 

Declaração de Clientes (3)

Cursos Relacionados

Combined C/C++, JAVA and Web Application Security

  28 horas

Advanced Java Security

  21 horas

Combined JAVA, PHP and Web Application Security

  28 horas

Standard Java Security

  14 horas

Java and Web Application Security

  21 horas

Advanced Java, JEE and Web Application Security

  28 horas

Categorias Relacionadas