Julia (lenguaje de programación)

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda
Julia
Julia prog language.svg
Desarrollador(es)
Stefan Karpinski, Viral B. Shah, Andreas Noack, Jake Bolewski, Jeff Bezanson, Alan Edelman
http://julialang.org/
Información general
Última versión estable 0.4.6
Género ----
Sistema operativo Multiplataforma
Licencia MIT
[editar datos en Wikidata]

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 puesto en honor a Gaston Julia, un matemático francés que descubrió los fractales.

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,[1] 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[editar]

  • 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.

Compilador JIT de alto desempeño[editar]

Tanto el compilador justo a tiempo (JIT) basado en LLVM así como el diseño del lenguaje le permiten a Julia acercarse e incluso igualar a menudo el desempeño de C. Para hacerse una idea del desempeño relativo de Julia comparado con otros lenguajes que pueden o podrían ser usados para la computación científica y numérica, hemos escrito una serie de micro pruebas comparativas en una variedad de lenguajes: C, Fortran, Julia,Python, Matlab/Octave, R, JavaScript, Go, y Mathematica. Le animamos a darle un vistazo al código para que se haga una idea de la facilidad o dificultad que conlleva el uso de la programación numérica en cada lenguaje.

Diseñado para el paralelismo y la computación en la nube[editar]

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> nheads = @parallel (+) for i=1:100000000
         int(randbool())
       end

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[editar]

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")
julia> comparacion(4, 5) 
x=4 es menor que y=5
julia> "LᴬTₑX"
"LᴬTₑX"

Para mas ejemplos,puede visitar la documentación de julia,[25] o varios otros recursos que pueden ayudar a los nuevos usuarios a empezar con 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

y al teclear ?  la consola de julia pasara a modo de ayuda en la cual imprimirá la documentación para el comando introducido:

julia> ?
help> string                                                                                                                                      Base.string(xs...)                                                                                                                                    
Create a string from any values using the "print" function.

Usted 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 linea de comandos con la siguiente instrucción:

$ julia <nombre_del_archivo>.jl

Julia presenta soporte por parte de Jupyter, un entorno on-line interactivo, a igual que juliabox.

Libre, de código abierto y amigable con las librerías[editar]

El núcleo de la implementación esta licenciado bajo la licencia MIT. Varias librerías usadas por el entorno de Julia incluyen sus propias licencias tales como la GPLLGPL y BSD (de tal manera que el entorno, el cual consiste en el lenguaje, las interfaces de usuario y las librerías, está bajo la GPL). El lenguaje puede ser compilado como una librería compartida, para que los usuarios puedan combinar Julia con su propio código en C/Fortran o con librerías propietarias de terceros. Además, Julia le permite llamar funciones foráneas de librerías compartidas en C y Fortran de manera sencilla, sin tener que escribir código envoltorio e incluso sin tener que volver a compilar el código existente. Puede intentar llamar las funciones de una librería foránea directamente desde el interprete interactivo de Julia, obteniendo retroalimentación inmediata. Véase la LICENCIA para mas información sobre los términos completos del licenciamiento de Julia.

Referencias en la cultura pop[editar]

El lenguaje de programación julia es referido en la serie The 100 en una libreta donde se muestra el código de la inteligencia artificial A.L.I.E.

Referencias[editar]

Enlaces externos[editar]