Gracias por enviar su consulta! Uno de los miembros de nuestro equipo se pondrá en contacto con usted en breve.
Gracias por enviar su reserva! Uno de los miembros de nuestro equipo se pondrá en contacto con usted en breve.
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