Adoption du langage de programmation Julia : Logan Kilpatrick, défenseur de la communauté des développeurs Julia, livre son analyse,
dans un billet de blog

Dans un billet de blog publié le 12 décembre, Logan Kilpatrick, défenseur de la communauté des développeurs principaux de Julia, partage son avis sur le langage Julia. « Un tout nouvel écosystème d'entreprises arrive sur le devant de la scène et elles ont toutes une chose en commun : elles utilisent le langage de programmation Julia. Les entreprises qui opèrent à la limite du possible s'appuient sur l'efficacité de Julia en matière de calcul, sa facilité d'utilisation et sa place dans l'écosystème du calcul scientifique pour résoudre certains des problèmes les plus difficiles au monde », écrit-il.

Julia est un langage de programmation open source et un écosystème pour le calcul scientifique de haute performance. Conçu par des chercheurs du MIT en 2009 et dévoilé pour la première fois au grand public en 2012, il est doté d’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. Le langage s'est popularisé lorsque le projet est devenu open source en 2012. Il est actuellement disponible sous licence MIT.

Nom : julia.jpg
Affichages : 29215
Taille : 2,5 Ko

À la base, ses concepteurs voulaient un langage avec une licence libre et 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 dynamisme de Ruby. En fait, nous voulons un langage homoïconique, 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é », avaient-ils déclaré en 2012.

Les raisons de l’adoption accélérée du langage Julia

Langage de haut niveau

Julia est un langage de haut niveau, ce qui signifie qu'il peut être utilisé pour développer rapidement des prototypes et résoudre des problèmes sans avoir besoin de trop de code. De l’avis de Kilpatrick, cela rend Julia extrêmement utile pour les startups, car elles peuvent développer rapidement leurs produits ou services sans avoir à se soucier des exigences de codage complexes. De plus, comme Julia est open source, il existe de nombreux paquets qui peuvent être utilisé pour accélérer encore le développement.

Compatibilité avec d'autres langages

L'un des principaux avantages de Julia est sa compatibilité avec d'autres langages tels que Python, R, C++, MATLAB et Java. Cela permet d'intégrer facilement ces langages dans le processus de développement sans avoir à écrire du code supplémentaire ou à investir dans des ressources additionnelles. Par exemple, si le programmeur a besoin d'utiliser Python pour certaines tâches mais souhaite avoir la rapidité du C++ pour d'autres, il est possible de facilement les combiner dans un projet avec Julia. Des entreprises comme Julius Technologies s'efforcent de combler le fossé entre plusieurs langages avec Graph Computing et Julia.


Plateformes flexibles

Julia offre également une certaine flexibilité en ce qui concerne ses plateformes ; elle prend en charge Windows, Mac OS X et Linux. Cela signifie que, quel que soit le type d'appareil auquel vos utilisateurs ont accès, ils pourront faire l'expérience de votre application ou de votre site Web sans aucun problème ou retard dû à une incompatibilité entre les plateformes. Il y a également un nombre croissant d'intégrations web en cours de réalisation grâce à l'équipe de Pluto.jl, ce qui devrait élargir considérablement le public qui peut utiliser Julia.

La vitesse et l'efficacité de Julia

Une des caractéristiques les plus puissantes de Julia est son extensibilité : on peut ajouter de nouvelles méthodes à des fonctions précédemment définies, et utiliser des méthodes précédemment définies sur de nouveaux types. Parfois, ces nouvelles entités obligent Julia à recompiler le code pour tenir compte des changements dans la version. Cela se produit en deux étapes : d'abord, le code « obsolète » est invalidé, le marquant comme impropre à l'utilisation ; ensuite, si nécessaire, le code est à nouveau compilé à partir de zéro en tenant compte des nouvelles méthodes et des nouveaux types.

Les premières versions de Julia étaient quelque peu conservatrices, et invalidaient l'ancien code dans certaines circonstances où il n'y avait pas de changement réel dans la version. De plus, il y avait de nombreux endroits où Julia et ses bibliothèques standards étaient écrites d'une manière qui ne permettait pas l'inférence de type de Julia. Étant donné que le compilateur devait parfois invalider du code juste parce qu'une nouvelle méthode pouvait s'appliquer, toute incertitude sur les types amplifie le risque et la fréquence d'invalidation.

Dans ces anciennes versions de Julia, la combinaison de ces effets rendait l'invalidation très répandue : le simple chargement de certains paquets entraînait l'invalidation de 10 % du code précompilé de Julia. Le délai de recompilation pouvait parfois rendre les sessions interactives plus lentes.

Julia et ses bibliothèques standards ont fait l’objet d’une refonte complète pour aider l'inférence de type à arriver plus souvent à une réponse concrète. Le résultat est un langage Julia plus léger, plus rapide et considérablement plus réactif et agile dans les sessions interactives, surtout grâce à une invalidation de méthodes plus précise.

Pour Kilpatrick, l’une des principales raisons pour lesquelles les startups se tournent vers Julia est qu'il offre une vitesse et une efficacité inégalées par rapport à d'autres langages. Cela le rend idéal pour les entreprises qui ont besoin de traiter de grandes quantités de données rapidement et avec précision. « Julia peut faire plus en moins de temps que de nombreux autres langages de programmation, ce qui en fait un excellent choix pour les entreprises qui ont besoin d'un délai d'exécution rapide pour leurs projets axés sur les données », soutient Kilpatrick.

Accélération du chargement

Bien que la stratégie de Julia ait toujours été de donner la priorité à la fiabilité et à la reproductibilité sur toutes les autres préoccupations, pour les concepteurs, dans le passé, cela a eu un coût. La solution aux problèmes de fiabilité et de reproductibilité était d'isoler plus complètement les binaires installés et de les compiler en utilisant le framework BinaryBuilder.jl. Les bibliothèques construites à partir de BinaryBuilder.jl sont le plus souvent utilisées par le biais de paquets dits JLL qui fournissent une API normalisée que les paquets Julia peuvent utiliser pour accéder aux binaires fournis.

Cette facilité d'utilisation et la fiabilité de l'installation ont entraîné une augmentation considérable des temps de chargement par rapport au vieux temps où les paquets Julia devaient aveuglément charger toutes les bibliothèques qui se trouvaient sur le chemin de recherche des bibliothèques. Pour illustrer le problème, dans Julia 1.4, le chargement de la pile GTK+3 nécessitait 7 secondes alors qu'il prenait environ 500 ms sur la même machine dans les versions précédentes.

Après de nombreux mois de travail acharné et de recherches minutieuses, les concepteurs de Julia ont annoncé avec beaucoup de bonheur que la même pile de bibliothèques prend moins de 200 ms à charger en utilisant Julia v1.6 sur la même machine. Le travail consenti pour réduire la taille des paquets JLL a abouti à la création d'un nouveau paquet, JLLWrappers.jl. Ce paquet fournit des macros qui génèrent automatiquement les liaisons nécessaires à un paquet JLL et ce en utilisant le nombre minimum de fonctions et de structures de données possible.

En limitant le nombre de sauvegardes et de structures de données, ainsi qu'en centralisant les éléments de code modèle que chaque paquetage JLL utilise, Julia est en mesure non seulement d'améliorer considérablement les temps de chargement, mais aussi les temps de compilation. En plus, les améliorations apportées aux API des paquets JLL peuvent désormais être réalisées directement dans JLLWappers.jl sans avoir à redéployer des centaines de JLL.

La polyvalence de Julia

Une autre raison pour laquelle les startups investissent dans Julia est qu'elle est incroyablement adaptable. Il peut être utilisé pour tout, de l'analyse statistique et des algorithmes d'apprentissage automatique aux applications web et aux programmes de traitement d'images. Ce large éventail de capacités fait de Julia un choix attrayant pour les entreprises qui ont besoin d'un langage de programmation capable de gérer tout type de projet qu'elles pourraient avoir.

La plupart des applications de Julia se situent dans l'écosystème de l'informatique scientifique, mais il est même possible de faire des flux de travail comme le développement web.


Avantage concurrentiel

Les startups évoluent généralement dans des espaces concurrentiels. Des espaces généralement dominés par de grands acteurs comme Google, AWS ou Microsoft (dans le cas du cloud). Pour que les startups puissent lutter contre ces acteurs en place, elles ont besoin de quelque chose de radicalement différent de ce que font ces grandes entreprises.

Kilpatrick pense et fait savoir que « pour de nombreuses startups, cela signifie utiliser le langage de programmation Julia. » « La facilité d'utilisation de Julia, sa forte communauté, son écosystème en expansion et sa rapidité font de ce langage un choix naturel et pour l'instant, cela se manifeste dans le domaine des talents », écrit-il. 2022 a été une année énorme pour l'embauche et des entreprises comme RelationalAI et JuliaComputing ont continué à recruter de nombreux contributeurs clés de l'écosystème Julia.

Source : Analysis by Logan Kilpatrick

Et vous ?

L'analyse de Logan Kilpatrick sur la raison du choix de Julia par les startups est-elle pertinente ? Partagez-vous cet avis ?

Que pensez-vous du langage de programmation Julia ?

Voyez-vous en ce langage un potentiel pour l'avenir de la programmation ?

Voir aussi :

Le langage de programmation Julia ne cesse de gagner en adoption au sein de la communauté scientifique : hausse de 87 % des téléchargements sur 2020, en raison de son rapport simplicité-performance

La version 1.8 du langage Julia est disponible, elle apporte la temporisation de la charge du paquet, une amélioration du support pour Apple Silicon, un nouveau planificateur par défaut pour @threads