Julia, una introducción rapida

Josué Acevedo Maldonado
4 min readMay 22, 2023

--

Foto de Mohammad Rahmani en Unsplash

Julia es un lenguaje versátil, de código abierto, dinámico y de alto rendimiento que combina la velocidad de C o Fortran con la facilidad de uso de Matlab o Python.

Julia ofrece numerosas características, que incluyen:

  • Compilación JIT: Escribe código que parece interpretado pero se ejecuta tan eficientemente como código compilado, eliminando la necesidad de vectorizar para obtener mejor rendimiento.
Comparativa de Julia con otros lenguajes
  • Tipado opcional: Prototipa rápidamente con máxima flexibilidad y luego optimiza para obtener mejor rendimiento.
1::Int # Entero de 64 bits en Julia
1.0::Float64 # Flotante de 64 bits (NaN, -Inf, Inf)
true::Bool # Booleano ("true", "false")
'λ'::Char # Carácter, permite Unicode
"LᴬTₑX"::String # Cadenas de texto, permite Unicode
  • Sintaxis matemática: Amplía y supera a lenguajes matemáticos tradicionales como Fortran, Matlab y Mathematica.
#using Pkg
#Pkg.add("SymPy");
using SymPy;

x,y,z = symbols("x,y,z", real=true)

g = 3*y+z
f = 2*x^2
ff = f(g)

g = 3y + z

f = 2x²

ff = 2(3y + z)²

  • Propósito general: Accede a una amplia gama de funcionalidades desde el gestor de paquetes, lo que permite realizar tareas como leer diversas bases de datos, visualizar datos y ejecutar servidores HTTP.
  • Evita la necesidad de reescribir código dos veces, para el prototipo y la versión en producción.
  • Permite la programación en paralelo y distribuida.
  • Es capaz de ejecutar código escrito en otros lenguajes como C, Fortran, Python, R, Matlab, entre otros.

Uso

Julia incluye una terminal interactiva, llamada REPL en donde se puede visualizar automáticamente los resultados de la ejecución del programa o segmento de código.

Neomatrix@DESKTOP-5FE1RU6 C:\Users\Neomatrix$ julia
_
_ _ _(_)_ | Documentation: https://docs.julialang.org
(_) | (_) (_) |
_ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 1.9.0 (2023-05-07)
_/ |\__'_|_|_|\__'_| | Official https://julialang.org/ release
|__/ |

julia>

La consola interactiva presenta varios modos de uso, por ejemplo al teclear ; la consola de julia pasa a ser una shell de comandos de linux:

shell> echo hola                                                                                                                                      
hola

Se puede ejecutar código de Julia en una sesión interactiva o guardado en un archivo con la extensión .jl y ejecutarlo desde la línea de comandos con la siguiente instrucción:

$ julia <nombre_del_archivo>.jl

Arrays

Los arrays son mutables y se pasan por referencia.

[1, 2] # vector (concatenation)
[1 2 3; 1 2 3] # 2x3 matrix (hvcat function)
[[1 2] 3] # concatenate along rows (hcat)
[[1; 2]; 3] # concatenate along columns (vcat)

[1 2]::Array{Int64, 2} # 2 dimensional array of Int64
[true; false]::Vector{Bool} # vector of Bool
[1 2; 3 4]::Matrix{Int64} # matrix of Int64

[x * y for x in 1:2, y in 1:3] # a comprehension generating 2x3 array
Float64[x^2 for x in 1:4] # casting comprehension result element type to Float64

Diccionarios

Diccionarios clave-valor.

x = Dict{Float64, Int64}() # an empty dictionary mapping floats to integers 
y = Dict("a"=>1, "b"=>2) # a filled dictionary
y["a"] # element retrieval
y["c"] # error
y["c"] = 3 # added element
haskey(y, "b") # check if y contains key "b"
keys(y), values(y) # tuple of collections returning keys and values in y
delete!(y, "b") # delete a key from a collection, see also: pop!
get(y, "c", "default") # return y["c"] or "default" if not haskey(y,"c")

If … else

x = 42
if x<1
print("$x < 1") # $x string interpolation.
elseif x < 3
print("$x < 3")
elseif x < 100
print("$x < 100")
else
print("$x is really big!")
end


if 1 < 3 & 3 < 4
print("eureka!")
end

Ciclos

La forma más básica de estructurar los cálculos es usando un bucle for.

x=0
for k in 1:100000
x = x + k^2
end

persons = ["Alice", "Bob", "Carla", "Daniel"]

for person in persons
println("Hello $person, welcome to techytok!")
end

for i in 1:3, j in 1:3
print("i=", i, " j=", j, "\n")
end


i=0
while(i<30)
println(i)
i += 1
end

Funciones

Las funciones son los principales bloques de construcción en Julia. Toda operación sobre variables y otros elementos se realiza mediante funciones.

function plus_two(x)
#perform some operations
return x + 2
end

plus_two(x) = x+2 #One-line functions

plus_two = x -> x+2

Josue Acevedo Maldonado is a software engineer, currently working as a consultant.

Connect in LinkedIn.

Thank you for being part of the community!
You can find related content on linktr.ee, besides the book Ensamblador X86.

Finally, if you have enjoyed this article and feel that you have learned something valuable, please share so others can learn from it as well.

Thanks for reading!

--

--

Josué Acevedo Maldonado

Amante de la tecnologia y con pasion en resolver problemas interesantes, consultor, y creador del canal de youtube NEOMATRIX. https://linktr.ee/neomatrix