VT2016 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.
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