Lessons: Advanced

Taking our knowledge to the next level, these lessons get cover the advanced topics of Elixir and the 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.