Aprenderás a pensar en programas como datos, a construir abstracciones pequeñas y poderosas, y a resolver problemas con una de las familias de lenguajes más influyentes en la historia de la computación.
Lisp es una familia de lenguajes que ha influido en muchos de los lenguajes modernos. Su sintaxis basada en listas, su modelo de evaluación y su capacidad para tratar el código como datos lo convierten en una herramienta ideal para comprender los fundamentos de la programación funcional, la composición de funciones y la construcción de lenguajes específicos de dominio.
En este entrenamiento abordaremos Lisp desde sus ideas esenciales: expresiones simbólicas, funciones de primera clase, recursión, listas, macros y evaluación. El objetivo es que puedas usar estos conceptos para mejorar tu criterio al diseñar software, aun cuando trabajes diariamente con otros lenguajes de programación.
· A quien va dirigido:
Este entrenamiento es recomendado para desarrolladores:
- Programadores que quieren fortalecer su pensamiento funcional
- Desarrolladores interesados en lenguajes expresivos y minimalistas
- Personas que quieren entender macros, metaprogramación y lenguajes internos
- Programadores que desean mejorar su capacidad para modelar problemas con abstracciones pequeñas
- Desarrolladores interesados en la historia e influencia de Lisp en lenguajes modernos
· Pre-requisitos:
Necesarios:
- Manejo de un editor de textos
- Experiencia previa programando en cualquier lenguaje
- Disposición para trabajar con una sintaxis distinta a la habitual
Recomendables:
- Conocer conceptos básicos de programación funcional
- Haber trabajado con listas, recursión o funciones de orden superior
- Tener curiosidad por compiladores, intérpretes o diseño de lenguajes
· Contenido del entrenamiento:
- Qué es Lisp y por qué sigue siendo relevante
- Expresiones simbólicas
- Átomos, listas y pares
- Evaluación de expresiones
- Definición de funciones
- Funciones de primera clase
- Recursión
- Condicionales y control de flujo
- Operaciones sobre listas
- Map, filter y reduce
- Clausuras
- Inmutabilidad y estado
- Macros
- Código como datos
- REPL y desarrollo interactivo
- Manejo básico de errores
- Organización de programas
- Construcción de pequeñas abstracciones
- Implementación de un lenguaje de dominio específico
- Ejercicios prácticos de modelado funcional
