Julia

Uso básico

Author

David Gómez-Castro

Instalación

Windows/Mac

https://julialang.org/downloads/

Linux

En Ubuntu

$ sudo apt-get install julia

Redhat/Fedora

$ sudo dnf install julia

Arch/Manjaro

$ sudo pacman -S julia

Primera ejecución

Al lanzar julia por primera vez veremos algo así:

Uso básico

Variables

a = 2
2

Bucles básicos

for i=1:2
  display(i^2)
end
1
4

Vectores

x = [1, 2]
2-element Vector{Int64}:
 1
 2

Paquetes

La mayor parte de las funcionalidades de Julia se añaden en paquetes.

Por ejemplo, para representar funciones debemos el paquete Plots

Para usar un paquete, debemos instalarlo primero

using Pkg 
Pkg.add("Plots")

Plots

using Plots 

x = [1,2,3,4,5]
y = [1,4,9,16,25]

plot(x,y)

Leer scripts

Los scripts de Julia son archivos .jl

a = 1
a = a+1
display("a=$a")

Ejecutamos en terminal de Unix (si julia está bien en el path)

$ julia MiCodigo.jl
"a=2"

O desde dentro de julia

julia> include("MiCodigo.jl")
"a=2"

IDEs

Visual Studio Code

Para desarrollar código podemos usar Visual Studio Code con Julia.

Jupyter

También podemos utilizar libretas Jupyter

Es una interfaz web para facilitar el uso de Julia, creada originalmente para Python.

Instalar Jupyter

  1. Instalar Python3
  1. Usar pip (el instalador que viene con python) para instalar Jupyter. En terminal:
$ pip install notebook
  1. Debemos conectar Julia y Jupyter con el paquete IJulia. En Julia:
using Pkg
Pkg.add("IJulia")
  1. Lanzar Jupyter. En Windows click. En Linux/macos
$ jupyter notebook

Ocasionalmente Jupyter puede no detectar Julia (especialmente después de actualizaciones). Ejecutar en Julia

using IJulia
installkernel("Julia")

¿Por qué julia?

¿Por qué Julia?

Artículo why we created Julia

  • Es código abierto:

    todo está alojado en GitHub

  • Es reproducible:

    permite controlar todas las versiones de todos los paquetes

  • Es dinámica:

    utiliza tipos dinámicos, y la sintaxis es muy sencilla.

  • Es componible:

    multiple distach

Julia es rápido (JIT)

Eje vertical (tiempo del lenguaje) / (tiempo de ejecución en C)

https://julialang.org/benchmarks/

Comparación con MATLAB

La sintaxis para vectores y matrices veremos que es muy sencilla.

A = [1 2 3; 4 5 6]
2×3 Matrix{Int64}:
 1  2  3
 4  5  6
@show A[1,:];
A[1, :] = [1, 2, 3]
Comparación de sintaxis vectorial
Función Julia MATLAB
Leer vector x[i] x(i)
Leer fila de matriz A[i,:] A(i,:)
Resolver sistema lineal A\b A\b

Paquetes

¿Qué son?

Las funcionalidades avanzadas se cargan con paquetes (Plots, …)

Los paquetes están alojados en GitHub, donde suelen contar con amplia documentación: ejemplo Plots.jl

Para instalarlos basta utilizamos el paquete Pkg.jl de la siguiente forma

using Pkg; Pkg.add("Plots")

Para cargar el paquete Plots

using Plots

Sintaxis natural, el paquete Plots

plot(x->exp(x))

x = 1:5
y = exp.(x)

using Plots
plot(x,y) 

La magia de los macros

@gif for n=1:20
  plot(x->sin(n*x))
end
[ Info: Saved animation to /Users/david/Library/Mobile Documents/com~apple~CloudDocs/Universidad/Docencia/Julia Compumates/Github/01-PrimerContacto/tmp.gif