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)
[[page]]
3 - Go, d'usage général, se veut facile et agréable à coder

Les interpréteurs, les machines virtuelles et le code managé font fureur en ce moment. Go est un langage d'usage général qui convient à peu près pour tout, du développement d'application à la programmation de systèmes. En ce sens, cela ressemble davantage à du C ou du C++ qu'à du Java ou du C#. Mais, comme ces derniers, Go inclut des fonctions considérées comme modernes (« garbage collector » pour le nettoyage de la mémoire, ou encore « runtime reflection », « support for concurrency »). Tout aussi important, Go est supposé être facile à programmer. Sa syntaxe de base ressemble au C, mais il élimine les redondances et simplifie certaines opérations telles que la définition d'objets. L'objectif de l'équipe derrière Go était de créer un langage plaisant à coder comme un langage de scripting dynamique tout en offrant la puissance d'un langage compilé.

Go est toujours en cours de développement et ses spécifications peuvent être modifiées. Cela dit, il est possible de commencer à l'utiliser dès maintenant. Google a conçu des outils et des compilateurs, ainsi qu'une documentation importante. Le tutorial proposé est notamment une bonne façon de voir dans quelles mesures Go diffère des langages plus anciens. 

4 - F#, un langage Microsoft qui ressemble à OCalm

La programmation fonctionnelle a longtemps été populaire parmi les ingénieurs informatiques et dans le monde universitaire, mais les purs langages fonctionnels tels que Lisp et Haskell sont souvent considérés comme inexploitables en situation réelle de développement. L'une des critiques les plus courantes est que ce type de code peut être difficile à intégrer avec du code et des bibliothèques écrites dans des langages impératifs tels que C++ et Java. 

Enter F# (F-sharp) est un langage développé par Microsoft, conçu pour être à la fois fonctionnel et pratique. Il peut accéder à toutes les bibliothèques et fonctionnalités des autres langages pris en charge par le CLR (Common Language Runtime, composant de machine virtuelle du framework .Net), tels que C# et Visual Basic.[[page]]

Le code F# ressemble un peu au langage OCaml, mais il apporte une syntaxe propre qui est intéressante. Par exemple, il est possible d'assigner des unités de mesure aux données de type numérique pour les traitements scientifiques. F# apporte aussi des constructions pour faciliter les entrées/sorties asynchrones, la parallélisation des traitements ou leur report vers le processeur graphique.

Après une longue période de gestation au sein de Microsoft Research, F# est désormais livré avec Visual Studio 2010. Mieux encore, de façon inhabituelle, Microsoft a mis le compilateur de F# et la bibliothèque principale sous licence Open Source Apache. Vous pouvez commencer à travailler gratuitement avec et même l'utiliser sur Macintosh ou sur les systèmes Linux (via le runtime Mono).

5 - Opa, un nouveau paradigme pour les application web

Le développement web est parfois compliqué. Même la plus simple application nécessite d'innombrables lignes de code dans de multiples langages : HMTL et JavaScript sur le client, Java et PHP sur le serveur, SQL pour la base de données, etc. Le langage Opa ne remplace aucun de ces langages individuellement. Il cherche plutôt à proposer un paradigme totalement différent pour la programmation web. Dans une application Opa, l'interface utilisateur, la logique côté serveur et les entrées/sorties de la base de données sont tous mises en oeuvre dans ce seul langage. Opa le réalise à travers une combinaison de frameworks pour les versants client et serveur. Le compilateur Opa décide si une routine donnée doit s'exécuter sur le client, le serveur ou les deux, et produit le code en conséquence. Pour les routines côté client, il traduit Opa dans le code JavaScript approprié, en incluant les appels AJAX. 

Naturellement, un système intégré de cette façon recourt à ses mécaniques particulières en arrière-plan. L'environnement runtime d'Opa réunit son propre serveur web et son système de gestion de données, qui ne peuvent pas être remplacés par des produits séparés. C'est peut-être le prix à payer, cela dit, pour avoir la capacité de prototyper des applications web sophistiquées, orientées vers les données, avec seulement quelques dizaines de lignes de code. Open est un langage Open Source, disponible pour les plateformes Linux 64 bit et Mac OS X. D'autres portages sont en cours. ?

10 langages de développement pour secouer la IT : Lire la 2e partie