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.