Elixir (lenguaje de programación)

Ajustar Compartir Imprimir Citar

Elixir es un lenguaje de programación funcional, concurrente y de propósito general que se ejecuta en la máquina virtual BEAM que también se utiliza para implementar el lenguaje de programación Erlang. Elixir se basa en Erlang y comparte las mismas abstracciones para crear aplicaciones distribuidas tolerantes a fallas. Elixir también proporciona herramientas productivas y un diseño extensible. Este último es compatible con metaprogramación en tiempo de compilación con macros y polimorfismo a través de protocolos.

Elixir es utilizado por empresas como Ramp, PagerDuty, Discord, Brex, E-MetroTel, Pinterest, Moz, Bleacher Report, The Outline, Inverse, Divvy, FarmBot y para crear sistemas integrados. La comunidad organiza eventos anuales en los Estados Unidos, Europa y Japón, así como eventos y conferencias locales menores.

Historia

José Valim es el creador del lenguaje de programación Elixir, un proyecto de investigación y desarrollo creado en Plataformatec. Sus objetivos eran permitir una mayor extensibilidad y productividad en la máquina virtual de Erlang manteniendo la compatibilidad con el ecosistema de Erlang.

Elixir estaba destinado a sitios y aplicaciones a gran escala. Elixir utiliza características de Ruby, Erlang y Clojure para desarrollar un lenguaje de "alta concurrencia" y "baja latencia". Elixir fue diseñado para manejar grandes volúmenes de datos. Elixir se utiliza en las industrias de telecomunicaciones, comercio electrónico y finanzas.

El 12 de julio de 2018, Honeypot lanzó un mini documental sobre Elixir.

Versionado

Elixir sigue principalmente el control de versiones semántico y tiene solo 1 versión principal sin planes para una segunda. Cada una de las versiones secundarias admite un rango específico de versiones de Erlang/OTP. La versión de lanzamiento estable actual es 1.14.1.

Características

Ejemplos

Los siguientes ejemplos pueden ejecutarse en un iexshell o guardarse en un archivo y ejecutarse desde la línea de comando escribiendo. elixir <filename>

Ejemplo clásico de Hola mundo:

iex > IO . pone ("¡Hola Mundo!") 
¡Hola Mundo!

Lista de comprensión:

iex> for  n  <-  [ 1, 2, 3, 4, 5 ],  rem (n,  2)  ==  1,  do:  n * n 
[1, 9, 25]

Coincidencia de patrones (desestructuración):

es decir > ​​[ 1,  un ]  =  [ 1,  2 ] 
es decir > ​​un 
2

iex> {:ok,  [ hola:  a ]}  =  {:ok,  [ hola:  "mundo" ]} 
iex> a 
"mundo"

Coincidencia de patrones (cláusulas múltiples):

iex> expediente del caso . read ("ruta/al/archivo") do iex> {:ok, contenidos } -> IO . puts ("archivo encontrado: #{ contenidos } ") iex> {: error, razón } -> IO . puts ("archivo faltante: #{ motivo } ") iex> end 
     
     

Operador de tubería:

iex> "1"  |>  Cadena . to_integer ()  |>  Núcleo .* (2) 
2

Módulos:

defmodule  Fun  do 
  def  fib (0),  do:  0 
  def  fib (1),  do:  1 
  def  fib (n),  do:  fib (n - 2)  +  fib (n - 1)   
end

Generando secuencialmente mil procesos:

para  num  <-  1.. 1000,  haga:  spawn  fn  ->  IO . pone (" #{ num  *  2 } ")  fin

Realización asincrónica de una tarea:

tarea  =  tarea . async  fn  ->  perform_complex_action ()  end 
other_time_Consuming_action () 
Task . esperar  tarea

Proyectos destacados de Elixir