Si bien existían C, C++, Python y Ruby, en febrero de 2012 surgió un nuevo lenguaje llamado Julia que luego se convirtió en uno de los lenguajes más útiles en la comunidad científica.
Julia es un lenguaje de propósito general y es conocido por sus aplicaciones en análisis numérico, visualización de datos y aprendizaje automático. El lenguaje combina la velocidad de C, el dinamismo de Ruby, la practicidad de Python y las capacidades estadísticas de R, al mismo tiempo que sobresale en álgebra lineal como MATLAB.
El lenguaje fue creado por Viral B. Shah, quien, frustrado, emprendió la difícil tarea de crear un lenguaje completamente nuevo. La historia se remonta a cuando Shah estaba haciendo su doctorado en Ciencias de la Computación, donde estaba trabajando en la construcción de un lenguaje similar a MATLAB y era una pérdida de tiempo escribir código en MATLAB y luego reescribirlo en C. rewrite. Esto fue muy triste para él.
Junto con Alan Edelman, Jeff Bezanson y Stefan Karpinski, Shah imaginó un lenguaje que tendría la complejidad de C y la simplicidad de Python. Comenzaron a trabajar en un lenguaje de programación en 2009 que tiene como objetivo resolver las limitaciones que enfrentaban en la informática técnica con los lenguajes de programación existentes.
Viral B. Shah, director ejecutivo de Julia, dijo en un evento organizado por AIM el sábado: «Hasta que desarrollamos Julia, era una regla que un lenguaje de programación podía ser rápido o fácil». «C y C++ son lenguajes más rápidos que tienen una curva de aprendizaje difícil, mientras que Python y Ruby son más fáciles de trabajar y se sabe que son más lentos y fáciles de usar».
Casi diez años después, Julia es un lenguaje popular debido a su velocidad y funciones fáciles de usar. Este año, casi cinco millones de usuarios se han registrado para utilizar el lenguaje de programación.
Su característica destacada es su velocidad excepcional, gracias a su compilador en tiempo real que convierte el código fuente en código máquina antes de su ejecución. A diferencia de muchos lenguajes de alto nivel, Julia ofrece un sistema de tipos paramétricos flexible. Esto habilita la escritura estática de forma predeterminada y permite que el tipo tome parámetros.
Esta flexibilidad conduce al patrón de distribución múltiple, donde una función puede tener múltiples métodos o implementaciones basadas en parámetros de entrada, y el lenguaje especifica qué método distribuir en tiempo de ejecución. Este no es el caso en Python, que utiliza conversión única, lo que significa que el método a ejecutar está determinado únicamente por el tipo del primer argumento.
A lo largo de los años, Julia ha visto varias versiones importantes, cada una de las cuales presenta nuevas funciones y mejoras. Julia 0.2, lanzada en agosto de 2013, trajo un rendimiento mejorado y capacidades de computación paralela. Las versiones posteriores continuaron ampliando las capacidades de Julia, enfocándose en la estabilidad del lenguaje, la eficiencia y la integración con bibliotecas externas. El lanzamiento de Julia 1.0 en agosto de 2018 marcó una fase estable y madura para el lenguaje, con el objetivo de lograr estabilidad y compatibilidad a largo plazo.
Julia para la empresa
La mayoría de los éxitos del entorno de programación en los últimos 20 años (JAVA, Swift y .NET) han contado con el apoyo de grandes empresas para construir el ecosistema a su alrededor. Julia es uno de los pocos lenguajes que se desarrolló sin el apoyo de tecnologías importantes. «Empezamos con un equipo central muy pequeño y Julia no contaba con el apoyo de las grandes tecnológicas».
Julia, un lenguaje de código abierto que depende en gran medida de las contribuciones de la comunidad, se ha expandido hacia las empresas. Shah explicó la decisión de comercializar Julia diciendo: «El código abierto es fantástico y es una comunidad, pero con el tiempo hemos aprendido en esta industria que a las empresas de ciencia e ingeniería, a diferencia de las empresas de tecnología, no les importa regalar software».
Si bien Julia es principalmente un proyecto de código abierto, Julia Computing proporciona soporte y desarrollo comercial. Este enfoque dual permite a la empresa participar en el ecosistema de código abierto y al mismo tiempo ofrecer herramientas y soluciones patentadas para necesidades empresariales más complejas.
Julia ha desarrollado varios productos diseñados para uso empresarial. Estos incluyen Pumas para modelado farmacéutico, JuliaSim para aplicaciones de modelado y simulación y un simulador SPICE especializado para simulación de diseño. AstraZeneca, Moderna, Pfizer, Procter & Gamble y United Therapeutics se han asociado con Julia. AstraZeneca junto con Prioris.ai desarrollaron una red neuronal bayesiana (BNN) utilizando Julia.
Esta red fue diseñada para predecir la lesión hepática inducida por fármacos, lo cual es importante en la fase preclínica del desarrollo de fármacos. El uso de BNN, a diferencia de las redes neuronales profundas tradicionales, tiene la ventaja no solo de predecir la toxicidad sino también de cuantificar la incertidumbre en estas predicciones, mejorando así la confiabilidad y seguridad de los procesos de desarrollo de fármacos.
En cuanto a las preocupaciones sobre la seguridad y la protección, Viral dijo: «Como empresa, nos centramos en casos de uso científico. Entonces, si está buscando un nuevo motor, un nuevo avión, una etapa de detección de drogas o un edificio de sistema de control, Estamos creando capacidades críticas para la seguridad en Julia para escribir código que se ejecutará en dispositivos físicos».
JuliaSim, lanzada en 2021, es una herramienta de simulación multifísica. Es parte del ecosistema Julia que se especializa en sistemas físicos, integrando diferentes campos de la física en un entorno de simulación unificado y coherente.
«Por ejemplo, si quisiera construir un modelo de caja de cambios o un modelo de sistema de frenos, o un modelo de batería, te permite crear estos modelos en código y luego vincularlos en una interfaz gráfica de usuario (GUI) y luego simula y seguirá adelante y analizará todo el sistema», explicó Shah.
La principal fortaleza de Julia, que también promovió su adopción en la industria, es su capacidad para integrarse con bibliotecas de software existentes en C, Fortran y Java. Esta característica es importante para empresas con importantes inversiones en código heredado. Julia está diseñada no sólo para facilitar la escritura de código nuevo y de alto rendimiento, sino también para hacer un uso eficiente de los activos de software existentes.