Julia, le langage de programmation qui accélère la recherche scientifique
Posté le 17 novembre 2020 par PierreB
Julia est un langage de programmation créée par les chercheurs du MIT en 2009 et qui fera son arrivée au grand public en 2012. C’est un langage de programmation de haut niveau, performant, dynamique, et conçu pour le calcul scientifique avec une syntaxe similaire à Python, Matlab, Ruby ou encore R. Son efficacité est telle qu’aujourd’hui, le langage Julia bouleverse véritablement la coopération scientifique et permet une accélération des idées de chacun en s’affranchissant des frontières bloquantes des langages traditionnels. Chaque scientifique peut ainsi piocher dans les travaux d’autres chercheurs et les intégrer facilement et efficacement dans son propre projet. En cause, Julia permettrait la réunification de tous les autres langages en un seul. Voilà près de 10 ans que le langage Julia évolue et s’enrichit avec une communauté de plus en plus importante, comme l’atteste Lee Phillips, un physicien qu’il a vu naître.
Quelles entreprises utilisent le langage Julia ?
Plusieurs entreprises très connues utilisent le langage Julia depuis quelques années. On peut citer notamment le groupe d’assurances multinational Aviva qui utilise Julia pour le calcul des risques. Une autre multinationale de gestion d’actif, BlackRock, dont la réforme des retraites a fait parler d’elle en ce début d’année, utilise également Julia pour les calculs de séries chronologiques pour les investissements (Time Series calculations for investments). La Federal Reseve Bank of New York (l’une des banques américaines les plus connues) se sert aussi du langage Julia pour la modélisation économique. Bien d’autres entreprises évoluant dans l’univers du Big Data ont également recours à ce langage très utile (visualization, data science, machine learning, parallel computing, etc.)
Quels domaines d’actions pour les avancées de la science ?
Outre ces actions dans les domaines des sciences socio-économiques, c’est également sur une approche globale des sciences que le langage Julia intervient. En se basant sur les témoignages de chercheurs utilisant Julia, on peut dresser une liste de domaines où le langage a déjà fait ses preuves (une liste bien entendu non exhaustive) :
- Modélisation moléculaire
- Épaisseur des glaciers
- Dynamique des vecteurs de maladies
- Simulations spatiales
- Recherche sur le cancer
- Dynamique tumorale
- Dynamique cérébrale de vertébrés
- Analyse de la performance musicale
- etc.
En effet, beaucoup de témoignages de scientifiques viennent confirmer l’intérêt et l’efficacité de Julia pour la recherche, comme l’atteste par exemple Petr Krysl et ses travaux sur les équations différentielles partielles : « C’est vraiment bien d’avoir un langage rapide qui peut être utilisé pour tout écrire. […] mais ce qui m’impressionne vraiment ces jours-ci, c’est autre chose: Julia est en quelque sorte capable d’augmenter ma productivité […]. Julia facilite la réflexion au bon niveau d’abstraction. »
L’origine de Julia
1) Des langages aux longévités différentes
Le physicien et journaliste Lee Phillips a assisté ces dix dernières années à l’émergence de Julia. Au travers d’un récent article, il explique comment ce langage a vu le jour et comment il est parvenu à faire l’unanimité aujourd’hui dans les milieux scientifiques. Il explique ainsi que tous les langages n’ont pas la même longévité et que certains sont plus appréciés que d’autres en fonction des objectifs et des priorités à réaliser au sein d’un projet.
La force de chaque langage ne se base pas toujours sur les mêmes aspects. Certains langages fonctionnent plus vite que d’autres, alors que certains sont plus rapides ou plus faciles à développer. Certains langages ont un écosystème plus vaste et permettent d’emprunter du code d’une autre bibliothèque et de les incorporer sans trop se compliquer la tâche. Des langages peuvent être bien adaptés à des types de problèmes particuliers ou alors être adaptés à un usage général.
2) Un milieu scientifique historiquement dominé par Fortran
Les scientifiques réalisent régulièrement des calculs poussés. De ce fait, ils accordent une importance particulière aux langages, à la qualité des compilateurs et des bibliothèques, mais aussi aux machines sur lesquelles ils fonctionnent. Depuis les années 50, c’est le langage Fortran qui a été l’outil traditionnel de choix pour un certain nombre d’opérations scientifiques de haut niveau, tel que la simulation atmosphérique ou la conception d’armes nucléaires. Il est cependant encore relativement utilisé aujourd’hui au sein de grands supercalculateurs et reste donc un très bon symbole de longévité en matière de langage informatique. Cependant, et bien qu’il ait longtemps dominé le marché de la recherche scientifique, il est aujourd’hui en concurrence avec d’autres langages plus jeunes, notamment Python, dont la popularité ne cesse de croître.
3) Un nouveau souffle avec Python
La popularité de Python s’explique par la dynamique de son écosystème, et son cycle de développement rapide. Avec Python, vous pouvez résoudre un problème scientifique en profitant de sa syntaxte simple et de son interactivité. Votre programme fonctionne très bien pour une version test du problème, mais lorsque vous essayez de le mettre à l’échelle pour obtenir quelque chose de plus réaliste, il est trop lent.
4) Des problèmes de lenteur à grande échelle
Autrement dit, écrire un programme en Python ne pose aucun problème pour certains types d’applications, mais dès lors qu’il s’agit d’une simulation à très grande échelle, le langage Python peut s’avérer intrinsèquement lent selon Lee Phillips. Il existe diverses techniques pour réaliser des gains modestes sur la lenteur de Python, dont une réécriture en C des parties les plus longues du calcul pour être plus rapide. Le problème reste cependant le maintien du code dans les deux langages, ce qui s’avère chronophage pour la science. Dans le milieu scientifique, la solution du langage Julia a attiré bon nombre de scientifiques puisqu’il résout les problèmes de Fortran / Python et des autres langages expressifs et interprétés.
5) L’arrivée de Julia
Les concepteurs de Julia, Jeff Bezanson, Stefan Karpinski, Viral Shah, et Alan Edelman, souhaitaient un langage open source avec une licence libre, renfermant de nombreux avantages, surtout pour la communauté scientifique :
« Nous voulons un langage open source, avec une licence libre. Nous voulons un langage qui associe la rapidité de C et le dynamise de Ruby. En fait, nous voulons un langage homoiconic, avec de vraies macros comme Lisp et avec une notation mathématique évidente et familière comme Matlab. Nous voulons quelque chose d’aussi utilisable pour la programmation générale que Python, aussi facile pour les statistiques que R, aussi naturel pour la gestion de chaîne de caractères que Perl, aussi puissant pour l’algèbre linéaire que Matlab et aussi bien pour lier des programmes que le Shell. Nous voulons qu’il soit à la fois interactif et compilé. »
Pour résumer, Julia est donc très extensible puisqu’il existe plus de 4 000 packages pour sa communauté. Sa force réside principalement dans le fait que l’on peut l’utiliser avec d’autres librairies (Python, C, Fortan , C++, Java, ou encore R). Grâce à ce langage simple, efficace et ouvert, la recherche scientifique s’accélère.
Un bouleversement de la coopération scientifique
Aujourd’hui, la communauté s’agrandit autour de Julia. Chaque année a lieu la JuliaCon, la convention annuelle de Julia où se déroule une multitude de sujets informatiques (programmes, algorithmes, compilateurs, optimisation, etc.) mais également des sujets scientifiques (la dynamique des fluides ou encore l’imagerie cérébrale en passant par le traitement du langage).
Le domaine scientifique semble alors réellement se mettre au mouvement de l’open source et aux partages des travaux scientifiques, ce qui est un bouleversement en soi. En cause, l’histoire indique que l’organisation de la recherche était différente à l’époque. Auparavant, un code ne quittait rarement un laboratoire. Aujourd’hui et grâce à un langage tel que Julia, un algorithme scientifique peut par exemple se transmettre d’un chercheur à un autre de la même manière qu’un développeur accède à un code d’un autre développeur sur Github.
La recherche scientifique s’ouvre aujorud’hui à tous et pour le progrès commun. Bon nombre de scientifiques semblent s’accorder sur la facilité dont Julia permet les collaborations scientifiques et la réutilisation du code. Ces scientifiques ont tous découvert que Julia multiplie les possibilités de collaboration et facilite plus que jamais l’intégration du travail des uns et des autres et leur permet d’écrire un code pouvant être utilisé de manière imprévue. De par son interopérabilité et son ouverture, Julia permet de piocher dans les idées d’autres scientifiques et de les adapter à ses propres recherches. Il est alors beaucoup plus facile de collaborer sur des problématiques spécifiques et donc de développer le progrès scientifique général.
Comment le langage Julia accélère-t-il les idées et les partages scientifiques ?
Le problème de l’expression
Les pouvoirs de Julia se trouvent dans la solution apportée par le langage à une vieille énigme bien connue de la science informatique : le problème de l’expression (expression problem). En faisant une analogie de l’informatique avec la création de recettes de cuisine, Lee Phillips illustre très bien l’origine du problème. Il explique qu’il existe deux façons d’organiser un livre de recettes.
Un livre de recettes peut être organisé autour de procédures à suivre pour réaliser des plats, mais il peut également également être axé autour des ingrédients à utiliser pour réaliser ces plats. Par analogie, il fait directement référence aux deux types de langages informatiques qui divisent le monde de la programmation informatique. Les livres de recettes organisés autour des procédures sont ceux écrits dans un langage fonctionnel, tandis que ceux organisés autour des ingrédients sont écrits dans un langage orienté objet.
Langage fonctionnel vs langage orienté objet
Dans un cas, vous ne pouvez pas ajouter de nouveaux ingrédients sans réécrire les procédures existantes, tandis que dans un autre cas, vous ne pouvez pas ajouter de nouvelles procédures sans réécrire votre travail existant : c’est le problème de l’expression. En revoyant la terminologie de la conception du langage informatique : dans un langage fonctionnel, vous pouvez ajouter de nouvelles fonctions sans toucher à celles qui existent déjà, mais ajouter de nouveaux types de données signifie réécrire les fonctions existantes. Dans un langage orienté objet, vous pouvez ajouter de nouveaux types de données à volonté, mais si vous voulez ajouter de nouvelles fonctions, vous devez reconcevoir les objets existants.
La programmation orientée objet ou fonctionnelle ne permet donc pas d’ajouter de nouvelles fonctions ou de nouveaux types de données sans obliger les scientifiques à réécrire le code antérieur. Un frein conséquent pour la recherche et sa bonne circulation. C’est ici toute la base du problème dont Julia parvient à s’affranchir.
Grâce à la technique du « multple disptach », le langage Julia a le pouvoir de rendre simple ce qui aurait été compliqué dans la plupart des autres langages comme l’affirme Lee Phillips : «le mélange direct et libre de codes permettant de faire des choses que ceux qui les ont écrits n’avaient initialement pas imaginées.» et «d’étendre l’univers des choses qui peuvent être accomplies pendant un temps humain fini, […] d’imaginer des choses qui ne pourraient être imaginées sans lui».
Source : The unreasonable effectiveness of the Julia programming language (arstechnica.com)
Bonjour,
merci pour cette découverte 🙂
je ne connaissais pas Julia mais ca a l’air très utile pour la modélisation scientifique .. à tester donc
merci 😉