IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Julia Discussion :

[Julia] Sortie de Julia 0.4


Sujet :

Julia

  1. #1
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 585
    Points
    188 585
    Par défaut [Julia] Sortie de Julia 0.4
    Julia est un langage de programmation assez récent prévu pour le calcul scientifique (sa première version est sortie en 2009). Similaire à MATLAB au niveau de la syntaxe, il est de très haut niveau et dynamique, mais sa conception même lui permet d’atteindre une performance comparable aux langages statiques comme C ou Fortran, par l’utilisation de la compilation juste à temps (JIT). Selon les tests de performance publiés sur le site officiel, il peut être plus rapide que le C ou jusque deux fois plus lent — son principal concurrent, MATLAB, pouvant être plusieurs milliers de fois plus lent. Pour y arriver, l’interpréteur n’utilise pas la programmation orientée objet, mais un concept dérivé : la fonction à appeler est déterminé en fonction du type des arguments (multiple dispatch) ; au besoin, il peut aussi directement appeler du code C ou Fortran, directement depuis la bibliothèque standard (des modules externes permettent de faire la même chose pour C++ et Python).

    En tant que langage spécifiquement prévu pour le calcul scientifique, un bon nombre de bibliothèques sont d’ores et déjà disponibles dans le domaine pour former une bibliothèque standard plus que conséquente, principalement pour l’algèbre linéaire, la génération de nombres aléatoires et le traitement du signal. Notamment, toutes les fonctions de BLAS existent, mais sont également intégrées dans la syntaxe du langage (* pour la multiplication matricielle, \ pour la résolution de systèmes linéaires, ⋅ pour le produit scalaire, × pour le produit vectoriel, etc.). Ces opérateurs utilisent les symboles habituels dans la littérature (de même, tout caractère Unicode peut être utilisé comme nom de variable).

    Contrairement à bon nombre de langages, le parallélisme est pris en charge directement dans la syntaxe du langage. Par exemple, pour mener un grand nombre d’expériences de pile ou face sur des grappes de calcul, le code est extrêmement simple :

    Code julia : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    nheads = @parallel (+) for i=1:100000000
      int(randbool())
    end

    Parmi les fonctionnalités très attendues de cette nouvelle version 0.4 RC1, la précompilation évite de compiler les modules importés à chaque exécution d’un script : ils sont convertis en code binaire une fois pour toutes, ce qui améliore fortement les temps de chargement (dans certains cas, d’une dizaine de secondes à moins d’une). De plus, cette fonctionnalité ne réduit pas la performance du code à l’exécution : le même moteur de compilation est utilisé (LLVM), il est seulement moins souvent appelé.

    La documentation des modules pour la version 0.3 se faisait par le module Docile.jl et est maintenant intégrée directement au niveau du langage. Le texte écrit en Markdown et est accessible depuis l’invite de commande. Cette fonctionnalité est incrémentale, de telle sorte que, si un fichier est modifié, seules les méthodes ayant subi des changements seront recompilées.
    Un autre point fort du langage est la métaprogrammation, avec des macros très similaire à l’esprit de LISP : ces macros peuvent prendre du code en argument, représenté comme une structure de données (arbre syntaxique abstrait), manipulable à l’envi, afin de générer du code à l’exécution. Ces fonctionnalités sont très pratiques pour développer des langages dédiés (comme JuMP pour la programmation mathématique), intégrés directement dans le code Julia. À ce sujet, cette version 0.4 utilise la métaprogrammation pour définir des fonctions générées : son implémentation travaille uniquement sur le type des variables, la valeur retournée étant l’expression à évaluer lors de l’appel effectif de cette fonction sur des valeurs données — sans que le code qui appelle cette fonction soit conscient de ces détails.

    La version finale de Julia 0.4 est attendue assez rapidement, une fois les derniers défauts corrigés. Les nouvelles fonctionnalités seront ajoutées dans la branche Julia 0.5, qui pourrait également apporter quelques changements qui casseront la compatibilité avec le code existant. Une nouveauté attendue sera la gestion du débogage interactif (actuellement implémenté dans un module externe, qui nécessite d’instrumenter le code : Debug.jl).

    Source : Julia v0.4.0 Release Notes.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 585
    Points
    188 585
    Par défaut
    La version finale de Julia 0.4 est disponible et apporte la compilation incrémentale des paquets
    pour réduire le temps de chargement


    À peine un mois après la sortie de sa RC 1, plus d’un an après sa dernière version mineure (0.3 en août 2014), la version finale de Julia 0.4 est sortie. Ce langage de programmation assez récent est principalement prévu pour le calcul scientifique. Similaire à MATLAB au niveau de la syntaxe, il est de très haut niveau et dynamique, tout en atteignant une performance comparable aux langages statiques comme C ou Fortran.

    Pour les utilisateurs, les nouveautés principales de cette version mineure concernent la performance : la compilation incrémentale des paquets, ce qui réduit fortement le temps de chargement des plus lourds d’entre eux ; le ramasse-miette est passé à une implémentation par générations, ce qui améliore la performance dans les cas les plus fréquents par rapport à l’implémentation traçante précédente ; des canaux de communication entre tâches plus rapides. Les types des tuples ont complètement changé, passant de (A,B) à Tuple{A,B}, ce qui est plus cohérent ; de plus, cette refactorisation autorise la graphie field::NTuple{N,T} pour désigner des tuples de N éléments d’un même type.

    Les développeurs de paquets se réjouiront de la finalisation d’autres fonctionnalités, comme la surcharge des appels de fonction (y compris les constructeurs) pour n’importe quel objet (et pas seulement la fonction elle-même) ; en particulier, il devient possible de définir des constructeurs pour des types abstraits. Les fonctions générées donnent un contrôle bien plus grand sur la spécialisation des fonctions lors de la compilation : ces fonctions retournent un code en fonction du type des paramètres (et non une valeur en fonction des valeurs des paramètres pour les fonctions traditionnelles).

    De manière générale, Julia 0.4 a aussi été l’occasion d’améliorer la performance (réduction des vérifications effectuées lors de l’adressage tout en garantissant le même niveau de sécurité) et la flexibilité des tableaux à plusieurs dimensions, des vues sur ces tableaux (SubArray) et de l’itération (avec par exemple la fonction eachindex() pour itérer sur tous les éléments d’un tableau, peu importe le nombre de dimensions, en garantissant une performance optimale) ; les changements implémentés sont listés dans un métaticket. Plus de changements sont prévus pour Julia 0.5, détaillée dans le métaticket Arraypocalypse.

    La communauté Julia a aussi gagné en maturité depuis l’instant de mise à disposition de la version 0.3. Notamment, une série de paquets ont atteint une belle maturité : JuliaOpt pour l’optimisation ; JuliaStats pour les statistiques et l’apprentissage automatique ; JuliaGPU pour l’accès au GPU ; IJulia, une interface en feuilles de calcul basée sur IPython ; Images.jl pour le traitement d’images ; Gadfly et Winston pour les graphiques ; Juno comme environnement de développement.

    Source : Julia 0.4 Release Announcement.

    Voir Aussi :

    Julia : un aperçu des futurs langages de programmation
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

Discussions similaires

  1. Ensemble de Julia
    Par thy-sins dans le forum Général Java
    Réponses: 3
    Dernier message: 02/02/2012, 12h25
  2. [2D/3D] Ensembles de Julia
    Par Cpowa dans le forum Qt
    Réponses: 8
    Dernier message: 16/08/2010, 17h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo