Según la Wikipedia, Julia es un lenguaje de programación dinámico, de alto nivel y alto rendimiento para cálculos científicos y técnicos con una sintaxis similar a la de otros entornos de computación similares. Dispone de un compilador avanzado, mecanismos para la ejecución en paralelo y una extensa biblioteca de funciones matemáticas. La biblioteca, desarrollada fundamentalmente en Julia, también contiene código desarrollado en C o Fortran.

El lenguaje fue creado por Stefan Karpinski, estudiante graduado de la Universidad de California, que estaba involucrado en una herramienta simulación de redes que requería el uso de varios lenguajes de programación diferentes. Curiosamente, ninguno de los lenguajes usados podía hacer toda la tarea, todo el proceso. Por ello, Karpinski, junto con su compañero de universidad Viral Shah y  Jeff Bezanson del MIT, decidieron resolverlo diseñando un nuevo lenguaje que fuera compatible con prácticamente cualquier tarea.  La meta de Karpinski y su equipo es construir un lenguaje único que haga todo bien.

En este lenguaje, bautizado como Julia, las bibliotecas están escritas en Julia y se integra lo mejor del código de C y Fortran en los siguientes rubros: álgebra lineal, generación de números al azar, procesamiento de señales y procesamiento de strings (cadenas de caracteres). Además, la comunidad de desarrolladores de Julia ha contribuido con una serie de paquetes externos en muy poco tiempo. IJulia es una colaboración de IPython y las comunidades de Julia, lo cual le da un navegador con una interfaz gráfica basada en Julia,

Los programas de Julias se organizan definiendo funciones y sobrecargando las mismas para diferentes combinaciones de tipos de argumentos, los cuales pueden ser definidos por el usuario.

Un resumen de las características de Julias son:

  • Posibilidad de definir el comportamiento de una función con una combinación de tipos de argumentos
  • Sistema dinámico de tipos: tipos para documentar, optimizar y ejecutar rutinas
  • Buen desempeño, el cual se aproxima (estadísticamente) a lenguajes como C
  • Manejador de paquetes interconstruido
  • Macros como en LISP y otras metafacilidades de programación
  • Se pueden llamar funciones de Python vía llamadas a PyCall
  • Llamada a funciones de C directamente. No se necesita nada más
  • Capacidades poderosas de Shell para manejar otros procesos
  • Diseñado para computación distribuida y en paralelo
  • Corrutinas
  • Tipos definidos por el usuario que son rápidos y compactos como si fuesen interconstruidos
  • Generación automática de código especializado, eficiente, de acuerdo al tipo de argumentos que de pasan
  • Conversiones elegante y extensibles así como promoción de tipos numéricos y otros tipos
  • Soporte para Unicode
  • Licencia MIT : libre y de código abierto

La cuestión es si esta idea tendrá éxito. Los programadores tienden a irse a lenguajes más que probados, amén de tener un soporte generalizado. Desde luego que en esta selva de lenguajes de programación, hay para todos, pero falta ver si Julia puede madurar y convencer a los programadores de sus bondades.

Referencias:

Lenguaje Julia