Haskell
Une douzaine de langages fonctionnels coexistaient à la fin des années 1980, chacun avec ses particularités mais tous partageant des fondements sémantiques similaires. Cette dispersion irritait les chercheurs qui peinaient à faire adopter leurs idées au-delà de cercles restreints. L'idée d'unifier ces efforts germa lors d'une réunion en septembre 1987, pendant la conférence Functional Programming Languages and Computer Architecture à Portland. Les participants décidèrent de créer un comité pour concevoir un langage commun qui servirait de référence stable.
Cette démarche collective surprend de nos jours. On imagine difficilement qu'un comité puisse accoucher d'un langage élégant, tant la conception par consensus semble vouée aux compromis et aux incohérences. Pourtant, Haskell prouve le contraire. Le secret tient dans l'alignement des objectifs individuels et l'importance accordée à la beauté mathématique.
John Backus avait ouvert la voie en 1978 avec sa conférence Turing. Le créateur de Fortran y présentait la programmation fonctionnelle comme une alternative crédible au modèle von Neumann. Venant d'une telle figure, cette caution transforma la perception du paradigme fonctionnel, qui cessa d'être perçu comme une curiosité académique.
L'évaluation paresseuse fascine les concepteurs de Haskell. Cette technique, découverte indépendamment par plusieurs équipes dans les années 1970, change radicalement la manière de concevoir les programmes. Dan Friedman et David Wise à Indiana, Peter Henderson et James H. Morris Jr. chez Xerox PARC, David Turner à St Andrews et Kent : tous explorent cette voie prometteuse. Turner démontre son élégance dans SASL et KRC, utilisant les listes paresseuses pour simuler des comportements complexes avec une simplicité déconcertante.
Le 1er avril 1990 marque la publication du premier rapport Haskell. Cette date, choisie par hasard, alimentera de nombreuses plaisanteries. Qui aurait cru qu'un langage né un jour de blague deviendrait si influent ? Le développement se poursuit pendant quinze années, principalement par courrier électronique. Une époque où les échanges techniques passaient encore par des messages réfléchis plutôt que par des notifications incessantes.
Miranda influence la conception de Haskell. David Turner commercialise ce langage fonctionnel non strict via sa société Research Software Limited, avec un succès notable : 250 universités et 50 entreprises l'adoptent. Haskell hérite de nombreuses caractéristiques syntaxiques de Miranda mais s'en distingue par des innovations marquantes.
Le système de classes de types constitue la première de ces innovations. Philip Wadler l'introduit en février 1988, résolvant élégamment les problèmes de surcharge des opérateurs numériques. Plus systématique que les solutions adoptées par Miranda ou SML, cette approche modulaire est depuis un modèle pour d'autres langages.
La pureté représente le second pilier de Haskell. En tant que langage fonctionnel pur, il garantit qu'une fonction retourne toujours le même résultat pour des arguments identiques, sans aucun effet de bord. Cette contrainte, directement liée à l'évaluation paresseuse, complique initialement la gestion des entrées-sorties. Mais cette difficulté apparente mène à l'invention des entrées-sorties monadiques, reconnues comme une contribution majeure à l'informatique.
Les monades transforment un problème technique en solution conceptuelle. Elles encapsulent les effets de bord dans un cadre mathématique rigoureux, préservant la pureté du langage tout en permettant les interactions avec le monde extérieur. Cette élégance théorique cache une complexité pratique qui rebute parfois les nouveaux venus.
En 1999, « Haskell 98 » stabilise le langage. La communauté réclamait cette standardisation, fatiguée des évolutions permanentes qui compromettaient la portabilité du code. Le comité se dissout alors, laissant le langage évoluer librement. Cette approche à deux vitesses fonctionne remarquablement bien : Haskell sert à la fois de laboratoire pour explorer des idées avancées et d'outil pratique pour des applications réelles.
Les versions successives enrichissent progressivement le langage. La 1.1 en 1991, la 1.2 en 1992, la 1.3 en 1996, la 1.4 en 1997 : chaque itération apporte son lot d'améliorations. Ce rythme soutenu témoigne de la vitalité d'une communauté engagée dans l'exploration de nouveaux territoires conceptuels.
Les innovations du Haskell inspirent de nombreux langages et frameworks. Les systèmes de types avancés, la gestion des effets via les monades, l'évaluation paresseuse : autant de concepts qui rayonnent aujourd'hui dans l'écosystème informatique. Les langages impératifs intègrent aussi des éléments fonctionnels, témoignant de l'influence durable de cette approche.
Le nom « Haskell » honore Haskell B. Curry, mathématicien et logicien dont les travaux sur le calcul combinatoire influencent la théorie des langages de programmation. Ce choix n'est pas anodin car il ancre le langage dans une tradition mathématique rigoureuse, rappelant que la programmation fonctionnelle puise ses racines dans la logique formelle.
Haskell occupe une position singulière. Ni langage de masse ni curiosité académique, il maintient un équilibre subtil entre rigueur théorique et utilité pratique. Son influence se mesure moins à son adoption directe qu'à sa capacité à faire évoluer les pratiques de programmation. Dans un monde où l'élégance cède souvent le pas à l'efficacité, Haskell rappelle qu'il existe d'autres voies, plus exigeantes mais infiniment plus satisfaisantes.