Lecciones: Avanzado
Llevando nuestro conocimiento al siguiente nivel, estas lecciones cubren los temas avanzados de Elixir y el BEAM.
Hemos visto las abstracciones de Elixir para manejar concurrencia pero a veces necesitamos mayor control, para eso podemos usar los comportamientos OTP sobre los que está construido Elixir.
En este lección nos enfocaremos en el componente mas grande: GenServers
Los supervisores son procesos especializados con un propósito: monitorear otros procesos. Estos supervisores nos permiten crear aplicaciones tolerantes a fallos que automáticamente restauren procesos hijos en caso de falla.
Introducción a la distribución
Podemos ejecutar aplicaciones Elixir en un conjunto de nodos distribuidos diferentes ya sea en un único host o en múltiples hosts Elixir nos permite comunicarnos a través de estos nodos usando algunos mecanismos los cuales están fuera del objetivo de esta lección.
La Metaprogramación es el proceso de usar código para escribir código. En Elixir esto nos da la habilidad de extender el lenguaje para que encaje con nuestras necesidades y poder cambiar el código dinámicamente. Vamos a empezar mirando como Elixir está representado por detrás, luego vamos a modificarlo y finalmente podemos usar este conocimiento para extenderlo.
Unas palabras de advertencia: La Metaprogramación es complicada y solo debería ser usada cuando sea realmente necesario El abuso con seguridad acabará con código complejo que es difícil de mantener y depurar.
Algunas veces un proyecto puede ser grande, demasiado grande incluso. Mix nos permite separar nuestro código en varias aplicaciones y hacer que nuestros proyectos de Elixir sean más manejables a medida que van creciendo.
En esta lección vamos a aprender acerca de la sintaxis de @spec
y @type
.
@spec
es mas una sintaxis complementaria para escribir documentación la cual podría ser analizada por herramientas.
@type
nos ayuda a escribir código más legible y fácil de entender.
Aprendimos acerca de Typespecs en la lección anterior, ahora vamos a aprender como requerir que un módulo implemente esas especificaciones. En Elixir, esta funcionalidad es referida como comportamientos.
En esta lección daremos un vistazo a los Protocolos, qué son y como los podemos utilizar en Elixir.