[ad_1]
En matière de modélisation du climat, chaque seconde de calcul compte. Conçus pour tenir compte de l’air, de la terre, du soleil et de la mer, ainsi que de la physique complexe qui les relie, ces modèles peuvent exécuter des millions de lignes de code exécutées sur les ordinateurs les plus puissants du monde. Ainsi, lorsque les climatologues-codificateurs de la Climate Modeling Alliance (CliMA) – une coalition de scientifiques, d'ingénieurs et de mathématiciens basés aux États-Unis – ont décidé de construire un modèle à partir de la base, ils ont opté pour un langage qui puisse répondre à leurs besoins. Ils ont opté pour Julia.
Lancé en 2012, Julia est un langage open source qui associe l’interactivité et la syntaxe de langages de "script", tels que Python, Matlab et R, à la rapidité des langages "compilés" tels que Fortran et C.
Parmi les climatologues, la lingua franca est le Fortran: rapide, mais – avec des racines remontant aux années 1950 – pas terriblement excitant. «Beaucoup de gens, quand ils entendent Fortran, disent:« Oh, mon Dieu, je ne veux pas programmer », dit Frank Giraldo, mathématicien à la Naval Postgraduate School de Monterey, en Californie, et un co-chercheur principal du projet CliMA. Les jeunes programmeurs préfèrent les langages pouvant s'adapter aux dernières tendances en matière de conception logicielle et matérielle, explique Giraldo, et depuis son adoption par Julia, il a constaté une augmentation de son intérêt. «Certains d'entre eux s'intéressent vraiment à la modélisation du climat, mais d'autres sont intrigués par l'idée d'utiliser Julia pour une application à grande échelle», dit-il.
Jane Herriman, qui étudie la science des matériaux à l'institut de technologie de Californie à Pasadena, a déclaré avoir vu des exécutions dix fois plus rapides depuis la réécriture de ses codes Python dans Julia. Michael Stumpf, biologiste des systèmes et soi-disant Julia Proselytizer à l'Université de Melbourne, en Australie, qui a porté des modèles informatiques de R, a constaté une amélioration de 800 fois. "Vous pouvez faire des choses en une heure qui prendraient autrement des semaines ou des mois", dit-il.
Cette accélération, combinée à la syntaxe conviviale de Julia et à sa promesse de résoudre le "problème des deux langues" – les chercheurs prototypent souvent des algorithmes dans un langage convivial tel que Python, mais doivent ensuite les réécrire dans un langage plus rapide – soulève la question. le profil du langage, en particulier parmi ceux qui traitent de problèmes informatiques intensifs. Outre la modélisation climatique, le langage est en train d'être adopté dans des disciplines telles que l'intelligence artificielle, la finance et la bioinformatique.
Selon Alan Edelman, informaticien à l'institut de technologie du Massachusetts (Cambridge Institute of Technology) à Cambridge, qui a co-créé Julia, le langage a déjà été téléchargé 9 millions de fois. Julia est maintenant classée parmi les 50 langages de programmation les plus populaires au monde, selon un index. C’est encore relativement créneau – l’index 2019 classe Julia 50ème et Python 3ème – mais il a une base d’utilisateurs passionnée.
«Les gens en ont juste assez de réécrire du code», déclare Edelman. «Ils en ont marre des codes qui cachent leur intention, ils sont fatigués de quelque chercheur, étudiant diplômé ou employé qui écrit du code avant de passer à leur prochain emploi et personne ne sait plus quoi faire avec leur code. Ce sont ceux qui utilisent Julia – des gens qui veulent de la performance, de la portabilité et de la flexibilité. "
Le meilleur des deux mondes
Julia – son nom met le ‘Ju’ dans ‘Jupyter’, un système de cahier de calcul populaire parmi les scientifiques, à côté de Python et R – est essentiellement un langage compilé dans l’habillement du langage de script. Dans les langages de script tels que Python, les utilisateurs tapent le code dans un éditeur interactif ligne par ligne et le langage l'interprète et l'exécute, renvoyant immédiatement le résultat. Avec des langages tels que C et Fortran, le code doit être compilé en instructions lisibles par machine avant de pouvoir être exécuté. Le premier est plus facile à utiliser, mais le dernier produit un code plus rapide. En conséquence, les programmeurs pour qui la rapidité compte développent souvent des algorithmes dans des langages de script, puis les traduisent en C ou en Fortran, un processus laborieux et sujet aux erreurs.
Julia contourne ce problème de deux langues car il fonctionne comme C, mais se lit comme Python. Et il inclut des fonctionnalités intégrées pour accélérer les problèmes de calcul intensifs, tels que l'informatique distribuée, qui nécessitent sinon plusieurs langues. (L'informatique distribuée permet aux programmeurs de répartir les problèmes difficiles entre plusieurs processeurs et ordinateurs.) Vijay Ivaturi, pharmacologue clinicien quantitatif à l'Université du Maryland à Baltimore, a utilisé Julia pour créer un outil permettant de personnaliser les décisions en matière de dosage des médicaments. Son langage précédent, Fortran, l'obligeait à utiliser plusieurs outils auxiliaires. «Je suis tombé amoureux de la vitesse de Julia», dit-il. "Mais dans l'ensemble, je pense que je suis tombé amoureux du fait que je n'ai pas à changer d'outils (de langue) pour que mon travail soit effectué: je peux vivre dans un environnement de bout en bout."
Les utilisateurs codent généralement dans Julia à l'aide de la console REPL (lecture – évaluation – impression en boucle), une interface interactive basée sur un texte qui prend l'entrée, l'évalue et renvoie les résultats à l'utilisateur. (Ils peuvent également utiliser un éditeur de texte de programmation standard ou le bloc-notes Jupyter.) Pour toutes les apparences, utiliser Julia revient à coder en Python: taper une ligne, obtenir un résultat. Mais en arrière-plan, le code est compilé. Par conséquent, la première fois qu'une fonction est entrée, elle peut être lente, mais les exécutions ultérieures sont plus rapides. Et une fois que le code fonctionne correctement, les utilisateurs peuvent l’optimiser (voir ‘Démarrer’).
Selon Giraldo, une des raisons pour lesquelles CliMA a choisi Julia pour son travail est sa performance dans un défi de codage de type "cuire au four" de Noël contre C et Fortran, en utilisant Giraldo – alors novice dans Julia – comme cobaye. «Le code Julia, tout de suite, était à deux ou trois cents de ces codes Fortran hautement optimisés», dit-il.
Et c’est plus facile à lire, ajoute-t-il. Avec des fonctionnalités telles que l'envoi multiple (permettant à plusieurs fonctions d'avoir le même nom) et la métaprogrammation (programmes pouvant se modifier eux-mêmes), le langage met l'accent sur la simplicité. Julia prend également en charge les symboles Unicode, ce qui permet aux programmeurs d’utiliser des lettres grecques comme variables plutôt que des équivalents romains. Cela signifie qu’ils peuvent écrire un code qui ressemble aux maths de leurs papiers, avec C = 2 * π *rpour la circonférence d'un cercle, au lieu de C= 2 * pi *r. "Vous pouvez exprimer les choses exactement comme votre esprit pense à elles", dit Edelman. "Vous voulez que la machine se plie à votre volonté, pas vous-même à la volonté de la machine."
Rapide, puissant et facile
Michael Borregaard, chercheur en biodiversité à l'Université de Copenhague, explique que Julia a accéléré ses codes de deux ordres de grandeur par rapport à R – résultat à la fois de la vitesse de calcul et de la clarté linguistique. «Le coder dans Julia m'a beaucoup facilité la tâche de la reformuler pour qu'elle soit rapide, ou de repenser la façon dont je l'ai mise en œuvre pour accélérer les choses», dit-il.
Pour George Tollefson, assistant de recherche clinique à l’hôpital des femmes et des bébés de Rhode Island, à Providence, c’est le mélange de convivialité et de puissance de calcul de Julia qui en a fait l’idéal pour écrire un visualiseur de données pour de grands ensembles de données génomiques. «Au début, Julia était une langue attrayante, car elle est très rapide et puissante», dit-il. "Mais il est également très facile d'apprendre à écrire." Et il a une communauté de soutien, ajoute Tollefson. Étant donné que la base d'utilisateurs de cette langue est relativement petite, il peut être difficile de trouver des réponses en ligne. Mais les communautés de développeurs sur Slack, Discourse et GitHub peuvent combler le vide. «Dans certains cas, nous avons constaté que les gens n’avaient pas rencontré le problème (nous l’avions fait), mais ils ont pu nous aider en moins d’une demi-heure», explique Stumpf.
Cela dit, une base d'utilisateurs plus réduite se traduit également par un écosystème de packages plus petit: la collection de bibliothèques de codes externes que les programmeurs utilisent pour étendre un langage à de nouvelles disciplines. Selon Edelman, l'écosystème de Julia compte plus de 2 600 paquets, notamment Flux (apprentissage automatique), BioJulia (analyse de séquence d'ADN), DifferentialEquations (simulations informatiques) et JuMP (modélisation mathématique). À titre de comparaison, le référentiel CRAN R contient plus de 14 000 packages et l’indice PyPI de Python dépasse 187 000.
Les chercheurs qui ont besoin de bibliothèques qui n’ont pas été traduites en Julia peuvent utiliser le code directement à l’aide de progiciels tels que Pycall (Python) et Rcall (R). En tant qu'étudiante au Massachusetts Institute of Technology, Lydia Krasilnikova, maintenant étudiante en informatique à l'Université Harvard de Cambridge, au Massachusetts, a créé un traducteur Matlab-to-Julia, disponible en ligne. "Beaucoup de gens m'ont dit que le traducteur avait facilité la transition et leur avait permis de tester le code dans Julia et de bricoler leur base de code existante d'une manière qu'ils n'auraient jamais pu auparavant", dit-elle.
En fin de compte, le choix de la langue dépend des préférences personnelles, des exigences du projet et de vos collègues. Dans de nombreux cas, n'importe quelle langue fera l'affaire. Mais pour le «code performant», dit Giraldo, «honnêtement, pour le moment, je vois vraiment Julia comme le meilleur choix. Il faut y aller à fond et y plonger. Ce n’est pas vraiment si difficile. "
[ad_2]