Julia, una introducción rapida
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.
- 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.