« Julia (langage) » : différence entre les versions
Contenu supprimé Contenu ajouté
m v2.05b - Bot T3 PCS#67 - Correction syntaxique (Ponctuation avant une référence) |
m →Caractéristiques : Corrections. |
||
Ligne 77 :
Julia a été conçu pour avoir des performances élevées tout en étant un [[Langage de programmation de haut niveau|langage de haut niveau]]<ref>{{Article|prénom1=Jeff|nom1=Bezanson|prénom2=Stefan|nom2=Karpinski|prénom3=Viral B.|nom3=Shah|prénom4=Alan|nom4=Edelman|titre=Julia: A Fast Dynamic Language for Technical Computing|date=2012|doi=10.48550/ARXIV.1209.5145|lire en ligne=https://arxiv.org/abs/1209.5145|consulté le=2024-11-20}}</ref>. Pour ce faire, il [[Compilation à la volée|compile à la volée]] (JIT) le code Julia en [[Langage machine|code machine]] optimisé à l'aide de [[LLVM]]. La conception de Julia étant faite pour exploiter au mieux cette compilation à la volée, il en résulte des performances proches de celles de langages [[Langage de programmation de bas niveau|bas niveau]] (comme [[C (langage)|C]] ou [[Rust (langage)|Rust]]) et meilleures que d'autres langages JIT (comme [[PyPy|Pypy]] ou {{Lien|trad=LuaJIT}})<ref>{{Article|langue=fr-FR|auteur1=Jade Emy|titre=Programming Language Benchmark v2 (plb2) évalue les performances de 20 langages de programmation sur quatre tâches gourmandes en CPU|périodique=Developpez.com|date=2024-01-03|lire en ligne=https://programmation.developpez.com/actu/352591/Programming-Language-Benchmark-v2-plb2-evalue-les-performances-de-20-langages-de-programmation-sur-quatre-taches-gourmandes-en-CPU/|consulté le=2024-11-22}}</ref>.
Julia étant [[Langage de programmation dynamique|dynamique]], aucune erreur ne sera lancée si le [[compilateur]] n'a pas assez d'information pour optimiser efficacement le code, notamment sur le [[Type (informatique)|type]] des [[Variable (informatique)|variables]] (''type instability''<ref>{{Lien web |langue=en |titre=Type instability · JuliaNotes.jl |url=https://m3g.github.io/JuliaNotes.jl/stable/instability/ |site=m3g.github.io |consulté le=2024-11-22}}</ref>'')''. Ce problème d'optimisation conduit à une baisse notable en performance, ce qui a pour effet de surprendre les nouveaux utilisateurs<ref>{{Lien web |langue=en |titre=Julia is surprisingly slow for some simple iteration |url=https://discourse.julialang.org/t/julia-is-surprisingly-slow-for-some-simple-iteration/104053 |site=Julia Programming Language |date=2023-09-20 |consulté le=2024-11-22}}</ref>{{,}}<ref>{{Lien web |nom=arkie87 |titre=Trying Out Julia, and it Seems Slow for a Compiled Language |url=https://www.reddit.com/r/Julia/comments/ryh992/trying_out_julia_and_it_seems_slow_for_a_compiled/?rdt=50137 |site=r/Julia |date=2022-01-07 |consulté le=2024-11-22}}</ref>. Une page entière de la documentation officielle du langage est dédiée à donner des techniques qui résolvent ce problème<ref>{{Lien web |langue=en |titre=Performance Tips · The Julia Language |url=https://docs.julialang.org/en/v1/manual/performance-tips/ |site=docs.julialang.org |consulté le=2024-11-22}}</ref>.
=== Polymorphisme ===
Le modèle de Julia s'appuie principalement sur le [[Polymorphisme (informatique)|polymorphisme]] ''ad-hoc (''aussi appelé [[dispatch multiple]] ou
ma_fonction(x) = "x peut être de n'importe quel type"
ma_fonction(x::Real) = "x est un nombre réel"
|