Sortie de Julia 0.5

Julia est un langage de programmation assez récent (son développement a commencé en 2012), mais il a déjà réussi à attirer une assez grande communauté autour de lui. Initialement, il est prévu pour le calcul scientifique, en fournissant un langage dynamique et facile à utiliser (comme Python ou MATLAB) tout en gardant une très bonne performance (digne d’un langage compilé : Julia est très proche du C ou du Fortran dans les temps d’exécution).

La version 0.5 vient de sortir, un an après la précédente… et avec pas loin de trois mois de retard sur le programme. Elle ne se focalise pas exclusivement sur la performance, mais plutôt sur les fonctionnalités : certains changements syntaxiques préparent le terrain pour des améliorations de performance pour les prochaines versions du langage. Ses développeurs cherchent à stabiliser le langage dès que possible pour favoriser son adoption : la première version finale, la 1.0, ne devrait plus tarder (courant 2017).

Dans les nouveautés intéressantes pour bon nombre de programmeurs, les expressions de la forme f(i) for i in 1:n sont maintenant des génératrices : elles correspondent à des itérateurs sur les valeurs demandées. Ainsi, pour calculer la somme de toutes ces valeurs, il n’est plus nécessaire de créer un tableau à cette occasion : sum(f(i) for i in 1:n) au lieu de sum([f(i) for i in 1:n]) précédemment (les crochets ne sont plus nécessaires). Toujours au niveau des génératrices, il devient possible d’ajouter des conditions avec le mot clé if et d’effectuer des boucles imbriquées en utilisant plusieurs fois for.

Les opérateurs avec point existent depuis un certain temps et servent à effectuer une opération sur chaque élément séparément (par exemple, a .+ b effectue la somme de chaque élément de a et de b). Désormais, ce point est généralisé pour toutes les fonctions ; l’interpréteur se charge alors d’appeler la fonction broadcast. Dans le futur, ces nouvelles possibilités syntaxiques seront utilisées pour optimiser le code, en fusionnant ces opérations.

Julia étant prévu pour le calcul scientifique, le parallélisme est une thématique très importante. Certaines facilités syntaxiques existent déjà depuis longtemps pour la communication entre processus, mais les développeurs cherchent depuis un certain temps la meilleure approche pour la programmation multifil (c’est-à-dire à mémoire partagée). Les idées convergent vers une implémentation disponible dès cette version 0.5, mais la syntaxe pourrait encore évoluer. Pour exploiter les différents cœurs d’une machine, il suffirait d’utiliser une macro @threads sur chaque boucle à paralléliser, sans plus d’action requise de la part de l’utilisateur.

Un débogueur fait maintenant son apparition dans Julia. Il n’est pas livré avec l’interpréteur, mais est très facile à installer. Gallium est en développement depuis de nombreux mois et est aussi intégré dans l’environnement de développement Juno.

Cette version regorge de modifications en tout sens pour donner plus de cohérence à la bibliothèque standard et pour alléger son cœur (de telle sorte qu’il reste possible d’utiliser Julia dans n’importe quelle situation). Ces optimisations sont, par exemple, utiles dans l’embarqué ; à ce sujet, l’exécution sur des plateformes ARM (généralement utilisées dans l’embarqué) a été largement améliorée ; de même, l’architecture IBM POWER est maintenant gérée.

Source : Julia v0.5.0 Release Notes.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s