URL: https://linuxfr.org/news/version-1-0-de-julia Title: Version 1.0 de Julia Authors: claudex reno, Nÿco, Brndan, olivierweb, Bruno Michel et Xavier Teyssier Date: 2012年02月19日T13:47:26+01:00 License: CC By-SA Tags: julia, dataviz, calcul_scientifique, distribué et sciences Score: 40 Julia, un langage de programmation peu connu, a atteint la version 1.0 (disponible uniquement sur Linux et Mac OS X actuellement). Le langage a été créé par des scientifiques et se veut donc optimisé pour leurs besoins : le calcul scientifique, l'apprentissage automatique (_machine learning_ en anglais), la fouille de données (_data mining_), le calcul algébrique linéaire à grande échelle et le calcul distribué et parallèle. Ils veulent un langage : - Très simple à apprendre, mais qui puisse aussi convenir aux « hackeurs sérieux » : Julia a une syntaxe facile à apprendre pour les utilisateurs de Matlab, tout en étant [homoiconique](http://fr.wikipedia.org/wiki/Homoiconicit%C3%A9) avec des *vrais macros* comme le Lisp. - Aussi utilisable pour la programmation « normale » que Python, aussi simple pour les statistiques que R, aussi naturel pour le traitement de texte que Perl (Julia supporte les [PCRE](http://fr.wikipedia.org/wiki/PCRE "Définition Wikipédia")), aussi puissant pour l'algèbre linéaire que Matlab et aussi bon pour lier des programmes ensemble que le shell. Avec une implémentation : - Open source avec une licence peu contraignante : Julia est sous licence MIT. - Aussi performante que le C tout en ayant la dynamicité de Ruby : quelques benchmarks sont sur la page d'accueil de Julia qui est dynamiquement typé avec annotation optionnelle de type (et dispatch multiple). - Fournissant un mode interactif et compilé. Bref, ils sont ambitieux ! Leur manuel de référence est assez bien fait : à vous de juger... *NdA : Merci à [Nÿco](http://linuxfr.org/users/nyco), [olivierweb](http://linuxfr.org/users/olivierweb), [Brndan](http://linuxfr.org/users/brndan) et particulièrement à [reno](http://linuxfr.org/users/reno) pour leur aide lors de la rédaction de cette dépêche.* ---- [Julia](http://julialang.org/) [Pourquoi avoir créé Julia](http://julialang.org/blog/2012/02/why-we-created-julia/) [Le manuel de référence](http://julialang.org/manual/) ---- #Exemples ##Hello world Un hello world en ligne de commande utilisant l'interpolation de chaîne. ```text julia> whom = "world" "world" julia> "Hello, $whom.\n" "Hello, world.\n" ``` ##Mandelbrot Un exemple d'une fonction pour avoir un aperçu de la syntaxe. Noter qu'ici z est normalement un [complexe](http://fr.wikipedia.org/wiki/Nombre_complexe), qui tout comme les [nombre rationnels](http://fr.wikipedia.org/wiki/Nombre_rationnel), sont gérés "nativement" dans Julia. ```text function mandel(z) c = z maxiter = 80 for n = 1:maxiter if abs(z)> 2 return n-1 end z = z^2 + c end return maxiter end ``` ##Calcul parallèle Le calcul parallèle est très simple, il se fait à l'aide de la macro @spawn. Le code suivant va simuler le lancement de deux pièces en même temps et compter le nombre de « face » : ```text function count_heads(n) c = 0 for i=1:n c += randbit() end c end a = @spawn count_heads(100000000) b = @spawn count_heads(100000000) fetch(a)+fetch(b) ``` Personnellement (reno), je trouve que c'est un langage qui a de bonnes idées, avec tout de même quelques éléments qui peuvent être gênants/surprenants : - L'indice des tableaux commence à 1 plutôt qu'à 0 : l'héritage de Matlab probablement, mais quand on est habitué au C... - Pas de détection des débordements: "x::Int8 = 1000" ne retourne pas d'erreur (x vaut -24), curieux pour un langage prévu pour les scientifiques! - Les String bien qu'UTF-8, ont un opérateur de tableau [] qui retourne les octets sous-jacents : en UTF-8 l'accès par index étant ambigu (entre les octets et les codepoints), cela devrait être fourni par des fonctions explicites : une String UTF-8 *n'est pas* un tableau (oui, je sais : [bikeshedding](http://fr.wikipedia.org/wiki/Loi_de_futilit%C3%A9_de_Parkinson)) !

AltStyle によって変換されたページ (->オリジナル) /