Programa del Curso

Introducción a Lua

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

Sintaxis y semántica básicas

  • Identificadores
  • Comentarios, bloquear comentarios
  • Variables globales y aplicación de la rigurosidad
  • Variables locales
  • Programas independientes, argumentos de programa
  • Unidades de compilación, fragmentos, expresiones, punto y coma

Tipos de datos y estructuras de datos

  • Tipos básicos: nil, booleano, número, cadena
  • Tipos de objetos: función, datos de usuario, subproceso, tabla
  • Referencias/objetos frente a valores básicos
  • La importancia de las tablas en Lua

Introducción a las mesas y su versatilidad

  • Tablas como matriz asociativa
  • Tablas como matrices numéricas, secuencias

Estructuras básicas de control

  • El fin de if then elseif else
  • El bucle while
  • El bucle de repetición
  • El bucle for simple

Manejo de errores

  • Valores devueltos frente a excepciones
  • Convertir un valor devuelto en una excepción
  • Convertir una excepción en un valor devuelto
  • Niveles de error

Ejemplos de programas

  • Evaluación polinómica
  • Amplitud primera búsqueda
  • Ejercicios adicionales

Más información sobre las funciones

  • Argumentos con nombre
  • Llamadas orientadas a objetos
  • Cierres
  • Currying
  • Llamadas de cola
  • Asignación y devolución múltiple
  • Varargs

Iteradores y corrutinas

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

Metatablas y metamétodos

  • El ejemplo establecido
  • El metamétodo __tostring
  • Metamétodos aritméticos
  • Los metamétodos __index __newindex
  • El metamétodo __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 gráficos
  • Matrices como tablas
  • Listas enlazadas como tablas
  • Búferes de cadena

Metatables a través de ejemplos

  • Proxies
  • Solo lectura
  • Memorización
  • Programación dinámica con memorización
  • El ejemplo de Fibonacci

Entornos

  • Relación entre variables globales y entornos
  • Variables libres
  • La tabla _ENV y la tabla _G

Más información sobre los módulos

  • Diferentes enfoques para la creación de módulos
  • Módulos que cambian el comportamiento
  • Inicialización y argumentos del módulo
  • Uso de entornos para implementar módulos seguros

Iteradores avanzados y corrutinas

  • Productor, consumidor, filtro
  • Empaquetado de corrutinas para obtener iteradores
  • Iterador sin estado para listas vinculadas

Contribuyendo al ecosistema

  • Subir paquetes a MoonRocks

Paradigma funcional en Lua

  • La función de mapa
  • La función de reducir/plegar

Orientado a objetos Programming

  • Diferentes enfoques de la POO
  • Diferentes enfoques de la herencia
  • Ejemplos

Un tutorial de las Lua bibliotecas estándar

Compilación

  • Compilación
  • Eval
  • Relación con el medio ambiente
  • Fragmentos binarios

Recolección

  • Tablas débiles
  • Finalizadores, el metamétodo __gc

Lua Código de bytes y máquina virtual

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

Módulos C

  • Llamar a C desde Lua
  • Search ruta y carga de los módulos C

Llamar a Lua desde C

  • La pila
  • Manejo de errores
  • Continuaciones

Manejo de valores y tipos Lua de C

  • Matrices
  • Instrumentos de cuerda
  • Datos de usuario
  • Metatablas
  • Llamadas orientadas a objetos
  • Datos de usuario ligeros

Gestión de la memoria

  • El 25 día-a
  • GC API

Hilos en Lua

  • Corrutinas frente a subprocesos
  • Multi-threading real y estados Lua

Requerimientos

Familiaridad con al menos otro lenguaje de programación. Programming experiencia. Opcionalmente, si está familiarizado con otros lenguajes de scripting, eso facilitará la comprensión de Lua.

 21 horas

Número de participantes


Precio por participante