Julia 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 (Matlab, R, Scilab, Python, etc.). Il fournit un compilateur sophistiqué, un système de types dynamiques avec polymorphisme paramétré, une exécution parallèle distribuée, des appels directs de fonctions C, Fortran et Python.
La bibliothèque, essentiellement écrite dans le langage Julia lui-même, intègre également des bibliothèques en C et Fortran pour l'algèbre linéaire, la génération des nombres aléatoires, les FFT et le traitement de chaînes de caractères. Les programmes Julia sont organisés autour de la définition de fonctions, et de leur surcharge autour de différentes combinaisons de types d'arguments2
Le but de ces vidéos est de montrer (sur un exemple) comment Julia permet de développer rapidement des codes scientifiques/techniques clairs, concis et performants. Il ne s'agit donc pas d'une introduction à Julia visant à faire un tour, aussi complet que possible, des fonctionnalités du langage, et encore moins d'un comparatif avec d'autres langages.
La première vidéo (https://www.youtube.com/watch?v=BLcNv_f75kI) montre à quoi ressemble le développement d'un petit projet en Julia.
La deuxième (https://www.youtube.com/watch?v=Hy90EsYlEbc) poursuit l'exemple pour discuter des performances des boucles Julia, du broadcast et de l'utilisation du calcul sur GPU dans des cas simples.
La vidéo suivante (excellente) de Robin Deits est beaucoup plus dans cet esprit https://youtu.be/qLO-yaUkLKE .
Je pense que Julia peut permettre d’accroître très significativement la productivité, la qualité et la généralité des codes scientifiques. Au reste, si la performance des codes Julia est une condition nécessaire pour l'adoption par la communauté scientifique, les notions de composabilité (multiple dispatch), de reproductibilité (environnement et système de package), de concision (macro, différentiation automatique...) me semblent au moins aussi importantes.
Pour finir, l'examen (concision, généralité, performance) des projets scientifiques actuellement développés en Julia est sans doute le meilleur moyen de se faire une idée juste du potentiel du langage.
Voici quelques liens liés à l'utilisation de JULIA
- FEM : https://github.com/gridap/Gridap.jl
- Scientific ML : https://github.com/SciML/SciMLTutorials.jl
- CLIMA/Océans : https://github.com/CliMA/Oceananigans.jl
- https://github.com/CliMA/ClimateMachine.jl
- Chimie quantique : https://github.com/JuliaMolSim/DFTK.jl
- Ressources : https://github.com/Thierry-Dumont/BenchmarksPythonJuliaAndCo
Nous proposons une première vidéo qui pourra intéresser ceux d'entre-vous qui ont entendu parler de Julia et qui se poseraient les questions suivantes :
- à quoi ressemble le développement de code scientifique/technique en Julia ?
- à quoi ressemblent les codes Julia ?
- quel est l'impact de la latence et du modèle de compilation Julia (JAOT) sur le développement ?
https://www.youtube.com/watch?v=BLcNv_f75kI
Cette vidéo présente le processus de développement (workflow) d'un (petit) projet de simulation en Julia fondé sur VS Code et les paquets Revise.jl, PkgSekeleton.jl et Plots.jl.
Poursuivant l'exemple de cette vidéo, une seconde vidéo permet de comprendre :
- la performance des codes Julia (boucles et broadcast),
- le calcul sur GPU en Julia (CUDA.jl),
- et la visualisation interactive (Makie.jl).
https://www.youtube.com/watch?v=Hy90EsYlEbc