Elixir (lenguaje de programación)

De Wikipedia, la enciclopedia libre
Esta es una versión antigua de esta página, editada a las 20:11 25 may 2020 por 145.133.161.238 (discusión). La dirección URL es un enlace permanente a esta versión, que puede ser diferente de la versión actual.
Elixir
Desarrollador(es)
José Valim
https://elixir-lang.org/
Información general
Extensiones comunes .ex, .exs
Paradigma multiparadigma: funcional, concurrente, distribuido, orientada a procesos
Apareció en 9 de enero de 2011 (13 años, 4 meses y 2 días)
Diseñado por José Valim
Última versión estable 1.9.0 (24 de junio de 2019 (4 años, 10 meses y 17 días))
Última versión en pruebas 1.5.0-rc.2 (20 de julio de 2017 (6 años, 9 meses y 22 días))
Sistema de tipos dinámico
Influido por Erlang, Ruby, Clojure
Sistema operativo Multiplataforma
Licencia Licencia Apache, versión 2.0

Elixir es un lenguaje de programación funcional, concurrente, de propósito general que se ejecuta sobre la máquina virtual de Erlang (BEAM). Elixir está escrito sobre Erlang y comparte las mismas abstracciones para desarrollar aplicaciones distribuidas y tolerantes a fallos. Elixir también proporciona un diseño extensible con herramientas productivas. Incluye soporte para metaprogramación en tiempo de compilación con macros y polimorfismo mediante protocolos.[1]

Elixir ha cosechado éxito en la industria con empresas como Pinterest[2]​ y Moz.[3]​ Elixir también es usado para el desarrollo web, por empresas como Bleacher Report, Discord, e Inverse,[4]​ y para desarrollar sistemas embebidos.[5][6]​ La comunidad organiza eventos anuales en los Estados Unidos,[7][8][9]​ Europa[10]​ y Japón,[11]​ así como conferencias menores.[12][13]

Historia

José Valim es el brasileño creador del lenguaje de programación Elixir, y del proyecto R&D de Plataformatec, una filial del nubank.[14]​ Sus objetivos eran crear un lenguaje que permitiese una alta extensibilidad y productividad en la máquina virtual de Erlang mantieniendo compatibilidad con el ecosistema de Erlang.[15][16]

Características

Ejemplos

Los siguientes ejemplos se pueden ejecutar desde el intérprete o se pueden guardar en un fichero y ejecutarlo desde la línea de comandos escribiendo elixir <nombre del fichero>.

Ejemplo clásico Hola mundo:

iex> IO.puts "Hola mundo"
Hola mundo

Comprensiones de listas

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

Búsqueda de patrones

iex> [1, a] = [1, 2]
iex> a
2

iex> {:ok, [hello: a]} = {:ok, [hello: "world"]}
iex> a
"world"

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
end

Invocación secuencial de miles de procesos

for num <- 1..1000, do: spawn fn -> IO.puts "#{num * 2}" end

Realización de tareas de forma asíncrona

task = Task.async fn -> perform_complex_action() end
other_time_consuming_action()
Task.await task

Véase también

Referencias

  1. «Elixir Protocols». José Valim. Consultado el 17 de febrero de 2013. 
  2. «Introducing new open-source tools for the Elixir community». Consultado el 1 de agosto de 2016. 
  3. «Unlocking New Features in Moz Pro with a Database-Free Architecture». Consultado el 1 de agosto de 2016. 
  4. «What big projects use Elixir?». Consultado el 1 de agosto de 2016. 
  5. «Elixir in production interview: Garth Hitchens». Consultado el 1 de agosto de 2016. 
  6. «Nerves - Craft and deploy bulletproof embedded software in Elixir». Consultado el 1 de agosto de 2016. 
  7. «ElixirConf 2014». Consultado el 1 de agosto de 2016.  (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última).
  8. «ElixirConf 2015». Consultado el 1 de agosto de 2016.  (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última).
  9. «ElixirConf». Consultado el 1 de agosto de 2016. 
  10. «ElixirConf». Consultado el 1 de agosto de 2016. 
  11. «ElixirConf.jp». Archivado desde el original el 18 de junio de 2017. Consultado el 9 de julio de 2017. 
  12. «Elixir LDN». Consultado el 1 de agosto de 2016. 
  13. «EMPEX - Empire State Elixir Conference». Consultado el 1 de agosto de 2016. 
  14. «Important information about our Elixir and Ruby Open Source projects». Consultado el 7 de enero de 2020. 
  15. Elixir - A modern approach to programming for the Erlang VM. Consultado el 17 de febrero de 2013. 
  16. José Valim - ElixirConf EU 2017 Keynote. Consultado el 14 de julio de 2017. 
  17. a b c d e «Elixir». Consultado el 7 de septiembre de 2014. 
  18. Loder, Wolfgang (12 de mayo de 2015). Erlang and Elixir for Imperative Programmers. "Capítulo 16: Code Structuring Concepts", sección "Actor Model": Leanpub. Consultado el 7 de julio de 2015. 

Enlaces externos