1 Introducción
1.1 ¿Por qué Julia?
Julia es otro lenguaje de programación más, orientado a cálculo científico el análisis de datos similar a Python, R o Matlab.
¿De veras necesitamos aprender otro lenguaje más?
1.2 ¿Qué pretende ser Julia?
De los creadores de Julia:
We want a language that is:
- Open source.
- With the speed of C.
- Obvious, familiar mathematical notation like Matlab.
- As usable for general programming as Python.
- As easy for statistics as R.
- As natural for string processing as Perl.
- As powerful for linear algebra as Matlab.
- As good at gluing programs together as the shell.
- Dirt simple to learn, yet keeps the most serious hackers happy.
1.3 ¿Qué es Julia?
- Julia es un lenguaje de alto nivel con una sintaxis fácil de aprender (similar a Python, R o Matlab) que permite escribir símbolos matemáticos en las expresiones (UTF-8).
- Julia es un lenguaje muy veloz (equiparable a C en muchas tareas.)
- Lenguaje dinámico (tipado dinámico y despacho múltiple).
- De propósito general, pero orientado a la computación científica y el análisis de grandes volúmenes de datos.
- Creado en 2019 en el MIT por el equipo del profesor Edelman.
- Última versión: 1.7 (bastante maduro).
- Desarrollado por una gran comunidad científica.
- Repositorio de paquetes de código abierto con más de 3000 paquetes en dominios muy diversos.
1.3.1 Comparativa de rapidez de Julia con otros lenguajes
1.4 Algunas razones más para pensárselo
- Evita el problema de la doble reescritura de código (prototipo + versión operativa).
- Permite la programación paralela y distribuida.
- Puede ejecutar código realizado en otros lenguajes como C, Fortran, Python, R, Matlab, etc.
1.5 Instalación de Julia
La mejor manera de instalar Julia es mediante la aplicación juliaup
que permite instalar diferentes versiones de Julia en diferentes sistemas operativos. En la propia página web de Julia se ofrecen instrucciones detalladas para instalarla en cada sistema operativo.
La aplicación juliaup
además de instalar Julia y añadir el ejecutable al PATH
del sistema, permite otras operaciones como:
julia status
: Muestra todas las versiones de Julia instaladas en el sistema y cuál es la activa por defecto, así como y el canal activo.julia list
: Da una lista de los canales (repositorios) disponibles para descargar Julia. Para instalar Julia hay que añadir al menos un canal por lo que si no aparece ninguno previamente abrá que añadirlo mediante el siguiente comando. El canal con la última versión estable de Julia esrelease
.julia add version|canal
: Añade el canalcanal
a la lista de canales disponibles o instala una versión específica de Julia en el sistema. Si no se especifica la versión, se instalará la última versión estable.julia update
: Actualiza la versión de Julia activa a la última versión estable en todos los canales configurados.julia remove version
: Elimina la versiónversion
de Julia del sistema.
Una vez instalado julia, se puede comprobar que la instalación ha sido correcta abriendo una terminal y tecleando `julia`. Debería aparecer algo parecido a esto:
```bash
prompt> julia
_
_ _ _(_)_ | Documentation: https://docs.julialang.org
(_) | (_) (_) |
_ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 1.10.2 (2024-03-01)
_/ |\__'_|_|_|\__'_| | Official https://julialang.org/ release
|__/ |
julia>
1.6 El REPL de Julia
El REPL1 de Julia permite ejecutar código de Julia tecleándolo directamente en la terminal.
julia> 2 + 3
5
Tiene, además, varios modos:
;
para abrir el modo shell.]
para abrir el modo de gestión de paquetes.?
para abrir el modoe de ayuda.to open help mode<backspace>
para volver al modo normal.
1.7 El gestor de paquetes de Julia
Como en otros lenguajes, es posible crear módulos o paquetes con código que puede ser reutilizado. Julia tiene un potente gestor de paquetes que facilita la búsqueda, instalación, actualización y eliminación de paquetes.
Por defecto el gestor de paquetes utiliza el repositorio de paquetes oficial pero se pueden instalar paquetes de otros repositorios.
Para entrar en el modo de gestión de paquetes hay que teclear ]
. Esto produce un cambio en el prompt del REPL de Julia.
Los comandos más habituales son:
add p
: Instala el paquetep
en el entorno activo de Julia.update
: Actualiza los paquetes del entorno activo de Julia.status
: Muestra los paquetes instalados y sus versiones en el entorno activo de Julia.remove p
: Elimina el paquetep
del entorno activo de Julia.
Ejemplo
@v1.7) pkg> add CSV
(...
Resolving package versions.7.0
Installed CodecZlib ────────── v0.3.13
Installed SentinelArrays ───── v1.4.2
Installed WeakRefStrings ───── v1.1.4
Installed InlineStrings ────── v1.9.18
Installed FilePathsBase ────── v0.9.6
Installed TranscodingStreams ─ v0.10.4
Installed CSV ──────────────── v0`~/.julia/environments/v1.7/Project.toml`
Updating 336ed68f] + CSV v0.10.4
[`~/.julia/environments/v1.7/Manifest.toml`
Updating 336ed68f] + CSV v0.10.4
[944b1d66] + CodecZlib v0.7.0
[48062228] + FilePathsBase v0.9.18
[842dd82b] + InlineStrings v1.1.4
[91c51154] + SentinelArrays v1.3.13
[3bb67fe8] + TranscodingStreams v0.9.6
[+ WeakRefStrings v1.4.2
[ea10d353] ... Precompiling project
1.8 Entornos de desarrollo
Cuando se trabaja en el desarrollo de varias aplicaciones, es habitual crear entornos de desarrollo individuales para instalar los paquetes de los que dependan y que no interfieran con los de otras aplicaciones.
Básicamente, un entorno de desarrollo es un directorio con código de Julia que contiene dos ficheros Project.toml
y Manifest.toml
que contienen los paquetes instalados en el entorno y sus dependencias.
Para crear y activar un entorno de desarrollo se utilizan los siguiente comandos en el modo de gestión de paquetes:
generate dir
: Crea el directoriodir
y lo convierte en un entorno de desarrollo de Julia.activate dir
: Convierte en el entorno de desarrollodir
en el entorno activo dentro de la sesión de Julia. A partir de entonces, cualquier paquete que se instale o actualice será dentro de ese entorno.
Ejemplo
@v1.7) pkg> generate app
(:
Generating project app/Project.toml
app/src/app.jl
app
@v1.7) pkg> activate app
(`~/app`
Activating project at
> add CSV # Instalar última versión del paquete CSV
(app) pkg...
> add DataFrames@v1.3.0; # Instalar la versión 1.3.0 del paquete DataFrames
(app) pkg...
> status
(app) pkg.1.0
Project app v0`~/app/Project.toml`
Status 336ed68f] CSV v0.10.4
[.3.0 [a93c6f00] DataFrames v1
1.9 IDEs para Julia
1.9.1 Visual studio code
1.9.2 Jupyter
- Descargar e instalar Python
- Descargar e instalar Jupyter
- Instalar el paquete IJulia:
> using Pkg
julia> Pkg.add("IJulia") julia
1.9.3 Pluto
Pluto es entorno de desarrollo propio de Julia similar a Jupyter. Pluto permite crear notebooks reactivos cuyas celdas se actualizan cada vez que se produce un cambio en el estado del programa.
Para usarlo basta instalar el paquete Pluto.jl
.
> using Pkg
julia
> Pkg.add("Pluto");
julia
> using Pluto
julia
> Pluto.run()
julia: Loading...
[ Info:
┌ Info://localhost:1234/?secret=a63iBsIL in your default browser... ~ have fun!
└ Opening http:
┌ Info+C in this terminal to stop Pluto
│ Press Ctrl
└ in existing browser session. Opening
REPL es el acrónimo de Read, Evaluate, Print and Loop.↩︎