Articulo de referencia

Elixir (lenguaje de programación)

https://elixir-lang.org/blog/2026/06/03/elixir-v1-20-0-released/ {{Bare URL inline|date=July 2026}} "},"influenced":{"wt":"[[Gleam (programming language)|Gleam]], [[LFE (program...

Elixir es un lenguaje de programación funcional , concurrente , de alto nivel y de propósito general que se ejecuta en la máquina virtual BEAM , la cual también se utiliza para implementar el lenguaje de programación Erlang . [ 7 ] Elixir se basa en Erlang y comparte las mismas abstracciones para la creación de aplicaciones distribuidas y tolerantes a fallos . Elixir también proporciona herramientas y un diseño extensible . Este último se apoya en la metaprogramación en tiempo de compilación con macros y el polimorfismo mediante protocolos. [ 8 ]

La comunidad organiza eventos anuales en Estados Unidos, [ 9 ] Europa, [ 10 ] y Japón, [ 11 ] así como eventos y conferencias locales menores. [ 12 ] [ 13 ]

Historia

José Valim creó el lenguaje de programación Elixir como un proyecto de investigación y desarrollo 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. [ 14 ] [ 15 ]

Elixir está orientado a sitios web y aplicaciones a gran escala. Utiliza características de Ruby , Erlang y Clojure para desarrollar un lenguaje de alta concurrencia y baja latencia. Fue diseñado para manejar grandes volúmenes de datos. Elixir también se utiliza en telecomunicaciones, comercio electrónico y finanzas. [ 16 ]

En 2021, se anunció el proyecto Numerical Elixir con el objetivo de incorporar aprendizaje automático, redes neuronales, compilación de GPU, procesamiento de datos y cuadernos computacionales al ecosistema de Elixir. [ 17 ]

Características

Ejemplos

Los siguientes ejemplos se pueden ejecutar en un iexshell o guardar en un archivo y ejecutar desde la línea de comandos escribiendo .elixir <filename>

Ejemplo clásico de "Hola mundo" :

iex> IO . puts ( "Hello World!" ) ¡Hola Mundo!

Operador de tuberías:

iex> "Elixir" |> String . graphemes () |> Enum . frequencies () %{"E" => 1, "i" => 2, "l" => 1, "r" => 1, "x" => 1}iex> %{ valores : 1 .. 5 } |> Map . get ( :valores ) |> Enum . map ( & &1 * 2 ) [2, 4, 6, 8, 10]iex> %{ valores : 1 .. 5 } |> Map . get ( :valores ) |> Enum . map ( & &1 * 2 ) |> Enum . sum () 30

Coincidencia de patrones (también conocida como desestructuración):

iex> %{ izquierda : x } = %{ izquierda : 5 , derecha : 8 } iex> x 5iex> { :ok , [ _ | resto ]} = { :ok , [ 1 , 2 , 3 ]} iex> resto [2, 3]

Coincidencia de patrones con múltiples cláusulas:

iex> case File . read ( "path/to/file" ) do iex> { :ok , contents } -> IO . puts ( "found file: #{ contents } " ) iex> { :error , reason } -> IO . puts ( "missing file: #{ reason } " ) iex> end

Comprensión de listas :

iex> para n <- 1 .. 5 , rem ( n , 2 ) == 1 , hacer : n * n [1, 9, 25]

Lectura asíncrona de archivos con flujos de datos:

1 .. 5 |> Tarea . async_stream ( & Archivo . leer! ( " #{ &1 } .txt" )) |> Flujo . filtro ( fn { :ok , contenido } -> Cadena . trim ( contenido ) != "" fin ) |> Enumeración . unir ( " \n " )

Cuerpos multifuncionales con protecciones :

def fib ( n ) cuando n está en [ 0 , 1 ], hacer : n def fib ( n ), hacer : fib ( n - 2 ) + fib ( n - 1 )

Bases de datos relacionales con la biblioteca Ecto:

esquema "clima" hacer campo :ciudad # Por defecto es tipo :cadena campo :temp_lo , :entero campo :temp_hi , :entero campo :prcp , :flotante , por defecto : 0.0 finClima |> donde ( ciudad : "Cracovia" ) |> ordenar_por ( :temp_lo ) |> límite ( 10 ) |> Repositorio . todo

Generando mil procesos de forma secuencial:

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

Realizar una tarea de forma asíncrona :

tarea = Tarea.async fn- > perform_complex_action ( ) end other_time_consuming_action ( ) Tarea.await tarea

Véase también

Referencias

  1. ^ Valim, José (25 de mayo de 2012). "Lanzamiento de Elixir v0.5.0" . elixir-lang . Consultado el 22 de enero de 2026 .
  2. "Evolución de Elixir: Historia y ecosistema" . Software Patterns Lexicon . 23 de noviembre de 2024. Archivado del original el 22 de enero de 2026. Consultado el 22 de enero de 2026 .
  3. Woo, Jiahao (15 de enero de 2024). "La historia de Elixir" . OSS History . Archivado del original el 15 de enero de 2024. Recuperado el 22 de enero de 2026 .
  4. https://github.com/elixir-lang/elixir/releases/ .{{cite web}}: Falta o está vacío |title=( ayuda )
  5. https://elixir-lang.org/blog/2026/06/03/elixir-v1-20-0-released/
  6. "elixir/LICENSE en master · elixir-lang/elixir · GitHub" . GitHub .
  7. "Lenguajes de programación más populares de 2018 - Blog de Elite Infoworld" . 30 de marzo de 2018. Archivado del original el 9 de mayo de 2018. Consultado el 8 de mayo de 2018 .
  8. 1 2 3 4 5 6 7 "Elixir" . elixir-lang . Consultado el 17 de febrero de 2013 .
  9. "ElixirConf" . Consultado el 11 de julio de 2018 .
  10. "ElixirConf" . Consultado el 11 de julio de 2018 .
  11. "Erlang & Elixir Fest" . Archivado del original el 30 de marzo de 2019. Consultado el 18 de febrero de 2019 .
  12. "Elixir LDN" . Archivado del original el 12 de julio de 2018. Consultado el 12 de julio de 2018 .
  13. "EMPEX - Empire State Elixir Conference" . Consultado el 12 de julio de 2018 .
  14. Elixir - Un enfoque moderno para la programación en la máquina virtual de Erlang . Consultado el 17 de febrero de 2013 .
  15. José Valim - Conferencia magistral de ElixirConf EU 2017. Archivado del original el 17 de noviembre de 2021. Consultado el 14 de julio de 2017 .
  16. "Detrás del código: El creador de Elixir" . Consultado el 25 de noviembre de 2019 .
  17. "Numerical Elixir (Nx)" . GitHub . Consultado el 6 de mayo de 2024 .
  18. "Escribiendo código asertivo con Elixir" . 24 de septiembre de 2014. Consultado el 5 de julio de 2018 .
  19. Loder, Wolfgang (12 de mayo de 2015). Erlang y Elixir para programadores imperativos . "Capítulo 16: Conceptos de estructuración de código", título de la sección "Modelo de actor": Leanpub . Recuperado el 7 de julio de 2015 .{{cite book}}: CS1 mantenimiento: ubicación ( enlace )
  20. Wlaschin, Scott (mayo de 2013). "Programación orientada al ferrocarril" . F# para divertirse y ganar dinero . Archivado del original el 30 de enero de 2021. Recuperado el 28 de febrero de 2021 .

Lecturas adicionales

  • Simon St. Laurent; J. Eisenberg (22 de diciembre de 2016). Introducción a Elixir: Primeros pasos en la programación funcional, 2.ª edición . O'Reilly Media . ISBN 978-1491956779.
  • Sasa Juric (12 de enero de 2019). Elixir en Acción 2ª Edición . Publicaciones de Manning . ISBN 978-1617295027.