Avons-nous vraiment besoin d'un autre langage de programmation ? Ce n'est pas le choix qui manque déjà. Entre les impératifs, les fonctionnels, les dynamiques, les compilés, les interprétés, la programmation objet et les langages de script, aucun développeur ne pourraient apprendre toutes les options disponibles.

Et pourtant, de nouveaux langages émergent à une fréquence surprenante. Certains sont conçus par des étudiants ou par des amateurs comme des projets personnels. D'autres viennent de grandes entreprises de la IT et on voit aussi des PME créer des langages pour répondre aux besoins de leurs secteurs d'activités. Pourquoi réinvente-t-on la roue ? La raison en est que, aussi solide et varié que soit le choix disponible, aucune syntaxe ne s'adapte de façon idéale à chaque objectif. De plus, la programmation est en constante évolution. Les processeurs multicoeurs, le cloud computing, la mobilité et les architectures distribuées ont créé de nouveaux défis pour les développeurs. Ajouter aux langages existants, notamment aux plus populaires, le support des fonctionnalités, paradigmes et modèles les plus récents peut s'avérer difficile et coûteux. Quelquefois, la meilleure réponse est encore de tout reprendre à zéro.

Dix de ces langages avant-gardistes ont été passés en revue par notre confrère d'InfoWorld, Neil McAllister, certains appartenant au domaine de la programmation expérimentale. Chacun aborde d'une façon nouvelle le développement de logiciels, en s'attaquant à un problème spécifique ou à une lacune des langages les plus utilisés aujourd'hui. Certains sont le fruit de projets arrivés à maturité, tandis que d'autres n'en sont qu'à leurs débuts. Quelques-uns vont probablement rester dans l'ombre. Néanmoins, n'importe lequel d'entre eux peut faire une percée pour devenir l'outil qui transformera la programmation dans les années à venir. Au moins, jusqu'à l'arrivée du prochain lot.
1ère partie : Dart, Ceylon, Go, F# et Opa (ci-dessous).
2ème partie : Fantom, Zimbu, X10, haXe et Chapel.

1 - Dart, créé par Google pour remplacer JavaScript

JavaScript convient très bien quand on doit mettre de l'interactivité simple dans des pages web, mais quand les applications atteignent des milliers de lignes de code, ses faiblesses apparaissent. Voilà pourquoi Google a créé Dart, un langage qu'il aimerait voir utiliser couramment dans la programmation web. 

Comme JavaScript, Dart utilise une syntaxe de type C et des mots-clés. Avec une différence importante, toutefois. Alors que JavaScript est orienté prototype, dans Dart, les objets sont définis en utilisant des classes et des interfaces, comme on le fait en C++ ou en Java. Dart permet aussi aux programmeurs de déclarer de façon optionnelle des variables de type statique. L'idée est que Dart soit aussi familier, dynamique et fluide que JavaScript, tout en permettant aux développeurs d'écrire du code plus rapide, plus facile à maintenir et moins sensibles aux bugs. On peut faire beaucoup avec Dart aujourd'hui. Il est conçu pour fonctionner à la fois sur le client et sur le serveur (comme le fait Node.js), mais jusque-là, la seule façon d'exploiter la partie client du code Dart est de le compiler en JavaScript. Et même de cette façon, il ne fonctionne pas avec tous les navigateurs. Mais, parce que Dart est livré sous licence Open Source BSD, n'importe quel fournisseur intéressé peut l'intégrer dans ses produits. Il reste maintenant à Google à convaincre le monde des développeurs. Récemment, l'inventeur de JavaScript, Brendan Eich, s'est montré réservé sur la question en doutant que Dart soit un jour supporté en natif sur les différents navigateurs web.

2 - Ceylon, développé chez Red Hat par le créateur d'Hibernate

Collaborateur de Red Hat, Gavin King récuse le fait que Ceylon, le langage qu'il développe chez l'éditeur Open Source, soit destiné à être un « Java killer ». Lui-même est connu comme étant le créateur d'Hibernate, framework pour Java gérant la persistance des objets en base de données relationnelle. Il aime Java mais il pense que le langage comporte de nombreuses marges d'amélioration. Il pointe notamment sa syntaxe verbeuse, son manque de fonctions « first-class », ainsi que son faible support de la metaprogrammation. En particulier, il regrette l'absence d'une syntaxe déclarative pour la définition des données structurées qui, dit-il, rend Java inséparable d'XML. Ceylon vise à résoudre tous ces problèmes.

Gavin King et son équipe n'ont pas l'intention pas de réinventer complètement la roue. Il n'y aura pas de machine virtuelle Ceylon. Le compilateur Ceylon produira du code exécutable Java destiné à fonctionner sur la JVM (machine virtuelle Java). Mais le langage sera davantage qu'un simple compilateur. L'un des buts principaux du projet est de créer un SDK Ceylon pour remplacer le SDK Java que Gavin King trouve ampoulé et maladroit et qui, à son goût, n'a jamais été correctement modernisé. (Mise à jour) Une première version est sortie en décembre dernier, ainsi qu'un plug-in pour l'IDE Eclipse. La deuxième version de Ceylon vient par ailleurs d'arriver (cf commentaire ci-dessous)