Julia (lenguaje de programación)

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 8 de junio de 2022; la verificación requiere 1 edición .
julia
clase de idioma lenguaje de programación
Apareció en 23 de agosto de 2009 [1] [2]
Autor Jeff Besancon [d] , Alan Edelman [d] , Stefan Karpinski [d] y Viral Shah [d]
Desarrollador Jeff Besanson [d] , Stefan Karpinski [d] , Alan Edelman [d] y Viral Shah [d]
extensión de archivo .jl[3]
Liberar 1.8.2 (29.09.2022)
sido influenciado MATLAB
Sitio web julialang.org
sistema operativo Linux , Microsoft Windows [4] y macOS [4]
 Archivos multimedia en Wikimedia Commons

Julia  es un lenguaje de programación libre tipado dinámicamente de alto nivel y alto rendimiento diseñado para la computación matemática. También es efectivo para escribir programas de propósito general. [5] [6] [7] La ​​sintaxis del lenguaje es similar a la de otros lenguajes matemáticos (como MATLAB y Octave ), pero tiene algunas diferencias significativas. Julia está escrita en C , C++ y Scheme . Tiene soporte incorporado para subprocesos múltiples y computación distribuida, que también se implementan en diseños estándar.

El lenguaje es dinámico, aunque admite la compilación JIT (se incluye como estándar un compilador JIT basado en LLVM ), por lo que, según los autores del lenguaje, las aplicaciones escritas íntegramente en el lenguaje (sin el uso de bibliotecas de bajo nivel y operaciones vectoriales) prácticamente no son inferiores en rendimiento para aplicaciones escritas en lenguajes compilados estáticamente como C o C++ [7] . La mayor parte de la biblioteca estándar del lenguaje está escrita en él [8] .

Se admite la sobrecarga de funciones y operadores (que en realidad también son funciones), y opcionalmente puede especificar un tipo para los argumentos de la función, lo que generalmente no es el caso en los lenguajes de escritura dinámica. Esto le permite crear variantes especializadas de funciones y operadores para acelerar los cálculos. La variante más adecuada de la función se selecciona automáticamente durante la ejecución. La sobrecarga de operadores también le permite crear nuevos tipos de datos que se comportan como tipos integrados.

Historia

Las discusiones sobre la necesidad de crear un nuevo lenguaje comenzaron en agosto de 2009. Stefan Karpinski, que para ese entonces ya había trabajado con el paquete matemático Matlab y el lenguaje de programación R , no estaba satisfecho con sus limitaciones. Y después de que Viral Shah le presentó a Jeff Besançon, los tres comenzaron a discutir el concepto de un nuevo idioma. Para la elección de un nombre femenino como nombre del idioma, como explicó el desarrollador principal del idioma Stefan Karpinski en una entrevista, "no hubo ninguna razón especial", a los desarrolladores simplemente "les gustó este nombre" [7] . La primera versión abierta se publicó en febrero de 2012. [9] [10]

Ideología

La tarea principal durante la creación fue desarrollar un lenguaje universal que pueda trabajar con una gran cantidad de cálculos y al mismo tiempo garantizar el máximo rendimiento. Dado que una gran cantidad de cómputo se realiza en entornos de nube, el lenguaje inmediatamente implementó soporte para nubes y programación paralela como reemplazo del mecanismo MPI [7] .

Inicialmente, el lenguaje implementó un modelo para construir grandes aplicaciones paralelas basadas en un espacio de direcciones distribuido globalmente. Dicho modelo implica la capacidad de realizar operaciones (incluida su transferencia entre máquinas) con referencia a un objeto ubicado en otra máquina que también participa en los cálculos. Este mecanismo le permite realizar un seguimiento de qué cálculos se realizan en qué sistemas, así como conectar nuevas máquinas a los cálculos [7] .

Según el sitio web oficial, las principales características del lenguaje son:

Ejemplos

Ejemplo de función:

funcion mandel ( z ) c = z máximo = 80 para n = 1 : maxiter si abs ( z ) > 2 volver n - 1 final z = z ^ 2 + c final maxiter de retorno final función randmatstat ( t ) norte = 5 v = ceros ( t ) w = ceros ( t ) para i = 1 : t a = randn ( norte , norte ) b = randn ( norte , norte ) c = randn ( norte , norte ) d = randn ( norte , norte ) PAG = [ un segundo c re ] Q = [ un segundo ; c re] v [ i ] = rastro (( P . '* P ) ^ 4 ) w [ i ] = rastro (( Q . '* Q ) ^ 4 ) final estándar ( v ) / media ( v ), estándar ( w ) / media ( w ) final

Un ejemplo de cómputo paralelo 100.000.000 resultados de un lanzamiento de moneda al azar:

nheads = @ paralelo ( + ) para i = 1 : 100000000 azar () final

Implementación gráfica

En diciembre de 2011, Stefan Boyer propuso la idea de una implementación gráfica del lenguaje, que facilitaría el trabajo con él a matemáticos y otros científicos que no tienen conocimientos de programación y trabajan en entornos Unix . La idea de Boyer era pasar de enviar comandos a un clúster informático a simplemente trabajar con un navegador. Al mismo tiempo, la parte del cliente, que implementa, entre otras cosas, una interfaz gráfica y una plataforma para trazar gráficos, puede implementarse utilizando tecnologías tan modernas (en ese momento) como HTML5 , SVG y AJAX [11] .

Para implementar su idea, Boyer usó una parte del servidor escrita en lenguaje Julia, que, usando un administrador de sesión especial del protocolo SCGI , interactúa con un servidor web basado en lighttpd . Tal enfoque hizo posible implementar el concepto REPL de una manera bastante simple , que tiene las siguientes capacidades: trazado basado en el cálculo de funciones, matrices unidimensionales y conjuntos de puntos de cualquier tipo numérico; conveniencia de trabajar con el entorno (detección automática del tamaño de las ventanas, etc.); extensibilidad y multiplataforma entre navegadores. Las funciones para trazar en dicho entorno se pueden especificar de varias maneras:

trama ( pecado , - pi , pi )

o

trama ([ 0.0 , 0.1 , 0.4 , 0.3 , 0.4 ])

[11] .

Julia Studio es el primer entorno de desarrollo integrado de escritorio para Julia [12] , posteriormente reemplazado por el entorno Juno [13] , que es un complemento para el editor de texto Atom .

Notas

  1. Archivo LICENSE.md en el repositorio JuliaLang/julia - GitHub Inc. .
  2. Besancon D. JuliaLang/julia - commit eb256df: "empezando a trabajar en el analizador" - GitHub Inc. .
  3. http://fileformats.archiveteam.org/wiki/Julia
  4. 1 2 https://julialang.org/downloads/
  5. The Julia Language (enlace no disponible) . Archivado desde el original el 24 de mayo de 2013. 
  6. Bryant, Avi Matlab, R y Julia: Idiomas para el análisis de datos (enlace no disponible) . Estratos de O'Reilly (octubre de 2012). Fecha de acceso: 7 de febrero de 2013. Archivado desde el original el 24 de mayo de 2013. 
  7. 1 2 3 4 5 Pablo Creel. A los científicos se les ofrece una alternativa a C: el lenguaje Julia (enlace inaccesible) . " Sistemas Abiertos " (27 de abril de 2012). Consultado el 27 de abril de 2012. Archivado desde el original el 13 de septiembre de 2012.   ( Krill original, Paul New Julia language busca ser la C para los científicos (enlace no disponible) . InfoWorld. Consultado el 7 de febrero de 2013. Archivado desde el original el 24 de mayo de 2013.  )
  8. Julia: A Fast Dynamic Language for Technical Computing ( PDF )  (enlace no disponible) (2012). Archivado desde el original el 24 de mayo de 2013.
  9. Por qué creamos a Julia (enlace descendente) (febrero de 2012). Fecha de acceso: 7 de febrero de 2013. Archivado desde el original el 24 de mayo de 2013. 
  10. Mark, Gibbs Gear head (enlace no disponible) . Red Mundial (2013-1-9). Fecha de acceso: 7 de febrero de 2013. Archivado desde el original el 24 de mayo de 2013. 
  11. 1 2 Stephan Boyer. Una interfaz gráfica para el lenguaje de programación Julia  (inglés)  (enlace no disponible) . Instituto Tecnológico de Massachusetts (diciembre de 2011). Consultado el 23 de julio de 2012. Archivado desde el original el 13 de septiembre de 2012.
  12. The Julia Studio (enlace descendente) . Archivado desde el original el 24 de mayo de 2013. 
  13. Juno, el entorno de desarrollo interactivo . Consultado el 5 de julio de 2015. Archivado desde el original el 10 de octubre de 2016.

Literatura

  • Bruce Tate, Fred Daoud, Jack Moffitt, Ian Dees. Julia // Siete idiomas más en siete semanas. Idiomas que están dando forma al futuro. - La estantería pragmática, 2015. - Pág. 171-207. — 320 s. — ISBN 978-1941222157 .

Enlaces