VT2017 Julia

=Julia=


 * Auteur : Rémi Savary
 * Enseignants : Didier Donsez et Georges-Pierre Bonneau
 * Date : 06/10/2017

=Historique= Jeff Bezanson, Stefan Karpinski, Viral B. Shah et Alan Edelman ont commencé à travailler sur Julia en 2009. En 2012, l'équipe a créé un site web expliquant leur travail sur Julia, ainsi que l'objectif recherché du langage. Depuis, une communauté c'est créée, et Julia compte aujourd'hui plus de 1,2 millions de téléchargements. Une autre preuve du dynamisme actuel du langage est fourni par GitHub: le projet compte presque 10 000 stars, et plus de 100 pull requests effectués par semaine.

=Résumé= Julia est un langage conçu pour permettre une programmation de haut niveau, et à hautes performances adapté pour le calcul scientifique. La syntaxe est inspirée notamment de Python, R, Matlab. Julia offre une bibliothèque contenant de fonctions mathématiques, écrites souvent en Julia, mais contient aussi des bibliothèques C et Fortran quand celles ci ont fait preuve de leur efficacité, notamment pour l'algèbre linéaire, la génération des nombres aléatoires... De plus, la communauté Julia développe régulièrement de nouvelles bibliothèques, dans le but d'avoir un environnement aussi fourni que Python.

=Abstract= Created in 2009, Julia is a high level programming language, made for scientific calculation. With a syntax inspired from Python, R and Matlab, Julia possesses a lot of useful libraries, mostly written in Julia, but also in C and Python. Julia's community is very active and a lot of packages are developed, in order to reach the same amount of packages and possibilities than Python. Julia also provides great performances, and supports parallel and distributed algorithms. =Principales caractéristiques= D'après le site officiel de Julia, https://julialang.org/, voici les principales fonctionnalités du langage:
 * Un typage dynamique
 * Appel possible de fonctions issues de C et Python
 * Un gestionnaire de paquets intégré
 * Conçu pour le parallélisme et le calcul distribué
 * Prise en charge d'Unicode
 * Présence d'un shell permettant la gestion de processus
 * Performances élevées, proches de celles de C
 * Distribution multiple : permet de définir le comportement des fonctions selon leurs paramètres
 * Open source (licence MIT)

=Interfaces d'utilisation= Julia fournit une interface en console, permettant d'utiliser le shell, d'importer des packages. Voici l'interface proposée:

Une autre façon d'utiliser Julia est d'utiliser Jupyter notebook (http://jupyter.org/). Cette application web permet de programmer, de compiler et de voir les résultats obtenus. Voici un aperçu:

=Performances= L'objectif de Julia est de fournir un langage haut niveau mais ayant des performances très élevées. Au moyen d'un compilateur Just In Time, les performances de Julia mesurées sur des algorithmes de base avoisinent celles de C, un langage référence en terme de vitesse, et sont bien meilleures que d'autres langages de calcul comme R et Matlab. On peut voir les comparaisons sur le graphique ci-dessous:

A noter que les performances de ce benchmark sont relatives à celles de C (performance de C = 1).

=Références=
 * https://julialang.org/
 * https://github.com/JuliaLang/
 * https://en.wikipedia.org/wiki/Julia_(programming_language)
 * http://jupyter.org/