1  Introducción

Autor/a

Iraitz Montalbán

Logo Julia

Primeramente debemos entender qué es Julia (Bezanson et al. 2017). Julia es un lenguaje de reciente creación (2012) de programación que pretende romper la barrera de los dos lenguajes. Es decir, ser rápido en ejecución pero cómodo en el uso, incluyendo el uso interactivo tan común en el trabajo exploratorio de la ciencia de datos. Está muy ligado al mundo de la computación científica y es común en centros de investigación o entes ligados a la computación de altas prestaciones (High Performance Computing). De hecho, Julia es parte del selecto club del petaflop. Está basado en el compilador LLVM (Lattner y Adve 2004) y de ahí que muestra una velocidad similar a la de otros lenguajes empleados en ambientes productivos (C/C++, Rust o Go).

Comparativa en https://julialang.org/benchmarks/

Es habitual que los científicos de datos desarrollen sus modelos en Python y una vez conformes con su rendimiento delegen la puesta en producción en ingenieros que deben transformar estos programas en código productivo. Suele requerir incorporar cuestiones no contempladas hasta el momento como logs de cara a depurar errores, bloques de seguridad y autenticación, sanitización1 del código para evitar problemas de seguridad y rendimiento, etc.

Os dejo esta charla de uno de sus creadores Alan Edelman que puede ayudar a entender la motivación de crear este lenguaje

1.1 Instalar Julia

Julia no podría ser más sencillo de instalar.

1.1.1 Linux/Mac

Simplemente ejecuta el comando

curl -fsSL https://install.julialang.org | sh

y se encargará de instalar el intérprete de Julia así como su gestor de versiones juliaup.

1.1.2 Windows

Deberemos instalarlo desde la Microsoft Store pero también podemos ejecutarlo desde una shell.

winget install --name Julia --id 9NJNWW8PVKMN -e -s msstore

Una vez instalado podemos hacer una pequeña prueba, levantar un terminal y ejecutar julia. Debería mostrarnos algo como

Julia en el terminal

Ahora ya solo nos queda empezar a trabajar.

1.2 Crear un proyecto

Julia trae por defecto un gestor de paquetes propio. Esto nos ayuda a indicar las dependencias de nuestro código para que pueda ejecutarse en otros entornos de manera correcta.

Podemos crear un primer proyecto indicando la activación del mismo.

import Pkg;
Pkg.activate(".")

Esto generará dos ficheros esenciales para el correcto funcionamiento de nuestro código:

  • Project.toml: Donde se listan las dependencias de nuestro proyecto.
  • Manifest.toml: Donde se indican las versiones de nuestro intérprete de Julia a utilizar, además de los hash de las versiones de los paquetes compatibles.

Podemos ver las distintas opciones en la documentación oficial. Podemos añadir una dependencia mediante la función .add()

Pkg.add("Plots")

Y esta se sumará a nuestros ficheros TOML. El comando .status() nos informará de las dependencias actuales.

Pkg.status()
Status `~/work/ciencia-datos-julia/ciencia-datos-julia/Project.toml`
  [91a5bcdd] Plots v1.40.16

De forma que podemos hacer uso de esas librerías o paquetes en nuestro código.

using Plots

plot(sin, 
     x->sin(2x), 
     0, 
     2π, 
     leg=false, 
     fill=(0,:lavender))
Figura 1.1: Gráfico paramétrico, mostrando un ejemplo de uso de librería/paquete

Este es un aspecto clave ya que, tal y como sucede en Python, mucho de nuestro trabajo dependerá de los paquetes existentes y así no tendremos que reinventar la rueda una y otra vez.


  1. Proceso de revisar y limpiar el código fuente de un programa para eliminar errores, mejorar su calidad y asegurar que cumpla con estándares de seguridad y eficiencia.↩︎