Elixir tiene una barrera que romper en la adopción de la industria, sin embargo hay mucho potencial y beneficio en el lenguaje.
Por ejemplo:
- Las convenciones y las herramientas promueven, la separación de responsabilidades, el uso de una arquitectura modular, etcétera.
- Proporcionar una interfaz clara para interactuar con la lógica empresarial.
- Facilitar las pruebas y el mantenimiento.
- Re-utilización de la lógica de dominio en diferentes partes de la aplicación
Frecuentemente he escuchado que Elixir es un lenguaje de programación funcional concurrente, de propósito general y de alto nivel que se ejecuta en Erlang VM (BEAM). Sin embargo lo más importante proviene de su origen, ya que fue creado a partir de necesidades específicas que no se estaban cubriendo en ese momento por ningún otro lenguaje.
José Valim, creador de Elixir, explica por qué Erlang le llamó la atención:
Lo más importante para Elixir como lenguaje de programación es Erlang VM, que fue creado para construir centrales telefónicas. Lo que se busca de una central telefónica es que no sólo maneje dos conexiones, sino que sea altamente concurrente. [...] Entonces la gente se dio cuenta de que nuestro escenario es similar a la web. Tenemos navegadores conectados al servidor.
Cabe destacar que Ruby era el lenguaje de programación principal de José, pero su máquina virtual de resonancia magnética tenía limitaciones fundamentales. José tomó prestadas algunas filosofías de sintaxis y experiencia de desarrollador de Ruby, como capacidades de meta-programación, convención sobre configuración y enfoque en la satisfacción y productividad del desarrollador. Esta familiaridad tiene como objetivo facilitar la transición para los desarrolladores de Ruby y brindar una experiencia de desarrollo productiva.
Características de Elixir
La máquina virtual de Erlang
Es una máquina virtual diseñada para crear sistemas altamente concurrentes, de baja latencia y tolerantes a fallas. A
Programación funcional
Estructuras de datos inmutables y la composición de funciones. Esta diferencia fundamental en los paradigmas de programación distingue a Elixir de Ruby y contribuye a sus ventajas en cuanto a concurrencia y tolerancia a fallos.
Modelo de concurrencia
Elixir heredó el modelo de actores de Erlang y la concurrencia de procesos livianos, que difiere radicalmente del modelo de concurrencia basado en subprocesos de Ruby.
Tolerancia a fallos y auto-recuperación
Una de las principales fortalezas de Elixir es su tolerancia a fallas y sus capacidades de auto-recuperación heredadas de la máquina virtual Erlang. Las aplicaciones de Elixir pueden recuperarse de fallas y continuar ejecutándose, una característica que no está incorporada en Ruby, lo que garantiza una mayor confiabilidad y tiempo de actividad del sistema.
Los rasgos únicos de Elixir surgen de la fusión armoniosa de sus principios y fundamentos básicos.
Elixir integra a la perfección el poder de la máquina virtual Erlang, los principios de la programación funcional, un modelo de concurrencia sólido, tolerancia a fallos y un enfoque en la satisfacción del desarrollador para crear un lenguaje que se destaca en múltiples dominios. A partir de esta sólida base, Elixir ha obtenido una variedad de potentes características y ventajas, entre las que se incluyen:
Sintaxis concisa y expresiva
- Productividad y expresividad*
- Meta-programación
- Consumo reducido de recursos para mantenimiento y ampliación.
Potente máquina virtual
- Simultaneidad y escalabilidad
- Tolerancia a fallos
- Uso optimizado de la infraestructura
Comunidad y ecosistema
- Contratación de personal altamente cualificado
- Aprovechar el ecosistema Erlang existente
- Desarrollo basado en pruebas
Si deseas conocer más sobre el lenguaje de programación y su adopción, te recomiendo el libro Adopting Elixir
![Adopting Elixir book](/images/adopcion-elixir/adopcion-elixir.jpg)