Fantom, Zimbu, X10, haXe et Chapel. La 1ère partie de cette présentation en deux volets a abordé les langages Dart, Ceylon, Go, F# et Opa. En voici cinq autres, disponibles en Open Source et toujours en cours de développement pour la plupart. Ces dix langages avant-gardistes ont été passés en revue par notre confrère d'InfoWorld, Neil McAllister. (Lire la 1ère partie)

6 - Fantom : une portabilité cross-plateforme

Faut-il développer vos applications pour les environnements Java ou .Net ? Si vous codez en Fantom, vous pouvez choisir et, même, changer de plateforme à mi-parcours, parce que ce langage est conçu dès le départ pour la portabilité cross-plateforme. Le projet Fantom ne comprend pas seulement un compilateur capable de produire du bytecode à la fois pour la machine virtuelle Java (JVM) et pour la CLI (Common Language Infrastructure) .Net, mais aussi un jeu d'API qui fait abstraction des API Java et .Net en créant une couche additionnelle de portabilité.

Il est prévu d'étendre encore la portabilité de Fantom. Un compilateur Fantom vers JavaScript est déjà disponible et les prochaines cibles pourraient inclure le projet de compilateur LLVM, la machine virtuelle Parrot et Objective-C pour iOS. Mais la portabilité n'est pas la seule raison d'être de Fantom. Comme il demeure, par nature, proche de C, on s'attend aussi à ce qu'il s'améliore du côté des langages qui l'ont inspiré. Il essaie de trouver un terrain d'entente dans certains des débats syntaxiques les plus vifs qui opposent par exemple langages typés et non typés, ou encore les interfaces et les classes. Il apporte une syntaxe simple pour déclarer des structures et sérialiser les objets. Et il inclut le support de la programmation fonctionnelle et parallèle (concurrency). Ce langage Open Source est disponible sous licence AFL (Academic Free Licence) version 3.0, pour Windows et les plateformes Unix (en incluant Mac OS X).

7 - Zimbu : adapté à tout mais il ne produit encore que du C ANSI

La plupart des langages de programmation empruntent les caractéristiques et la syntaxe de langages existants. Zimbu a puisé dans la plupart d'entre eux. Idée originale de Bram Moolenaar, le créateur de l'éditeur de texte Vim, Zimbu cherche à être un langage rapide, concis, portable et facile à lire, pouvant être utilisé pour coder n'importe quoi, de l'interface utilisateur d'une application jusqu'au noyau d'un système d'exploitation. Compte tenu de sa nature, Zimbu possède une syntaxe unique et particulière, mais fonctionnellement riche. Il utilise des expressions et des opérateurs proches de C, mais se sert de ses propres mots-clés, types de données et structures de bloc. Il supporte la gestion de la mémoire, des threads et des pipes. Sa portabilité est une préoccupation majeure. Bien que Zimbu soit un langage compilé, il produit du code ANSI C. Les fichiers natifs ne peuvent être créés que sur les plateformes disposant d'un compilateur C natif.

Malheureusement, le projet Zimbu n'en est qu'à ses débuts. Le compilateur peut créer quelques exemples de programmes, mais il ne pourra pas transformer l'ensemble du code en exécutable. Toutes les fonctionnalités proposées ne sont pas encore mises en oeuvre et certaines sont encore réalisées de façon maladroite. Les spécifications du langage devraient aussi être modifiées, avec l'ajout de mots-clés, de types et de syntaxe si nécessaire. La documentation est jeune elle aussi. Cependant, si vous vouliez l'expérimenter, des outils préliminaires sont disponibles sous licence Apache. 

8 - X10 : conçu pour les architectures parallèles actuelles

Les traitements parallèles ont longtemps constitué une niche spécialisée du développement de logiciels, mais avec l'arrivée des processeurs multicoeurs et de l'informatique distribuée, le parallélisme se généralise. Malheureusement, les langages de programmation actuels n'ont pas suivi le rythme. C'est pourquoi IBM Research a développé X10, un langage conçu spécifiquement pour les architectures parallèles modernes, avec l'objectif de multiplier par dix la productivité des développeurs.

Conçu pour la programmation parallèle, il utilise le modèle PGAS (partitioned global address space) qui suppose un espace mémoire global adressable logiquement partitionné. Un modèle sur lequel s'appuie aussi le langage Chapel. Le code et les données sont séparés en portions qui sont distribuées à travers un ou plusieurs emplacements, ce qui permet de faire évoluer facilement un programme, en passant du prototype single-thread (situé à un seul endroit) jusqu'au programme multi-threads exploitant un ou plusieurs processeurs multi-coeurs dans un cluster haute performance.
[[page]]
C'est à Java que le code de X10 ressemble le plus. En fait, le runtime X10 est disponible sous la forme d'un exécutable natif et de classes pour la machine virtuelle Java. Le compilateur X10 peut produire du code source C++ ou Java. L'interopérabilité directe avec Java constitue l'un des objectifs du projet. Pour l'instant, le langage évolue, mais il a déjà atteint une certaine maturité. Le compilateur et le runtime existent pour plusieurs plateformes : Linux, Mac OS X et Windows. Parmi les outils complémentaires, on trouve un environnement de développement intégré basé sur Eclipse et un debugger, tous distribués sous EPL (Eclipse Public License).

9 - haXe : adapté à différents environnements d'exploitation

De nombreux langages peuvent être utilisés pour écrire du code portable. Des compilateurs C existent pour à peu près toutes les architectures de processeurs et le bytecode Java s'exécutera à chaque fois qu'il trouvera une JVM. Mais haXe (il faut prononcer « hex ») n'est pas seulement portable. C'est un langage multiplateforme qui peut cibler différents environnements d'exploitation, du code natif aux interpréteurs et en passant par les machines virtuelles.

Pour l'instant, les développeurs peuvent écrire des programmes en haXe puis les compiler en code objet, en JavaScript, en PHP, en Flash/ActionScript ou en bytecode NekoVM. Des modules supplémentaires pour produire du C# et du Java sont en cours de développement. En complément du langage de base, il y a la bibliothèque standard haXe, qui fonctionne de façon identique sur chaque cible, à laquelle s'ajoutent des bibliothèques spécifiques pour exploiter les caractéristiques singulières de chaque plateforme. 

Similaire à celle de C, la syntaxe haXe est assez riche. Son principal avantage est qu'il s'affranchit des problèmes inhérents à chaque plateforme ciblée. Par exemple, il est strictement typé quand JavaScript ne l'est pas, il apporte des génériques et des inférences de type à ActionScript, ou encore, il permet d'éviter la syntaxe mal conçue de PHP.

Bien qu'encore en cours de développement, haXe est utilisé sous une forme commerciale par son créateur, le studio Motion Twin, spécialisé dans les jeux en ligne. Il est disponible pour Linux, Mac OS X et Windows sous une combinaison de licences Open Source.

10 - Chapel : pensé pour les supercalculateurs et le clustering

Dans le monde de l'informatique haute performance, le nom de Cray résonne comme celui d'un poids lourd. Il n'est donc pas surprenant que Chapel, le premier langage de programmation de Cray, ait été conçu en pensant aux supercalculateurs et au clustering. Chapel fait partie du programme Cascade de Cray, une initiative ambitieuse de calcul haute performance lancée avec l'agence américaine DARPA (Defense Advanced Research Project Agency). L'un de ses objectifs vise à détacher les algorithmes parallèles du matériel sous-jacents, à améliorer leurs performances sur les architectures et à augmenter la portabilité des programmes parallélisés.

La syntaxe de Chapel s'appuie sur de nombreuses sources. Au-delà des classiques C, C++ et Java, elle emprunte des concepts à des langages de programmation scientifiques tels que Fortran et Matlab. Ses caractéristiques de traitement parallèles sont influencées par ZPL et High-Performance Fortran, ainsi que par les précédents projets Cray. 

L'une des fonctionnalités les plus intéressantes de Chapel, c'est son support de la programmation multi-resolution, qui permet aux développeurs de prototyper des applications avec du code très abstrait et de le compléter au fur et à mesure que la définition de la mise en oeuvre se complète. Les travaux se poursuivent sur Chapel. Actuellement, il peut s'utiliser sur les supercalculateurs Cray et sur différents clusters haute performance, mais il peut être porté sur la plupart des systèmes Unix (ce qui comprend Mac OS X et Windows avec Cygwin). Le code source est disponible sous une licence Open Source de type BSD.