Trabajando con Elixir desde 2014
Erlang
Algunos de sus usos son en telecomunicaciones, banca, comercio electrónico, telefonía ip y mensajería instantánea. El sistema en tiempo de ejecución de Erlang tiene soporte incorporado para concurrencia, distribución y tolerancia a fallos.
Elixir
Elixir aprovecha la máquina virtual Erlang, conocida por ejecutar sistemas de baja latencia, distribuidos y con tolerancia a fallos, a la vez que también se utiliza con éxito en el desarrollo web y el dominio de software embebido.
Phoenix
Phoenix proporciona una alta productividad del desarrollador y un alto rendimiento de la aplicación. También tiene algunos giros nuevos e interesantes como canales para implementar características en tiempo real y plantillas precompiladas para una velocidad increíble.
Phoenix liveview
Las aplicaciones con tecnología LiveView tienen estado en el servidor con comunicación bidireccional a través de WebSockets, ofreciendo un modelo de programación enormemente simplificado en comparación con las alternativas de JavaScript.
¿Por qué deberías usar Elixir?
CONCURRENCIA
La programación funcional hace posible la concurrencia al evitar tanto las condiciones de carrera (donde dos programas compiten para obtener el mismo valor) como los puntos muertos, donde un programa espera indefinidamente, para que el otro escriba un valor.
Tolerancia a fallos
Proporciona mecanismos de seguridad incorporados que permiten trabajar incluso cuando algo sale mal. Los procesos alertan un fallo a los procesos dependientes, incluso en otros servidores.
Escalabilidad
Elixir se ejecuta en Erlang VM, puede ejecutar aplicaciones en múltiples nodos. Podemos hacer aplicaciones web y de IoT más grandes que se puedan escalar en varios servidores diferentes.
Fuerte comunidad de desarrolladores
Hay una comunidad activa de usuarios donde incluso ingenieros altamente cualificados están dispuestos a ayudar y compartir sus conocimientos.
Pattern matching
Pattern matching te permite organizar de una forma mucho más clara el comportamiento del codigo. Ayuda a hacer las cosas concisas y limpias.
DoC y prueba
Elixir tiene pruebas integradas y documentación, sin agregar ninguna biblioteca de terceros.
Depuración
La depuración es mucho más fácil cuando no tienes un estado global. Puedes mirar los argumentos de una función y tienes su estado allí mismo.
Más fácil de entender
Elixir es un lenguaje de programación funcional que es fácil de leer y fácil de usar.
Algunos ejemplos
Operador de tubería
submarino = submarino.nuevo ({posición: 0})
submarine.go_deep (100)
submarine.move (200)
submarine.fire ()
submarino = submarino.nuevo (posición: 0)
|> Submarine.go_deep (100)
|> Submarine.move (200)
|> Submarine.fire ()
Pattern matching
función margarita (mujer, hombre) {
if (mujer === 'my_love') {
if (man === 'yo') {
volver "¡Ella me ama!"
} más {
volver "Ella ama a otro ... :("
}
}
si no (mujer === 'my_friend') {
volver "Ella es solo mi amiga"
}
más {
volver "¿Quién es ella?"
}
}
def daisy (: my_love,: me), do: "¡Ella me ama!"
def daisy (: my_love, _), do: "Ella ama a otro ... :("
def daisy (: my_friend, _), do: "Ella es solo mi amiga"
def daisy (_, _), do: "¿Quién es ella?"
Fibonacci
función fibonacci (num, memo) {
memo = memo || {};
if (memo [num]) devuelve memo [num];
if (num <= 1) devuelve 1;
return memo [num] = fibonacci (num - 1, memo) + fibonacci (num - 2, memo);
}
def fibonacci (n) cuando n <2, hacer: n
def fibonacci (n) do: fibonacci (n-1) + fibonacci (n-2)
Doc & Test incorporada
Doc genera la documentación, y Ejemplos define automáticamente un conjunto de Test simples.
defmodule Fibonacci do
@moduledoc "" "
Modurle para fibonacci.
“””
@Doc """
Función de Fibonacci
## Ejemplos
iex> Fibonacci.fibonacci (3)
2
iex> Fibonacci.fibonacci (7)
13
“””
def fibonacci (n) cuando n <2, hacer: n
def fibonacci (n) do: fibonacci (n-1) + fibonacci (n-2)