Difference between revisions of "VT2016 Julia"

From air
Jump to navigation Jump to search
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
==Le langage Julia==
+
=Le langage Julia=
   
Développé au MIT depuis 2009 par Jeff Bezanson, Stefan Karpinski, Viral B. Shah, et Alan Edelman, le langage Julia lance sa première version publique en 2012. La version 0.5.0 est sortie e 2016.
+
Développé au MIT depuis 2009 par Jeff Bezanson, Stefan Karpinski, Viral B. Shah, et Alan Edelman, le langage Julia lance sa première version publique en 2012. La version 0.5.0 est sortie en 2016.
   
=1 Pourquoi un nouveau langage ?=
+
==1 Pourquoi un nouveau langage ?==
   
 
Si les langages bas niveau sont plus performants, il nécéssites généralement un temps de développement et des tailles de code plus longs. L’idée derrière Julia est d’inventer un langage aussi performant qu’un bas niveau mais aussi simple et rapide qu’un haut niveau. En effet les utilisateurs finaux (ceux qui font de la programmation technique) ne sont généralement pas intéressés par le code : ils veulent utiliser l'informatique comme un outil, pas passer des heures à programmer.
 
Si les langages bas niveau sont plus performants, il nécéssites généralement un temps de développement et des tailles de code plus longs. L’idée derrière Julia est d’inventer un langage aussi performant qu’un bas niveau mais aussi simple et rapide qu’un haut niveau. En effet les utilisateurs finaux (ceux qui font de la programmation technique) ne sont généralement pas intéressés par le code : ils veulent utiliser l'informatique comme un outil, pas passer des heures à programmer.
Line 9: Line 9:
 
« Julia has the performance of a statically compiled language while providing interactive dynamic behavior and productivity like Python, LISP or Ruby. »
 
« Julia has the performance of a statically compiled language while providing interactive dynamic behavior and productivity like Python, LISP or Ruby. »
 
 
=2 Un nouveau langage pour quoi ?=
+
==2 Un nouveau langage pour quoi ?==
   
 
Julia est un langage orienté scientifique gratuit, multi-plateforme, compilé à la volée, au typage dynamique et inféré, non orienté objet au sens classique mais qui supporte la notion de "multi-dispach" de méthodes, généralisant ainsi la notion d'objets et de méthodes virtuelles.
 
Julia est un langage orienté scientifique gratuit, multi-plateforme, compilé à la volée, au typage dynamique et inféré, non orienté objet au sens classique mais qui supporte la notion de "multi-dispach" de méthodes, généralisant ainsi la notion d'objets et de méthodes virtuelles.
Line 22: Line 22:
 
=3 Quelques fonctionnalités majeurs :=
 
=3 Quelques fonctionnalités majeurs :=
   
Sous licence MIT : libre et open source
+
*Sous licence MIT : libre et open source
Système de typage dynamique : types pour la documentation, l'optimisation et la distribution (dispatch)
+
*Système de typage dynamique : types pour la documentation, l'optimisation et la distribution (dispatch)
Bonne performance, proche de celle de langages à compilation statique comme C
+
*Bonne performance, proche de celle de langages à compilation statique comme C
Gestionnaire de paquets intégré
+
*Gestionnaire de paquets intégré
Macros dans le style Lisp et autres outils de méta-programmation
+
*Macros dans le style Lisp et autres outils de méta-programmation
Appel de fonctions Python : utilisez le paquet PyCall
+
*Appel de fonctions Python : utilisez le paquet PyCall
Appel direct de fonctions C : pas d'API spéciale ou d'enveloppe (wrapper)
+
*Appel direct de fonctions C : pas d'API spéciale ou d'enveloppe (wrapper)
Capacités de type shell puissantes pour la gestion d'autres processus
+
*Capacités de type shell puissantes pour la gestion d'autres processus
Conçu pour le parallélisme et le calcul distribué
+
*Conçu pour le parallélisme et le calcul distribué
Coroutines : fils d'exécution légers (green threading)
+
*Coroutines : fils d'exécution légers (green threading)
Les types définis par l'utilisateur sont aussi rapides et compacts que ceux intégrés au langage
+
*Les types définis par l'utilisateur sont aussi rapides et compacts que ceux intégrés au langage
Génération automatique de code spécialisé et efficace pour les différents types d'arguments
+
*Génération automatique de code spécialisé et efficace pour les différents types d'arguments
Conversions et promotions élégantes et extensibles pour les types numériques et autres
+
*Conversions et promotions élégantes et extensibles pour les types numériques et autres
Prise en charge performante d'Unicode, dont notamment UTF-8
+
*Prise en charge performante d'Unicode, dont notamment UTF-8
  +
  +
=4 sources=
  +
*http://julialang.org/
  +
*https://zestedesavoir.com/articles/78/a-la-decouverte-de-julia/
  +
*http://julialang.org/benchmarks/

Latest revision as of 13:23, 16 February 2017

Le langage Julia

Développé au MIT depuis 2009 par Jeff Bezanson, Stefan Karpinski, Viral B. Shah, et Alan Edelman, le langage Julia lance sa première version publique en 2012. La version 0.5.0 est sortie en 2016.

1 Pourquoi un nouveau langage ?

Si les langages bas niveau sont plus performants, il nécéssites généralement un temps de développement et des tailles de code plus longs. L’idée derrière Julia est d’inventer un langage aussi performant qu’un bas niveau mais aussi simple et rapide qu’un haut niveau. En effet les utilisateurs finaux (ceux qui font de la programmation technique) ne sont généralement pas intéressés par le code : ils veulent utiliser l'informatique comme un outil, pas passer des heures à programmer.

« Julia has the performance of a statically compiled language while providing interactive dynamic behavior and productivity like Python, LISP or Ruby. »

2 Un nouveau langage pour quoi ?

Julia est un langage orienté scientifique gratuit, multi-plateforme, compilé à la volée, au typage dynamique et inféré, non orienté objet au sens classique mais qui supporte la notion de "multi-dispach" de méthodes, généralisant ainsi la notion d'objets et de méthodes virtuelles.

Inspiré de Matlab, Ruby, Python,… il est aussi performant que C ou Fortran grâce à sa compilation à la volé ou « Just in time ». Cette compilation est effectuée en utilisant le projet LLVM, qui consiste en un ensemble d'outils pour créer des compilateurs.

Le cœur du langage est écrit en C, et le parseur en LISP. La quasi-intégralité de la bibliothèque standard est écrite directement en Julia.

S’il se veut « universel », Julia sera plus ou moins facilement utilisable selon votre besoin/domaine. Pour faire du web, peu de frameworks existent, et il vous faudra écrire beaucoup de code bas niveau. De même, pour faire des statistiques, même si beaucoup de packages existent, Julia est encore loin derrière R. Par contre, pour faire de l'optimisation mathématique, de la manipulation d'images ou du machine learning, vous trouverez tout ce qu'il vous faut. Cependant , entre les prochaines versions et la contribution de sa communauté, Julia pourrait bientôt étendre et renforcer son champ d’action à d’autres domaines.

3 Quelques fonctionnalités majeurs :

  • Sous licence MIT : libre et open source
  • Système de typage dynamique : types pour la documentation, l'optimisation et la distribution (dispatch)
  • Bonne performance, proche de celle de langages à compilation statique comme C
  • Gestionnaire de paquets intégré
  • Macros dans le style Lisp et autres outils de méta-programmation
  • Appel de fonctions Python : utilisez le paquet PyCall
  • Appel direct de fonctions C : pas d'API spéciale ou d'enveloppe (wrapper)
  • Capacités de type shell puissantes pour la gestion d'autres processus
  • Conçu pour le parallélisme et le calcul distribué
  • Coroutines : fils d'exécution légers (green threading)
  • Les types définis par l'utilisateur sont aussi rapides et compacts que ceux intégrés au langage
  • Génération automatique de code spécialisé et efficace pour les différents types d'arguments
  • Conversions et promotions élégantes et extensibles pour les types numériques et autres
  • Prise en charge performante d'Unicode, dont notamment UTF-8

4 sources