Langage Julia, un concurrent pour Python ?


Publié le 09-02-2021 par Modérateur FREELANCE INFO



Le langage de programmation Julia est relativement récent. Rendu public en 2012 et destiné au calcul scientifique, il semble encore peu connu dans l’IT. Pourtant, en 2020, son taux d’utilisation a augmenté de près de 87 % atteignant presque 24 millions de téléchargements en une année. Durant la même période Julia est passé à la 23e place de l’index TIOBE. Le PDG de cette entreprise, spécialisée dans l’audit qualité des codes et logiciels, a par ailleurs déclaré que Julia ferait très probablement partie du top 20 des langages utilisés dès 2021. Alors Julia est-il un concurrent sérieux pour Python ?

L’objectif de Julia : combler les lacunes de Python

Le langage de programmation Julia a été créé par 4 informaticiens et mathématiciens dans le but de combler les lacunes des programmes utilisés pour le calcul scientifique et le traitement des données.

Lors de son lancement officiel, ses créateurs ont ainsi déclaré vouloir « un langage open source, avec une licence libérale ». Ils souhaitaient combiner :

  • la vitesse du C,

  • le dynamisme de Ruby,

  • l’homoiconicité de Lisp (une propriété permettant de développer des programmes évolutifs, capables de s’auto-optimiser),

  • la syntaxe mathématique familière de Matlab.

Julia devait aussi être un langage compilé, facile à apprendre et pouvant être utilisé aussi bien pour la programmation générale que pour les statistiques, l’algèbre linéaire ou encore la gestion des chaînes de caractères à la manière de Perl.

Moins d’une dizaine d’années plus tard, le succès croissant du langage semble prouver qu’il a atteint ces aspirations.

Les avantages du langage de programmation Julia

Un langage compilé

Julia est un langage compilé « à la volée », aussi appelé « juste à temps » (JIT). Sa compilation nécessite donc moins de ressources mémoire, car seules les parties de code requises au moment de l’exécution sont compilées en code machine.


Il est donc possible d’obtenir beaucoup plus rapidement du code machine optimisé.Avec son framework de compilation LLVM (Low Level Virtual Machine), Julia parvient  même à égaler la vitesse du langage C.

Une grande interactivité

Julia intègre une REPL (read–eval–print loop ) ou boucle de lecture-évaluation-impression. De façon similaire aux invites de commandes telles que Bash ou PowerShell, la REPL prend les entrées d’un utilisateur (lecture), les exécute (évaluation) et renvoie (impression) le résultat.

L’avantage principal est que la REPL n’a pas besoin de compiler ou de déployer le code d’où un temps de réponse très rapide ( inférieur à 100 ms) pour tester des scripts et commandes quasiment en direct.

Le débogueur de Julia exécute également le code dans une REPL locale ce qui permet de parcourir les sorties, d’ajouter des points d’arrêts et d’inspecter les variables pendant l’exécution.

Alliance des typages dynamiques et statiques

À l’instar de Python, la syntaxe de Julia est simple et concise. Ce langage de programmation propose aussi un typage facultatif.

Julia est dynamique (les types sont déterminés à la volée par le compilateur lors de l’exécution), mais il reste possible d’en ajouter à tout moment. Julia offre également l’option de créer et utiliser des types à partir d’objets.

On peut donc déclarer un entier de deux façons équivalentes :

 

x::int 32 = 10
x = 10

Cette propriété est notamment intéressante pour les fonctions qui disposent ainsi d’une distribution multiple (polymorphisme). Chaque appel à une fonction ou à une méthode est distribué dynamiquement selon le type dérivé de l’objet depuis lequel la fonction ou méthode a été appelée.

Prise en charge de bibliothèques externes et de la génération automatique

Les programmes écrits en Julia peuvent générer d’autres programmes de ce langage. On appelle ce processus la génération automatique ou métaprogrammation. C’est la fameuse homoiconicité de Lisp, dont les créateurs du langage voulaient se rapprocher. 

Julia représente son propre code comme une structure de données et d’objets pouvant donc être créés et manipulés. Un programme peut alors se transformer et générer son propre code. Cela permet de concevoir automatiquement du code sophistiqué sans étapes de construction supplémentaires.

Julia peut également s’interfacer avec des bibliothèques externes des langages C, Fortran. Grâce à un package, il est aussi possible d’appeler la bibliothèque PyCall, et même de partager des données entre Python et Julia.

Les fonctions des bibliothèques étrangères peuvent être appelées, sans déclaration explicite avec la syntaxe ccall. Par exemple, voici en Julia l’appel à la fonction « clock », disponible dans la bibliothèque standard de C : 

julia> t = ccall(:clock, Int32, ())
2292761

Cependant, ce dernier avantage est aussi destiné à combler une des faiblesses du langage : le peu de packages et de bibliothèques disponible

Un langage trop jeune pour rivaliser avec Python ?

Malgré sa communauté active et ses plus de 1000 contributeurs, Julia reste loin derrière Python. Ce dernier existe depuis 30 ans et connaît, depuis son origine, une popularité croissante avec près de 100 millions d’utilisateurs en 2020.

Le  manque de contribution ne vient pas de la qualité du langage, mais plutôt de sa nouveauté puisque Julia n'est apparu que depuis une dizaine d’années et est encore en développement. Cette "jeunesse" se traduit par des bibliothèques moins nombreuses et moins maintenues que pour les autres langages.

Ainsi, si les bibliothèques de Julia comme Flux et Knet rendent ce langage performant pour l’apprentissage automatique et le deep learning, la grande majorité de ces tâches est toujours réalisée avec TensorFlow (une plateforme pour le machine learning) ou PyTorch (une bibliothèque Python). De même, dans le domaine des statistiques, même si beaucoup de packages existent, Julia est encore loin derrière R. 

Pour les mêmes raisons, si Julia dispose d’une documentation riche et structurée, son support en cas de problèmes reste limité. La plupart des développeurs utilisent Julia pour la recherche ou à titre personnel, et beaucoup d’entre eux n’ont commencé à manipuler le langage que très récemment.

D’autres problèmes ont également été remontés avec en premier lieu une latence du compilateur. Celui-ci serait 27 fois plus lent que celui de Python et 187 fois plus lent que celui de C.

Si Julia propose des fonctionnalités et avantages très pratiques notamment dans le domaine des data science, il est encore loin de pouvoir rivaliser avec Python. Cependant, Julia reste un langage à surveiller, car il est en forte évolution et expansion. De plus, la progression de Julia pourrait aussi inciter les programmeurs Python à corriger les faiblesses de leur langage. Cette concurrence ne peut donc que pousser les deux langages à s’améliorer.
 

Sources : 

Les statistiques sur l’utilisation de Julia en 2020 : https://juliacomputing.com/blog/2021/01/newsletter-january/

La documentation officielle de Julia : https://docs.julialang.org/en/v1/


 



Modérateur FREELANCE INFO