Utilisateur:Anomaaaa/Brouillon

Julia
Paradigme Dispatch multiple
Typage dynamique
Influencé par MATLAB, R, Ruby, Perl, Python
Écrit en Julia
Système d'exploitation Multi-plateformes
Licence Licence MIT[1]
Extension de fichier .jl

Julia est un langage de programmation de haut niveau, performant et dynamique. Il est conçu et est connu pour avoir une syntaxe simple d'utilisation similaire à Python ou R, tout en ayant des performances proches de langages de bas niveau tels que C ou Rust. Possédant également des capacités natives avancées en calcul parallèle, Julia est principalement utilisé pour le calcul scientifique et les applications de calcul numérique. Ses principaux domaines d'utilisation comprennent par exemple la science des données, la modélisation numérique (en) ou encore le traitement d'images.

Le design de Julia est spécifiquement conçu pour être dynamique tout en étant performant : son paradigme principal est le dispatch multiple, il possède un ramasse-miettes performant pour la gestion de la mémoire et utilise une compilation à la volée.

Julia possède une grande interopérabilité : de nombreux langages peuvent appeler du code Julia directement, et inversement.

Caractéristiques

modifier

Julia combine les avantages des langages compilés (tels que C et Fortran) avec la flexibilité des langages dynamiques.

Syntaxe

modifier

Julia s'est inspiré sur les langages avec une syntaxe lisible tels que Python ou Ruby. Un code Julia est structuré en blocs d'expressions qui commencent par un mot clé tel que function ou if et finit par end. Par convention, une indentation est faite pour chaque nouveau bloc. Il y a souvent le choix entre une syntaxe concise et une autre plus descriptive en Julia.

Fonction factorielle en Python Fonction factorielle en Julia
def factorielle(n):
    return n * factorielle(n - 1) if n > 1 else 1
function factorielle(n)
    return if n > 1
        n * factorielle(n - 1)
    else
        1
    end
end

Julia supporte le standard Unicode, ce qui peut être pratique pour des calculs scientifiques. Par exemple, pour cette longue formule

En Fortran En Julia
satrec%cc4 = 2.0d0 * satrec%no_unkozai * coef1 * satrec%ao * satrec%omeosq & 
    * (satrec%eta * (2.0d0 + 0.5d0 * etasq) + satrec%ecco * & 
    (0.5d0 + 2.0d0 * etasq) - satrec%j2 * tsi / (satrec%ao * psisq) * & 
    (-3.0d0 * satrec%con41 * (1.0d0 - 2.0d0 * eeta + etasq * & 
    (1.5d0 - 0.5d0 * eeta)) + 0.75d0 * satrec%x1mth2 * & 
    (2.0d0 * etasq - eeta * (1.0d0 + etasq)) * cos(2.0d0 * satrec%argpo)))
C4 = 2nll0 * QOMS2T * aux2 * (
    2η * (1 + T(e₀) * η) + (1 / 2) * (T(e₀) + η^3) -
    2k₂ * ξ / (a₁₁₀ * aux0) * (
        3 * (1 - 3θ²) * (1 + (3 / 2) * η² - 2T(e₀) * η -
        (1 / 2) * T(e₀) * η³) +
        (3 / 4) * (1 - θ²) * (2η² - T(e₀) * η - T(e₀) * η³) * cos(2T(ω₀))
    )
)

Ses caractéristiques principales comprennent :

  • Performance : Lorsqu'il est bien écrit, le code Julia offre des performances proches de celle du code natif compilé[2].
  • Syntaxe simple : Sa syntaxe est simple et facile à apprendre. Le standard Unicode est supporté, ce qui permet par exemple d'écrire «π» au lieu de «pi»[3].
  • Typage Dynamique : Le langage utilise un système de types dynamique qui permet une grande flexibilité tout en offrant la possibilité de faire des optimisations à la compilation.
  • Dispatch Multiple : Julia utilise le dispatch multiple pour la résolution de fonctions en fonction des types d'arguments, permettant une surcharge de fonction puissante et flexible.
  • Interopérabilité : Julia peut interagir directement avec des bibliothèques C, Fortran, et Python, facilitant l'intégration avec des outils existants.
  • Parallélisme et Concurrence : Le langage prend en charge le calcul parallèle et la gestion des tâches concurrentes, permettant des performances accrues pour des calculs intensifs.


Le design de Julia s'appuie principalement sur le Dispatch multiple, appuyé par sa compilation à la volée. Pour Julia, une fonction est un simple nom, qui peut posséder plusieurs méthodes. Une méthode est une implémentation spécifique de la fonction selon le type de chaque paramètre de celle-ci. De cette manière, il est possible de créer une implémentation complètement différente pour chaque combinaisons de types possibles. Si les types sont connus pendant la compilation, seule la bonne méthode est compilée et utilisée. Par exemple, la simple opération 1+2 est en fait pour Julia +(1, 2), où + est la fonction, et +(::Int, ::Int) la méthode, spécifique et optimisée pour des nombres entiers.

Exemple de Code

modifier

Voici un exemple de programme Julia qui affiche "Hello, world !" :

println("Hello, world!")

Pour calculer la somme des carrés des nombres de 1 à 10 en Julia, vous pouvez utiliser le code suivant :

function somme_des_carres(n)
   somme = 0
   for i in 1:n
       somme += i^2
   end
   return somme
end
println(somme_des_carres(10))  # Affiche 385

Histoire

modifier

Le développement de Julia a débuté en 2009 par Jeff Bezanson, Stefan Karpinski, Viral B. Shah, et Alan Edelman. Le langage a été officiellement lancé le 14 février 2012 avec la publication d'un article de blog expliquant sa mission. Julia visait à combiner la rapidité des langages compilés avec la flexibilité des langages dynamiques. En 2018, Julia a atteint sa version 1.0, marquant une étape importante dans sa maturité et sa stabilité.

Depuis son lancement, la communauté Julia a considérablement grandi. La conférence annuelle JuliaCon attire des milliers de participants chaque année et offre une plateforme pour les développeurs et les utilisateurs de Julia pour partager leurs travaux et innovations.

Versions

modifier
  • Julia 0.7 et 1.0 : Lancements en août 2018, marquant une étape importante dans la stabilisation du langage.
  • Julia 1.6 : Introduit des améliorations significatives, y compris une précompilation parallèle pour accélérer le chargement des packages.
  • Julia 1.9.0 : Lancée en mai 2023, elle comprend de nombreuses améliorations de performance, y compris des optimisations significatives pour le code précompilé.

JuliaCon

modifier

Depuis 2014, JuliaCon est l'événement majeur pour la communauté Julia, offrant une plateforme pour des présentations, des ateliers et des discussions sur le langage. La conférence a eu lieu dans divers lieux, y compris le MIT et l'Université du Maryland à Baltimore. JuliaCon 2020 et 2021 se sont déroulées virtuellement en raison de la pandémie, attirant un public mondial de plus de 43 000 participants uniques et plus de 300 présentations.

Compagnie Julia

modifier

La société JuliaHub, Inc., fondée en 2015 sous le nom de Julia Computing, Inc., a été créée pour soutenir le développement et la diffusion de Julia. Les fondateurs incluent plusieurs des créateurs du langage Julia, tels que Viral B. Shah et Alan Edelman.

Références

modifier
  1. « julia / LICENSE.md », sur GitHub
  2. (en) « A programming language benchmark », sur github.com/attractivechaos/plb2, (consulté le )
  3. (en) « Unicode Input · The Julia Language », sur docs.julialang.org (consulté le )

Liens externes

modifier