Contacta con nosotros

Temario del curso

Introducción a Lua

  • Un poco de historia
  • Objetivos, características y no objetivos de Lua
  • Recursos de documentación y tutoriales sobre Lua
  • Instalación del intérprete de Lua
  • Configuración y uso de LuaRocks

Sintaxis y semántica básica

  • Identificadores
  • Comentarios y comentarios de bloque
  • Variables globales y aplicación de restricciones estrictas
  • Variables locales
  • Programas independientes y argumentos del programa
  • Unidades de compilación, bloques, expresiones y puntos y coma

Tipos de datos y estructuras de datos

  • Tipos básicos: nil, booleano, número, cadena
  • Tipos de objeto: función, userdata, hilo, tabla
  • Referencias u objetos frente a valores básicos
  • La importancia de las tablas en Lua

Introducción a las tablas y su versatilidad

  • Tablas como arrays asociativos
  • Tablas como arrays numéricos y secuencias

Estructuras de control básicas

  • La estructura if then elseif else end
  • El bucle while
  • El bucle repeat
  • El bucle for simple

Gestión de errores

  • Valores de retorno frente a excepciones
  • Conversión de un valor de retorno en una excepción
  • Conversión de una excepción en un valor de retorno
  • Niveles de error

Programas de ejemplo

  • Evaluación de polinomios
  • Búsqueda en anchura
  • Ejercicios adicionales

Más sobre funciones

  • Argumentos con nombre
  • Llamadas orientadas a objetos
  • Clausuras
  • Currying
  • Llamadas en cola
  • Asignación y retorno múltiples
  • Varargs

Iteradores y corutinas

  • El bucle for genérico
  • Iteradores sin estado frente a iteradores con estado
  • Diferencias entre iteradores y corutinas

Tablas metatables y métodos mágicos

  • El ejemplo del conjunto (set)
  • El método mágico __tostring
  • Métodos mágicos aritméticos
  • Los métodos mágicos __index y __newindex
  • El método mágico __len

Módulos y paquetes

  • Uso de módulos
  • Creación de módulos
  • Organización de módulos en paquetes

Tablas avanzadas

  • Tablas para colas y pilas
  • Tablas que describen grafos
  • Matrices como tablas
  • Listas enlazadas como tablas
  • Buffers de cadena

Metatablas mediante ejemplos

  • Proxies
  • Solo lectura (Readonly)
  • Memoización
  • Programación dinámica con memoización
  • El ejemplo de Fibonacci

Entornos

  • Relación entre variables globales y entornos
  • Variables libres
  • Las tablas _ENV y _G

Más sobre módulos

  • Diferentes enfoques para crear módulos
  • Módulos que modifican el comportamiento
  • Inicialización de módulos y argumentos
  • Uso de entornos para implementar módulos seguros

Iteradores y corutinas avanzados

  • Productor, consumidor y filtro
  • Envoltura de corutinas para obtener iteradores
  • Iterador sin estado para listas enlazadas

Contribución al ecosistema

  • Carga de paquetes en MoonRocks

Paradigma funcional en Lua

  • La función map
  • La función reduce o fold

Programación orientada a objetos

  • Diferentes enfoques para la POO
  • Diferentes enfoques para la herencia
  • Ejemplos

Recorrido por las bibliotecas estándar de Lua

Compilación

  • Compilación
  • Evaluación (Eval)
  • Relación con el entorno
  • Bloques binarios

Recolección de basura

  • Tablas débiles
  • Finalizadores, el método mágico __gc

Código byte de Lua y máquina virtual

  • Generación de código byte a partir del código fuente
  • Lectura y análisis del código byte
  • Recorrido rápido del código fuente de la máquina virtual de Lua

Módulos en C

  • Llamada a C desde Lua
  • Ruta de búsqueda y carga de módulos en C

Llamada a Lua desde C

  • La pila
  • Gestión de errores
  • Continuaciones

Manejo de valores y tipos de Lua desde C

  • Arrays
  • Cadenas
  • UserData
  • Metatablas
  • Llamadas orientadas a objetos
  • UserData ligera

Gestión de memoria

  • Asignadores (Allocators)
  • API de recolección de basura (GC)

Hilos en Lua

  • Corutinas frente a hilos
  • Multihilo real y estados de Lua

Requerimientos

Conocimientos de al menos otro lenguaje de programación y experiencia en programación. Opcionalmente, si tienes familiaridad con otros lenguajes de scripting, te resultará más sencillo comprender Lua.

 21 Horas

Número de participantes


Precio por participante

Próximos cursos

Categorías Relacionadas