B
En 1969, dans les couloirs des Bell Labs, Ken Thompson et Dennis Ritchie travaillent sur UNIX, ce système d’exploitation qui promet de révolutionner l’informatique. Mais comment programmer efficacement sur ces mini-ordinateurs aux ressources limitées sans se perdre dans les méandres de l’assembleur ?
Thompson connaît bien BCPL, ce langage développé par Martin Richards à Cambridge. Puissant, certes, mais trop lourd pour les PDP-7 et PDP-11 dont disposent les chercheurs. L’idée germe alors de créer une version simplifiée, épurée, qui garderait l’esprit de BCPL tout en s’adaptant aux contraintes matérielles. C’est ainsi que naît B, nom choisi par simple contraction alphabétique qui s’avérera prémonitoire avec l’arrivée ultérieure du langage C.
La philosophie de B tient dans sa simplicité radicale. Fini les types complexes et les subtilités syntaxiques qui alourdissent le développement. Dans B, tout est mot machine. Les variables se dimensionnent automatiquement selon l’architecture, généralement 36 bits. Cette approche, qui pourrait sembler limitative, cache en réalité une efficacité redoutable pour la programmation système. Chaque octet compte quand les ressources se mesurent en kilo-octets.
La syntaxe hérite de BCPL mais Thompson la dépouille de ses fioritures. Les structures de contrôle classiques demeurent : if, while, for. Les opérateurs arithmétiques et logiques conservent leur notation familière. Une innovation marque durablement le paysage informatique : l’usage d’accolades pour délimiter les blocs de code. Cette convention, apparemment anodine, traversera les décennies pour se retrouver dans d’innombrables langages modernes.
B supporte les pointeurs et les tableaux, concepts indispensables pour manipuler la mémoire au plus près. Cette capacité se révèle essentielle pour UNIX, où chaque cycle processeur doit être optimisé. Thompson et Ritchie développent un compilateur remarquablement compact, tenant en quelques milliers de lignes. Plus tard, ils y ajoutent un interpréteur pour faciliter le développement interactif. Cette dualité compilation-interprétation offre le meilleur des deux mondes : performance pour la production, flexibilité pour les tests.
Des portions entières du système d’exploitation, initialement codées en assembleur, sont réécrites en B, faisant d’UNIX son terrain d’expérimentation privilégié. L’expérience révèle les forces et faiblesses de B. D’un côté, le développement s’accélère considérablement et facilite la maintenance du code. De l’autre, certaines limitations surgissent, notamment dans la manipulation de chaînes de caractères où l’absence de distinction entre caractères et entiers complique les opérations.
La portabilité guide les choix de conception. Dans un monde informatique fragmenté entre architectures incompatibles, B promet de libérer les développeurs de ces contraintes matérielles. Théoriquement, une application écrite en B peut migrer d’une machine à l’autre par simple recompilation. Si la réalité se montrera plus nuancée, cette vision avant-gardiste qui influencera les langages futurs.
L’évolution des architectures vers des mots de 8 et 16 bits rend le modèle de B moins optimal. Les besoins croissants d’UNIX dépassent progressivement ses capacités. Dennis Ritchie, fort de l’expérience acquise, entreprend de concevoir un successeur. En 1972 naît C, qui conserve l’esprit de B tout en résolvant ses principales limitations grâce à un système de types plus sophistiqué.
Cette évolution illustre parfaitement la nature itérative du progrès informatique. B n’a vécu que quelques années, mais son influence dépasse cette courte existence. Chaque programmeur qui écrit une boucle for en Java ou JavaScript utilise une syntaxe héritée de B. Les accolades qui structurent le code, les opérateurs familiers, l’approche procédurale, autant d’éléments que B a légués à la postérité.
Aux Bell Labs et ailleurs, B sert de formation à toute une génération de programmeurs. Sa simplicité relative en fait un excellent véhicule pédagogique pour comprendre la programmation système. Nombreux sont ceux qui contribueront plus tard à l’essor d’UNIX et d’Internet après avoir fait leurs premières armes avec ce langage. Brian Kernighan rédige un tutoriel qui établit des standards de qualité pédagogique durables, démontrant qu’un langage technique peut s’enseigner avec clarté et méthode.
La philosophie de B – privilégier la simplicité sur la complexité, l’efficacité sur l’exhaustivité – traverse les époques. Cette approche minimaliste, où chaque élément doit justifier sa présence par son utilité pratique, caractérise encore des langages comme Go, développé par des vétérans de Bell Labs. C’est toute une culture de développement qui se transmet.
Cette histoire rappelle que l’innovation informatique procède rarement par ruptures brutales. Elle avance par accumulation, chaque génération s’appuyant sur les acquis de la précédente tout en cherchant à dépasser ses limites. B s’inspire de BCPL, engendre C, qui donnera naissance à d’innombrables descendants, dont chaque maillon compte.