Erlang
En 1986, dans les bureaux du laboratoire d'informatique d'Ericsson Telecom AB, Joe Armstrong se trouve confronté à un casse-tête technique : comment programmer des applications de téléphonie qui défient toutes les conventions de l'époque ? Les commutateurs téléphoniques traitent des milliers d'appels simultanés, ces opérations se distribuent naturellement sur plusieurs machines, et la moindre panne fait les gros titres. Rien à voir avec une application de bureau qui plante sans conséquence.
Armstrong explore d'abord différentes pistes, développe des prototypes en Smalltalk, invente une notation graphique pour décrire les opérations téléphoniques. C'est Roger Skagervall qui fait la remarque décisive : cette notation ressemble à du Prolog. Armstrong bascule alors vers ce langage, et c'est ainsi que naît véritablement Erlang.
Le contexte technique d'Ericsson influence la conception du nouveau langage. PLEX, créé par Göran Hemdahl pour programmer les commutateurs AXE, impose ses contraintes : modifier le code sans arrêter le système, éviter à tout prix les erreurs de pointeurs qui avaient handicapé les générations précédentes. Armstrong et son équipe intègrent ces leçons dans l'ADN d'Erlang.
Robert Virding rejoint le projet, et ensemble ils développent les premières versions du langage, toujours en Prolog. Le test de vérité arrive en 1989 avec le projet ACS/Dunder. L'équipe développe 25 fonctionnalités téléphoniques en Erlang, soit environ un dixième de celles du MD110. Les résultats dépassent leurs espérances : selon les fonctionnalités, le développement s'accélère de 3 à 25 fois par rapport à PLEX.
Ces succès attirent l'attention, et Erlang gagne en maturité. Bogumil Hausman développe en 1993 le système Turbo Erlang, rebaptisé BEAM (Bogdan's Erlang Abstract Machine), qui améliore drastiquement les performances. Claes Wikström ajoute le support de la distribution, permettant l'exécution sur plusieurs machines.
Mais c'est un événement inattendu qui va propulser Erlang hors des murs d'Ericsson. En 1998, Ericsson Radio Systems interdit l'utilisation du langage pour les nouveaux développements. Cette décision, qui aurait pu signer l'arrêt de mort d'Erlang, produit l'effet inverse. En décembre, Ericsson libère le code source, et une partie de l'équipe originale quitte l'entreprise pour fonder Bluetail AB, société qui utilisera Erlang comme technologie de base.
L'architecture technique d'Erlang reflète sa mission initiale. Le langage structure les programmes autour de processus concurrents qui ne partagent aucune mémoire et communiquent par messages asynchrones. Ces processus appartiennent au langage, pas au système d'exploitation, ce qui les rend remarquablement légers. Si l'un d'eux échoue, les autres continuent leur travail comme si de rien n'était.
Le système de réception de messages constitue l'une des innovations les plus remarquables d'Erlang. Un processus peut attendre sélectivement certains types de messages tout en laissant les autres en attente. Cette approche simplifie énormément la programmation de protocoles de communication complexes, un atout considérable dans le monde des télécommunications.
L'AXD301, commutateur ATM développé par Ericsson, est la vitrine technologique d'Erlang. En 2001, ce système compte 1,13 million de lignes de code réparties dans 2 248 modules. Il atteint la disponibilité rêvée de 99,9999999%, démontrant que le langage est en capacité de gérer des projets industriels d'envergure avec une fiabilité exceptionnelle.
Le système OTP (Open Telecom Platform), développé à partir de 1996, enrichit l'écosystème Erlang. Cette collection de bibliothèques et de modèles de conception propose des « behaviours », abstractions qui encapsulent des motifs courants comme le modèle client-serveur ou la gestion d'événements. OTP transforme Erlang d'un langage expérimental en plateforme industrielle.
L'arrivée des processeurs multicœurs confirme rétrospectivement la pertinence des choix initiaux. Le modèle de concurrence sans partage de données s'adapte naturellement au parallélisme matériel. Les programmes Erlang exploitent les architectures multicœurs sans modification, un avantage considérable à une époque où les autres langages peinent à tirer parti de cette évolution.
Au-delà des télécommunications, Erlang trouve sa place dans des domaines variés. Le serveur de messagerie ejabberd (Erlang Jabber Daemon) gère des millions de connexions simultanées, CouchDB stocke et distribue des données à grande échelle, RabbitMQ route des messages entre applications distribuées. Ces succès valident l'approche d'origine : les contraintes des systèmes téléphoniques se retrouvent dans de nombreuses applications contemporaines.
Le langage répond initialement aux exigences particulières d'Ericsson, mais ses solutions se révèlent pertinentes pour de nombreux problèmes actuels. Les choix architecturaux initiaux, le modèle de concurrence par passage de messages notamment, semblaient radicaux mais permettent aujourd'hui d'exploiter naturellement les architectures parallèles modernes.