Hablemos de JULIA

Violeta and speakers discuss Julia, a programming language created in 2009 by Stefan Karpinski, Viral Shah, Jeff Bezanson and Alan Edelman. It was built to solve the problem of data scientists switching between Python, C, MATLAB and R. Julia has over 10,000 packages and is used by BlackRock, AWS, and the Celeste astronomy project.
Chapters
El mundo se ha vuelto loco. ¡Cuánto caos y destrucción!
¿Qué pasa? ¿Qué veis?
La estadística de cuál es el tema del que hablamos hoy.
¿Hay gente que solo quiere ver el mundo arder?
Sí, ya, Alfred.
¿Esto es porque hoy hablamos de Julia?
¡Julia! Y lo dices como si nada. No pienso hablar de Julia.
Pero es el tema que toca y lo han elegido los espectadores.
El Team Violeta no te ha podido salvar.
Pues no pienso hablar de Julia. ¡Me voy! Antes de continuar, un inciso.
¿Te gustaría apoyar a nuestro canal?
No te olvides de darle a me gusta y si no lo estás, suscribirte para no perderte futuro contenido. ¡Ey! En X hemos llegado a 100 seguidores. Es hora de que me haga con el control de esa red.
Sí, Pues yo me quedo con Instagram. Es una red más sana, visual y amigable. Verás cómo conseguimos superar a Twitter en muy poco tiempo.
Habrá que verlo.
Y además también podemos acompañarte desde tu plataforma de podcast favorita.
Ahora sí, continúa.
Comenzamos.
Bueno, no podemos convencer a Violeta de que vuelva.
No pasa nada, ya volverá.
Vale, bueno, Julia fue creado en agosto de 2009 por dos científicos de datos, Stefan Karpinski, Viral Shah, y más tarde se unirían Jeff Bezosson y Alan Edelman.
Viral, nombre curioso. ¿Todos eran científicos de datos?
Eso parece. Todos hacían un uso extenso de análisis numérico con distintos lenguajes de programación.
Por cierto, ¿2009? Yo pensaba que Julia fue lanzado en 2012.
Sí, el lenguaje fue lanzado en 2012, pero su creación comenzó en 2009.
Oh, y necesitaban un lenguaje único. Un lenguaje para gobernarlos a todos. Para encontrarlos, atraerlos y atarlos en las... ¡tinieblas!
¡Nunca mejor dicho!
¿Has vuelto?
Sí, me he decidido a presentar la parte oscura del lenguaje para que todos lo vean y no se hagan ilusiones de que Julia puede ser un buen lenguaje de programación.
Vale, supongo.
Así que, ¿por qué se creó Julia?
Como decía, sus creadores estaban cansados de emplear diferentes lenguajes. Muchos de ellos empleaban Python como lenguaje sencillo y C para implementar partes que requiriesen mayor rendimiento.
Tiene sentido, Python es muy versátil.
¿Solo por eso? Un lenguaje que facilitara la sintaxis de C hubiese bastado. Algo como Go les habría sido más útil.
No solo por eso. Muchos de ellos empleaban además MATLAB para álgebra lineal y R para estadísticas, y decían que era muy difícil salir de esos lenguajes para esos casos de uso.
¿Algo como hacer estadísticas en MATLAB o álgebra lineal en R no era factible?
Según ellos, era muy frustrante.
Entonces la idea era combinar la facilidad de Python con el rendimiento de C y la facilidad para el álgebra lineal de MATLAB y las estadísticas de R. Comienza a ser una tarea muy compleja.
Lo fue. La misión de Julia era proporcionar un entorno para el programador extremadamente productivo.
¿Y cómo se logra eso?
En principio dando un lenguaje dinámico.
¿Dinámico? ¡Inaceptable! Una cosa es que propongan tipos de datos inferidos como Go u otros lenguajes de programación y otra muy diferente que sean un libertino como Python.
Oye, un respeto, que con Python se crean cosas muy interesantes, pero no son tan mantenibles como en otros lenguajes. Te sorprenderías, chicos.
El lenguaje dinámico no implica que no tenga tipos, de hecho Python los tiene, solo implica una mayor flexibilidad para facilitar la programación.
Discutible.
Bueno, que nos desviamos. Otra de las misiones de Julia era tener tan buen rendimiento que nunca se tuviese que bajar a implementar nada en C, como por ejemplo con Python, que se necesita C para implementar algunas librerías como NumPy.
Estamos faltones hoy, A ver, es verdad que hay librerías en Python que requieren de C, pero eso no implica que tenga mal rendimiento.
Lo tiene, pero no es el tema de hoy, ¿verdad?
El tema es que realizar un gran número de cálculos matemáticos requiere una implementación concreta y Julia lo tuvo en cuenta para tener un alto rendimiento.
Vale. En rendimiento y emplear un único lenguaje está claro que sus diseñadores se esmeraron, pero ya está. ¿Por eso es tan bueno este lenguaje? No puede ser lo único. ¿Qué otras características tiene Julia?
Te sorprenderá oír que tiene una muy buena tolerancia a fallos y capacidad de computación distribuida.
Sí que me ha sorprendido. ¿Es como Erlang?
Seguramente tenga similitudes a nivel básico porque no tiene un control estricto de la distribución. No es como Go.
En Go puedes crear los procesos, los canales, y tienes un control estricto sobre la información que se intercambia entre los sistemas.
Sí, son detalles con los que los científicos de datos no están muy familiarizados. Por eso Julia los hace de forma automática para ellos.
¡Qué elegancia! Entonces, ¿solo dices que quieres que algo se calcule de forma distribuida y el sistema se encarga de distribuir el trabajo y recogerlo al final?
¡Exacto!
¡Paparruchas! Es mejor controlar el proceso y la información.
¿Y la tolerancia a fallos?
Como no puedes asegurar en un entorno de red que todos los nodos estén siempre activos y dispuestos, Julia incorpora un sistema para corrección de fallos. Si una comunicación entre los sistemas falla, toma esa parte del trabajo como no completada y la reasigna.
¡Eficiente! ¡Me gusta!
¡A ti te gusta cualquier cosa! ¿No te das cuenta de que si los sistemas comienzan a hacer estas cosas por sí solos pierden ¿No pierdes el control y el conocimiento sobre cómo realizar la distribución?
Tampoco tengo control y conocimiento de cómo se convierte el código a código máquina y no me quita el sueño.
Bueno, hablemos de otros puntos importantes. ¿Hay una gran comunidad detrás?
Hmm, pues parece que no hay una gran comunidad detrás, no.
¿Ves? No podemos confiar en un lenguaje así si no tiene un gran respaldo empresarial fuerte.
No tiene una gran comunidad empresarial detrás, pero sí hay una comunidad muy activa en ciertos nichos como en la computación científica. Tiene su propia conferencia que se celebra en julio.
¿En julio? Julia, July, ¿Lo pilláis? ¡Qué público más difícil!
¿Y qué me dices de las librerías, frameworks y otro código para poder implementar cosas como acceso a bases de datos?
Pues dispone de una buena colección de paquetes, más de 10.000 aseguran.
No serán fáciles de instalar.
Sí, lo son. Desde la consola de Julia hay un modo para gestionar paquetes, es muy fácil.
Da igual que sea fácil si no tienes usuarios para usarlo.
Hay muchos usuarios y no hemos contado aún las características interesantes de Julia.
¿Características interesantes? Además de la gestión de paquetes integrada, su capacidad de distribución del trabajo, tolerancia a fallos y su rendimiento Exacto, Chip.
Aún no hemos contado todo lo que tiene este lenguaje.
Vaya, pro. Pues cuéntanos, pro.
Parecéis la teletienda.
Tenemos macros y metaprogramación al estilo de Lisp.
Suena bien. Trata el código como datos entonces.
También podemos llamar a código externo de librerías de Python o C. Interoperable.
Eso quiere decir que si tenemos código en Python o en C ¿Podemos usarlo directamente desde Julia sin más?
Sin más. Y seguro que a Violeta le fascinará la siguiente.
¡Lo dudo!
Con rutinas.
¡Imposible! Seguro que son hilos rojos como en JavaScript.
No, son hilos verdes como en Erlang.
¿Hilos verdes? ¿Hilos rojos? ¿De qué estáis hablando?
En JavaScript es muy común programar orientado a eventos, por lo que cuando llega un evento hay que atenderlo a través de un código específico, pero... ¿Qué pasa con lo que estaba haciendo el programa? Pues que se detiene de forma abrupta y por eso se dice que es un hilo rojo, porque interrumpe la ejecución de otro.
Ah, entonces un hilo verde no interrumpiría la ejecución de otros para poder ser atendido.
Exacto. En Erlang se usan hilos verdes. Cuando llega un evento, el código decide cuándo quiere atender la petición y no requiere detener nada.
O como en Go, que también se implementan las corutinas con hilos verdes.
Exacto. Ya van teniendo más cosas en común.
Muy poco, pero lo más importante: ¿qué hay hecho en Julia?
Como hemos dicho, a nivel empresarial hay hecho más bien poco.
¡No hay nada!
Hay empresas que lo usan, como Pumas para el desarrollo de un software farmacológico, o Invenia para la optimización de redes eléctricas, o BlackRock para la gestión de activos y el estudio del mercado bursátil.
He oído que Amazon Web Services también usa Julia. ¡Eso se usa en todo!
¡Cualquier cosa!
La empresa de seguros Aviva también para simulaciones rápidas.
¿Y sobre software que sea conocido?
Celeste.
¿Qué es eso?
Es un proyecto de astronomía cuyo objetivo es mapear el universo a través del análisis de grandes volúmenes de datos astronómicos. Y también está GENI, un framework web.
¿Para hacer web con Julia? No suena nada bien.
Para ti quizás no, pero para los científicos que quieran publicar. Algún algoritmo o permitir la simulación y entrada de datos a programas específicos es muy útil.
Al final, ¿no es un lenguaje de propósito general per se?
Es de propósito general, pero como sus características son buenas específicamente para un nicho, es normal que se haya popularizado mucho en ese nicho.
Conclusiones. Al fin acaba.
No te podrás quejar, no ha sido un capítulo muy extenso, pero aún así Al fin hemos dicho todo lo que se tenía que decir sobre Julia.
Un lenguaje que permitió a los científicos de datos no tener que ir cambiando entre Python, C, MATLAB y R, manteniéndose únicamente en un solo lenguaje y con muy buen rendimiento.
Al final, Julia es como ese amigo que no deja de presumir de lo bien y rápido que hace las cosas y te preguntas solo por qué lo sigues invitando.
Porque al final cumple.
Julia no es un lenguaje de uso masivo. Ha rozado el top 20 algunas veces en TIOBE, pero se mantiene en su nicho. No es un gran lenguaje para todos, Violeta? Pero quienes lo usan en su nicho se sienten contentos porque les facilita mucho la vida.
Vale, ¿lo dejaremos aquí?
No, aún no. Ahora el turno es para vosotros, porque sabéis que os leemos y respondemos a todo.
¿Qué os pareció Julia?
¿Os gustaría probarlo?
La próxima, con suerte, será Laravel. Ya sabéis, votad, votad.
Déjanos tus comentarios.
Pues ya está. Ha sido como una visita al dentista: incómoda, dolorosa, pero al fin no volveremos a hablar de Julia nunca más.
Bah, si te ha gustado al final. ¿Crees que no he visto cómo te brillaban los ojos cuando hemos visto la parte de la distribución?
No tanto como tú cuando veas que el siguiente podría ser Haskell.
¿Haskell? ¿Haskell? Pero yo, ¿qué te he hecho, Violeta?
Continuará.
More from Manuel

Historia de los Lenguajes de Programación: años 1960-1969 #basic #apl #simula #lisp #logo

¿Compilador o intérprete? La historia de una rivalidad que comenzó en los años 40








