VT2016 Julia: Difference between revisions

From air
Jump to navigation Jump to search
(Created page with "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 2...")
 
No edit summary
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 e 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.


« 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 20: Line 20:
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.
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 :
=3 Quelques fonctionnalités majeurs :=


Sous licence MIT : libre et open source
Sous licence MIT : libre et open source

Revision as of 11:01, 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 e 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