Julia es un
lenguaje de programación homoicónico, multiplataforma y multiparadigma de
tipado dinámico de alto nivel y alto desempeño para la computación genérica,
técnica y científica, con una sintaxis similar a la de otros entornos de
computación similares. El nombre del lenguaje Julia fue una ocurrencia de los
creadores.
Dispone de un
compilador avanzado (JIT), mecanismos para la ejecución en paralelo y
distribuida, además de una extensa biblioteca de funciones matemáticas. La
biblioteca, desarrollada fundamentalmente en Julia, también contiene código
desarrollado en C o Fortran,6 para el álgebra lineal, generación de números
aleatorios, procesamiento de señales, y procesamiento de cadenas.
Adicionalmente, la comunidad de desarrolladores de Julia contribuye con la
creación y distribución de paquetes externos a través del gestor de paquetes
integrado de Julia a un paso acelerado. IJulia es el resultado de la
colaboración entre las comunidades de IPython y Julia, provee de una poderosa
interfaz gráfica basada en el navegador para Julia.
Resumen de
características
El despacho
múltiple: nos permite definir el comportamiento de las funciones a través de
diversas combinaciones de tipos de argumentos.
Sistema de
tipado dinámico: tipos para la documentación, la optimización y el despacho de
funciones.
Buen
desempeño, acercándose al de lenguajes estáticamente compilados como C.
Gestor de
paquetes integrado.
Macros tipo
Lisp y otras herramientas para la meta-programación.
Llamar
funciones de Python: mediante el paquete PyCall.
Llamar
funciones de C directamente: sin necesidad de usar envoltorios u APIs
especiales.
Poderosas
características de línea de comandos para gestionar otros procesos.
Diseñado para
la computación paralela y distribuida.
Corutinas:
hilos ligeros “verdes”.
Los tipos
definidos por el usuario son tan rápidos y compactos como los tipos estándar
integrados.
Generación
automática de código eficiente y especializado para diferentes tipos de
argumentos.
Conversiones
y promociones para tipos numéricos y de otros tipos, elegantes y extensibles.
Soporte
eficiente para Unicode, incluyendo UTF-8 pero sin limitarse solo a este.
Licencia MIT:
libre y de código abierto.
Diseñado para
el paralelismo y la computación en la nube
Julia no le
impone al usuario ningún estilo de paralelismo en particular. En vez de esto,
le provee con bloques de construcción clave para la computación distribuida,
logrando hacer lo suficientemente flexible el soporte de varios estilos de
paralelismo y permitiendo que los usuarios añadan más. El siguiente ejemplo
demuestra de manera simple como contar el número de caras de una gran cantidad
de volados en paralelo.
julia> using Distributed
julia> nheads = @distributed (+) for i = 1:200000000
Int(rand(Bool))
end
99998199
Esta
computación es distribuida automáticamente a través de todos los nodos de
computo disponibles y el resultado, el cual es reducido por la sumatoria, (+),
es regresado al nodo que inicio la computación.
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.
Ejemplos:
julia>
println("hola mundo")
hola mundo
julia> x =
1
julia> y =
2
julia> if
x<y
println("es menor")
else
println("es mayor")
end
es menor
julia> (x
< y) ? "x es menor a y" :
(x > y) ? "x es mayor a y" : "x es igual y"
"x es
menor a y"
julia>
comparacion(x, y) = println((x < y) ? "x=$x es menor que y=$y" :
(x > y) ? "x es mayor que y" : "x es igual a y")
comparacion (generic function with 1 method)
julia>
comparacion(4, 5)
x=4 es menor
que y=5
julia>
"LᴬTₑX"
"LᴬTₑX"
Comentarios
Publicar un comentario