import Pkg
proyecto_demo = mktempdir()
Pkg.activate(proyecto_demo)1 Introducción
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).
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 | shy 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 msstoreUna vez instalado podemos hacer una pequeña prueba, levantar un terminal y ejecutar julia. Debería mostrarnos algo como

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. Aquí lo haremos sobre un directorio temporal para no alterar el entorno de este libro, pero tú puedes usar la carpeta de tu proyecto.
Al activar el entorno y añadir la primera dependencia se generan dos ficheros esenciales para el correcto funcionamiento de nuestro código:
Project.toml: donde se listan las dependencias directas de nuestro proyecto y, opcionalmente, el rango de versiones admitido para cada una.Manifest.toml: el resultado exacto de resolver esas dependencias. Recoge la versión concreta y el hash de todos los paquetes (los directos y los que estos arrastran), además de la versión de Julia con la que se resolvió.
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 `/tmp/jl_WHfuf0/Project.toml` [91a5bcdd] Plots v1.41.6
Estos dos ficheros son los que permiten que tu código se ejecute igual en otra máquina, así que deben versionarse junto al código. Quien clone el proyecto solo tiene que ejecutar
Pkg.activate(".")
Pkg.instantiate()y instantiate descargará exactamente las versiones fijadas en el Manifest.toml, sin volver a resolver nada. Este mismo libro se construye así: puedes ver su Project.toml y su Manifest.toml.
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))Precompiling packages... 761.7 ms ✓ QuartoNotebookWorkerJSONExt (serial) 1 dependency successfully precompiled in 1 seconds Precompiling packages... 1604.0 ms ✓ QuartoNotebookWorkerPlotsExt (serial) 1 dependency successfully precompiled in 2 seconds
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.
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.↩︎