Les raisons de l’adoption accélérée du langage Julia : un langage polyvalent, mais plus scientifique, supporte l'introspection et la métaprogrammation
selon Lee Phillips, chercheur et activiste du mouvement du logiciel libre
Julia est un langage de programmation conçu par des chercheurs du MIT en 2009 et dévoilé pour la première fois au grand public en 2012. C’est un langage de programmation de haut niveau, performant et dynamique pour le calcul scientifique, avec une syntaxe familière aux utilisateurs d'autres environnements de développement similaires. Julia connaît une croissance fulgurante depuis sa sortie et certains vont même jusqu’à dire qu’il s’agit du langage idéal pour le calcul scientifique, la science des données et les projets de recherche. Un tour d’horizon de certains facteurs qui auraient favorisé son évolution.
Le langage de programmation Julia a connu une augmentation importante de son utilisation et de sa popularité au cours des dernières années. Dans un article sur LWN.net, Lee Phillips, chercheur et activiste du mouvement du logiciel libre, revient sur certains des changements intervenus depuis la première version stable du langage Julia, la version 1.0, dont aucun n'est majeur, ainsi que de nouvelles ressources pour l'apprentissage du langage. Toutefois, l'objet principal de son analyse est une étude de cas qui vise à montrer pourquoi le langage a pris son essor.
Lee rappelle en premier lieu que Julia est un langage polyvalent, mais qui se prête particulièrement bien à la programmation scientifique et aux travaux numériques. Il est un langage dynamique, avec un mode interactif et une syntaxe facile à apprendre, simple pour les programmeurs débutants ; il possède également des niveaux de sophistication plus profonds pour les experts. Julia supporte l'introspection et la métaprogrammation, avec des macros de type Lisp, une syntaxe Lisp optionnelle, et l'accès à des vues des fonctions sous forme d'arbre syntaxique et de langage d'assemblage.
Il dispose d'un système de types riche avec des types performants définis par l'utilisateur, de la répartition multiple de fonctions, mais également de plusieurs modèles de programmation simultanée intégrés. Julia a tout récemment franchi une sorte d'étape de popularité, en entrant dans le top 20 de la liste des langages de programmation de l'IEEE Spectrum. De plus, le langage est adopté dans de nombreux nouveaux projets de recherche, dont : Climate Machine, le moteur de calcul utilisé par la Caltech Climate Modeling Alliance ; une initiative de prévision météorologique spatiale.F
Selon Lee, la conférence annuelle sur Julia, qui vient de se terminer et qui s’est tenue en ligne cette année, est un autre indicateur clé de l'audience que Julia attire. Les présentations auxquelles l’on pouvait s’attendre sur divers sujets informatiques ont été compensées par plusieurs discussions sur les applications à la recherche scientifique dans une variété impressionnante de domaines. Un thème récurrent était la façon dont le langage facilite la collaboration et la réutilisation du code, en donnant aux scientifiques la possibilité de tirer parti des progiciels et des algorithmes des autres. Voici quelques éléments qui ont impulsé la popularité du langage selon Lee.
Étude de cas : le pouvoir de combiner les bibliothèques
Le fait que Julia soit organisé autour du concept de la répartition multiple, combinée à un certain soin apporté par les auteurs de paquets pour écrire du code extensible, crée un contexte où il est inhabituellement facile de combiner les particularités de plusieurs paquets. La répartition multiple signifie en effet qu'une fonction donnée peut être définie avec une variété de méthodes disponibles, chacune opérant sur un ensemble différent de types d'arguments ; la méthode particulière utilisée est choisie au moment de l'exécution, en fonction des types de tous les arguments.
Il est crucial que l'utilisateur d'une bibliothèque soit en mesure de définir de nouvelles méthodes pour les fonctions de la bibliothèque, sans avoir à modifier le code de la bibliothèque existante. L’étude de cas porte sur une activité essentielle pour les sciences informatiques : la solution numérique d'une équation différentielle. Le paquet DifferentialEquations de Julia est devenu la norme à cet égard dans l'écosystème. Des paquets peuvent être ajoutés à Julia à partir de la boucle lecture-évaluation-impression (REPL - read-eval-print loop) en utilisant le gestionnaire de paquets du langage.
Le paquet DifferentialEquations est écrit par Chris Rackauckas, professeur au MIT. Selon Lee, c’est une bibliothèque écrite de façon générique, avec des fonctions pouvant être étendues pour travailler sur de nouveaux types de données. Cela est rendu possible par le système de types de Julia et son organisation autour de la répartition multiple. Pour Lee, c'est la solution de Julia au problème d'expression, qui permet d'étendre et de combiner des bibliothèques existantes sans avoir à modifier ces bibliothèques, ni même à consulter leur code source.
Les changements intervenus dans Julia depuis la version 1.0
Il n'y a pas eu de changements majeurs depuis la version 1.0 de Julia. Toutefois, il y a quelques ajustements mineurs à la syntaxe, qui rendent généralement les choses plus pratiques, qui sont détaillés dans les notes de version pour les v1.5, v1.4, et v1.3. Lee a décrit dans son analyse plusieurs changements plus importants. La dernière version de Julia, Julia 1.5.x, apporte un changement substantiel aux règles de délimitation du champ d'application lors de l'utilisation du REPL. Dans Julia, les blocs tels que les boucles créent leurs propres champs lexicaux.
Les variables qui apparaissent dans ces blocs sont locales au bloc, sauf si elles sont explicitement déclarées comme étant globales. Dans Julia 1.5, lors de l'utilisation du REPL, une affectation à l'intérieur d'un bloc à une variable non déclarée qui existe déjà dans la portée globale utilisera cette variable globale. En ce qui concerne le code dans les fichiers, le même code vous donnera un avertissement, car il est ambigu ; ce changement ne casse aucun code dans les fichiers. Cette solution a été jugée plus pratique pour une utilisation interactive dans le REPL
En effet, il peut être fastidieux, et surprenant pour les débutants, de devoir suivre des variables globales. Néanmoins, ce changement a suscité une certaine controverse, car désormais le même code dans un fichier et dans le REPL se comportera différemment ; cela revient au comportement des versions de Julia antérieures à la version 1.0. Cette version introduit aussi une option syntaxique réduisant le bruit visuel et la frappe au moment de l'utilisation d'arguments de mots-clés. Si vos variables locales ont le même nom que les paramètres nommés d'une fonction, ce qui est souvent le cas, alors un appel de fonction ressemble à function(var1=var1, var2=var2).
C’est la syntaxe normale en Python et dans les versions précédentes de Julia. Elle peut désormais être simplifiée pour devenir function(; var1, var2). En outre, la plainte la plus fréquente concernant Julia est le long temps de démarrage lors de la précompilation d'un paquet. La dernière version a introduit un paramètre expérimental au sein du module pour le niveau d'optimisation du compilateur. La désactivation des optimisations pour le code qui n'est pas crucial pour les performances peut réduire considérablement le temps de compilation et, par conséquent, la latence.
Les ressources d'apprentissage disponibles pour Julia
Selon Lee, ces dernières années, de nouveaux livres et des sites Web utiles sont apparus, ce qui facilite l'initiation à Julia. La documentation officielle en ligne est assez complète et peut être tout ce dont un programmeur expérimenté aura besoin. Mais elle mélange des discussions approfondies sur des sujets avancés avec des sections d'introduction d'une manière qui risquerait de déconcerter un débutant relatif. Parmi les sites Web et les ressources en ligne qui proposent une approche plus douce, il y a Julia By Example, JuliaAcademy, etc.
Lee a déclaré qu’il y a eu une explosion de ressources d'apprentissage, ce n’est qu'un tout petit échantillon. « J'espère que le petit exemple ci-dessus aidera à démontrer, en miniature, ce que Julia a de spécial et pourquoi il fait tant parler de lui dans la communauté scientifique. Julia n'est pas le premier langage à utiliser un système de répartition multiple ; Common Lisp l'a inclus il y a 40 ans. Mais ce fut une percée de combiner cela avec des performances numériques de classe Fortran et avec une syntaxe aussi facile à prendre et à lire que celle de Python », a-t-il déclaré.
Il finit en disant que Julia vaut certainement la peine d'être considérée pour un scientifique ou un ingénieur qui commence un nouveau projet. « Bien qu'il n'ait pas encore la vaste couverture des bibliothèques Python, il est particulièrement facile d'appeler des fonctions Python (et Fortran ou C) à partir du code Julia, et le code Julia s'exécutera, en temps normal, rapidement. Pour tous les autres, je peux recommander Julia simplement comme un langage intéressant, amusant et instructif à utiliser », a conclu Lee.
Source : Lee Phillips
Et vous ?
Êtes-vous un développeur Julia ? Pourquoi avez-vous opté pour ce langage ?
Quel autre langage pour le calcul scientifique préféreriez-vous et pourquoi ?
Voir aussi
Le langage de programmation Julia gagne de plus en plus en popularité au sein de la communauté scientifique, depuis janvier 2018
Julia 1.5 : installation et mise en route avec Visual Studio Code, un billet de blog de Daniel Hagnoul
Après Redmonk, c'est au tour de l'Index TIOBE de mettre Python dans le top 3 des langages les plus populaires, Julia gagne également en notoriété
Sortie de Julia 1.0 et 0.7. Le langage de programmation scientifique atteint sa première version stable après six ans de développement public
Partager