Ir al contenido principal

Julia

Resultado de imagen para Julia (lenguaje de programación)

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

Entradas más populares de este blog

Que es un lenguaje de programación

HomeTecnologiasQue es un lenguaje de programación Que es un lenguaje de programación Contenido [mostrar] Para la inmensa mayoría de los usuarios, el uso de una computadora es lo más sencillo y transparente que existe, y no debe preocuparse por aspectos técnicos relacionados con cómo los programas que utiliza a diario son desarrollados y diseñados. Esto es así desde hace años, y es totalmente aceptable que sea de esta manera, ya que lo que subyace debajo de las ventanas y cuadros de diálogo de una aplicación no debe interferir nunca con la productividad de quien use el software, sino que es responsabilidad de los ingenieros y desarrolladores. Sin embargo nunca está demás aprender algo nuevo, ya que de esta manera podremos entender mejor cómo funciona una computadora y cómo se interrelaciona con nosotros a través del software, con la consiguiente ganancia en productividad, y por qué no, conseguir ese algo más que nos diferencie de los demás. Es por ello que en este art