¿Qué es Elixir?

Elixir es un lenguaje de programación funcional para la creación de aplicaciones distribuidas y escalables que corre sobre la plataforma Erlang. Hoy día, Elixir se usa para crear todo tipo de aplicaciones, destacando aquellas orientadas a las redes y a los servicios, como aplicaciones web, colas de mensajes o plataformas de chat.

Elixir es un lenguaje de programación funcional que nos invita a pensar de manera diferente a los lenguajes imperativos tradicionales como C, Java o Go. En lugar de escribir instrucciones que el ordenador debe ejecutar paso a paso, en Elixir definimos fórmulas y expresiones que representan soluciones a problemas. Esto se asemeja más a cómo funcionan las matemáticas, donde definimos funciones como f(x) = x + 2 y luego pedimos que se evalúen para obtener resultados concretos.

Este enfoque funcional puede resultar novedoso si nunca hemos trabajado con él, pero Elixir destaca por su sencillez y accesibilidad. A diferencia de otros lenguajes funcionales más complejos, Elixir nos permite ir entendiendo el paradigma casi sin darnos cuenta, facilitando la transición desde la programación imperativa.

Una de las grandes fortalezas de Elixir es su capacidad para crear aplicaciones distribuidas y escalables. La programación distribuida consiste en dividir un problema en partes que pueden ejecutarse simultáneamente en múltiples ordenadores. Esto es especialmente útil en situaciones donde una tarea individual puede tardar mucho tiempo, como simular proteínas para investigación médica. En lugar de que un solo ordenador trabaje durante días, podemos repartir la carga entre varias máquinas, acelerando el proceso y gestionando automáticamente posibles fallos o caídas de alguna de ellas.

Este tipo de sistemas distribuidos también son fundamentales en sectores como las telecomunicaciones. Por ejemplo, una antena que recibe múltiples tipos de datos (llamadas, mensajes, vídeos) puede distribuir la carga entre varios controladores para atender mejor las peticiones y evitar cuellos de botella. La escalabilidad, en este contexto, se refiere a la facilidad con la que podemos añadir o quitar máquinas para ajustar la capacidad del sistema según la demanda.

En la práctica, muchas empresas utilizan Elixir para construir sistemas que requieren alta concurrencia y fiabilidad. Por ejemplo, plataformas financieras como Brex gestionan pagos con tarjeta de crédito mediante sistemas distribuidos que deben procesar miles de transacciones simultáneamente. Aplicaciones de mensajería como Discord también se apoyan en Elixir para manejar el envío masivo de mensajes y llamadas en tiempo real, garantizando rapidez y estabilidad incluso en momentos de alta demanda.

Estos sistemas suelen estar basados en la máquina virtual de Erlang, que proporciona la infraestructura necesaria para soportar la concurrencia y distribución que Elixir aprovecha. Gracias a esta base, aplicaciones como Discord, WhatsApp o incluso servicios de videojuegos pueden ofrecer experiencias robustas y escalables.

En definitiva, Elixir nos ofrece un lenguaje funcional con una sintaxis amigable y un enfoque potente para construir aplicaciones distribuidas y escalables. Aunque no es la solución para todos los casos, cuando se trata de sistemas que requieren alta concurrencia, fiabilidad y capacidad de crecimiento, Elixir se presenta como una opción muy sólida y moderna.

Lista de reproducción
  1. 1
    ¿Qué es Elixir?
    10 minutos
  2. 2
    Instalación de Elixir
    9 minutos
  3. 3
    ¿Qué es la programación funcional? (Como la de Elixir)
    20 minutos
  4. 4
    ¿Cómo funciona la REPL de Elixir?
    7 minutos
  5. 5
    ¿Cómo hacer asignaciones en Elixir?
    7 minutos
  6. 6
    Operadores aritméticos básicos
    6 minutos
  7. 7
    ¿Qué son los tipos de datos de Elixir?
    5 minutos
  8. 8
    Átomos en Elixir
    4 minutos
  9. 9
    Las palabras clave nil, true y false
    6 minutos
  10. 10
    Operadores lógicos de comparación
    8 minutos
  11. 11
    Comparación estricta con ===
    3 minutos
  12. 12
    Operadores lógicos y proposicionales
    8 minutos
  13. 13
    Invocación de funciones
    10 minutos
  14. 14
    Fundamentos de funciones
    9 minutos
  15. 15
    Cadenas de caracteres
    8 minutos
  16. 16
    Entrada y salida estandar de la mano de gets y puts
    9 minutos
  17. 17
    Concatenar e interpolar strings
    9 minutos
  18. 18
    Código fuente en archivos
    9 minutos
  19. 19
    Condicional IF y bloques DO-END
    11 minutos
  20. 20
    IFs anidados, UNLESS y COND
    12 minutos
  21. 21
    Definición de funciones
    11 minutos
  22. 22
    Fundamentos de compilación de módulos
    6 minutos
  23. 23
    Guardas
    8 minutos
  24. 24
    Funciones anónimas
    7 minutos
  25. 25
    Capturar funciones
    4 minutos
  26. 26
    Invocación de funciones dentro del mismo módulo
    7 minutos
  27. 27
    Tuplas
    8 minutos
  28. 28
    Introducción al pattern matching
    8 minutos
  29. 29
    Pattern matching en funciones
    11 minutos
  30. 30
    Las tuplas :ok, :error
    7 minutos
  31. 31
    case
    10 minutos
  32. 32
    Operador pin
    7 minutos
  33. 33
    Pattern matchings y recursividad
    5 minutos
  34. 34
    Listas
    9 minutos
  35. 35
    Operadores y funciones de lista
    10 minutos
  36. 36
    Keyword lists: listas de palabras clave
    8 minutos
  37. 37
    Mapas
    7 minutos
  38. 38
    Pattern matching de mapas y keyword lists
    6 minutos
  39. 39
    Operadores y funciones para mapas y keyword lists
    5 minutos
  40. 40
    Estructuras con defstruct
    11 minutos
  41. 41
    Bitstrings
    11 minutos
  42. 42
    Charlists
    10 minutos
  43. 43
    Funciones de alto orden en Elixir
    5 minutos
  44. 44
    Uso de la función filter
    10 minutos
  45. 45
    Uso de la función map
    7 minutos
  46. 46
    Uso de la función reduce
    9 minutos
  47. 47
    Pipelines
    11 minutos
  48. 48
    Rangos y Streams
    11 minutos
  49. 49
    Funciones recursivas con listas
    14 minutos