Código fuente en archivos

Es hora de salir de IEx y empezar a crear nuestros propios archivos de script reusables con código que podamos lanzar una y otra vez. Aquí os explico cómo se van a llamar estos archivos, qué extensión van a tener y creamos un Hola Mundo.

Rompiendo las cadenas de IEx para programar en Elixir con archivos fuente

Hasta ahora, hemos estado usando IEx para probar y ejecutar código Elixir de forma interactiva, lo cual es muy útil para experimentar rápidamente. Sin embargo, llega un momento en que queremos ir más allá y dejar de escribir nuestro programa cada vez que lo ejecutamos. La idea es tener nuestro código ya escrito y guardado en un archivo para poder ejecutarlo tantas veces como queramos, sin tener que reescribirlo. Esto es fundamental, porque imagina si cada vez que encendemos el ordenador tuviéramos que programar el sistema operativo desde cero. La clave está en que el programa exista como un archivo que el ordenador pueda ejecutar repetidamente.

Para ello, lo primero que necesitamos es crear archivos de código fuente en Elixir. Esto es tan sencillo como usar cualquier editor de texto plano para escribir nuestro código y guardarlo con la extensión adecuada. No vale usar procesadores de texto como Microsoft Word o Google Docs, porque ellos añaden formato que no corresponde a código. En cambio, podemos usar editores como el bloc de notas, Sublime Text, Gedit, TextEdit o, mejor aún, Visual Studio Code.

Visual Studio Code es una excelente opción porque es gratuito, de código abierto y multiplataforma, lo que significa que funciona en Windows, macOS y Linux. Además, cuenta con extensiones específicas para Elixir, como ElixirLS, que nos facilitan la programación con autocompletado, ayuda contextual y otras herramientas que hacen la experiencia mucho más cómoda y productiva.

Una vez que tenemos nuestro editor listo, creamos un archivo con extensión .ex o .exs. La diferencia entre ambas es que los archivos .ex suelen usarse para código fuente que luego compilamos para generar código binario que ejecuta la máquina virtual de Erlang, mientras que los archivos .exs son scripts que se compilan y ejecutan sobre la marcha, de forma similar a como funcionan los scripts en Python. Para empezar, es recomendable usar .exs porque nos permite ejecutar el código directamente sin necesidad de compilarlo previamente.

Dentro del archivo .exs podemos escribir nuestro programa como lo haríamos en IEx, pero con la ventaja de que el código queda guardado. Por ejemplo, podemos crear un pequeño programa que salude a una persona solicitando su nombre por teclado. Para ello, usamos IO.gets para leer la entrada del usuario y IO.puts para mostrar el saludo. Es importante recordar que, a diferencia de IEx, aquí no podemos simplemente escribir el nombre de una variable para ver su contenido; necesitamos usar IO.puts para imprimir cualquier resultado.

Un ejemplo sencillo sería:

nombre = IO.gets("¿Cómo te llamas? ")
nombre_limpio = String.trim(nombre)
IO.puts("Hola #{nombre_limpio}, encantado de conocerte.")

En este código, IO.gets muestra el mensaje y espera la entrada del usuario. Luego, usamos String.trim para eliminar espacios en blanco al principio y al final del nombre ingresado, lo que es útil para evitar problemas con saltos de línea o espacios accidentales. Finalmente, imprimimos un saludo personalizado usando interpolación de cadenas.

Para ejecutar este programa, simplemente abrimos una terminal, navegamos hasta la carpeta donde guardamos el archivo y ejecutamos:

elixir hola.exs

Esto ejecutará el script y veremos el saludo en pantalla. Si no usamos IO.puts, no veremos ningún resultado, porque en archivos fuente no tenemos la comodidad de IEx para mostrar valores automáticamente.

A partir de ahora, podemos alternar entre usar IEx para pruebas rápidas y archivos .exs para guardar y ejecutar programas completos. Esto nos permite organizar mejor nuestro código, reutilizarlo y mantenerlo limpio. Además, con herramientas como Visual Studio Code y su extensión ElixirLS, la experiencia de programar en Elixir se vuelve mucho más agradable y eficiente.

Es momento de empezar a crear nuestros propios archivos de código fuente y dejar atrás la dependencia exclusiva de IEx para ejecutar programas en Elixir.

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