En 1972, aux Bell Labs de Murray Hill, dans le New Jersey, Dennis Ritchie bute sur un entier et quatorze caractères. Sur le disque du PDP-11 qui fait tourner Unix, chaque fichier est inscrit dans son répertoire par un numéro suivi de son nom : huit caractères en 1972, quatorze à partir de 1973. Ritchie voudrait écrire cela dans son langage en une ligne, struct { int inumber; char name[14]; }, et que cette ligne décrive exactement les bits tels qu'ils sont lus sur le disque. Son compilateur n'y arrive pas : sa façon de traiter les tableaux exige de cacher quelque part un pointeur vers le nom, et il n'y a nulle part où le cacher. Le langage qui va faire tourner le monde cale sur un problème de rangement.

Le grand-père, le père et le fils

Le C a une généalogie courte, que Ritchie a écrite lui-même en 1993. Le grand-père s'appelle BCPL, un langage conçu au milieu des années 1960 par Martin Richards, alors en visite au MIT. Le père s'appelle B. Ken Thompson l'écrit en 1969 et 1970 pour le PDP-7 des débuts d'Unix, une machine de 8 192 mots de 18 bits « sans aucun logiciel qui lui soit utile ». Ritchie en donne la définition la plus honnête : B, c'est « BCPL comprimé dans 8 kilo-octets de mémoire et filtré par le cerveau de Thompson ».

B tient dans cette mémoire parce qu'il ignore les types. Il ne connaît qu'une donnée, la « cellule », le mot de la machine : tantôt un nombre, tantôt une adresse, selon l'usage. Sur un PDP-7 dont la mémoire est découpée en mots, c'est naturel.

Une machine qui compte en octets

Le PDP-11 arrive en 1970 et casse ce confort. La nouvelle machine n'adresse plus des mots, mais des octets. Pour toucher un caractère en B, il faut des procédures qui déballent une chaîne dans des cellules séparées, puis la remballent. Ritchie trouve cela « maladroit, et même ridicule » sur une machine orientée octet. Et le compilateur B produit du « code enfilé », interprété à l'exécution, si lent que l'équipe écarte l'idée de réécrire le système en B. Unix reste donc en assembleur PDP-11, dans 12 des 24 kilo-octets de la machine.

En 1971, Ritchie se met au travail. Il ajoute à B un type caractère et réécrit le compilateur pour qu'il produise de vraies instructions PDP-11 au lieu de code enfilé. Il appelle le résultat NB, pour new B. NB connaît deux types, int et char, avec leurs tableaux et leurs pointeurs. Puis le nom change : le langage s'appelle C, la lettre suivante.

Ce que « proche du matériel » veut dire

On dit du C qu'il est proche du matériel. Concrètement, un programme C décrit la mémoire autant qu'il décrit un calcul. Un int occupe un nombre d'octets connu. Un tableau de quatorze char, c'est quatorze octets contigus, rien de plus. L'assembleur parle à la machine mot à mot ; le C est un contremaître qui traduit sans rien perdre et qui laisse le programmeur regarder par-dessus son épaule. C'est pour cela que Ritchie tenait tant à sa structure de répertoire : il voulait qu'elle « ne caractérise pas seulement un objet abstrait, mais décrive aussi une collection de bits » lue telle quelle sur le disque.

Les structures entrent dans le langage autour de 1972 et 1973. Ritchie date lui-même l'essentiel : « Au début de 1973, les éléments essentiels du C moderne étaient en place. » Et il précise que la période la plus créative fut 1972.

* * *

L'été 1973, puis un livre blanc

Thompson avait tenté dès 1972 de réécrire Unix dans un C encore privé de structures. Il avait renoncé. À l'été 1973, avec les structures, le noyau est réécrit en C pour le PDP-11, et la quatrième édition d'Unix, en novembre, tourne dessus. Pour le langage, c'est l'examen de passage.

Le 22 février 1978, Prentice Hall publie The C Programming Language. Couverture blanche, un grand C gris, deux noms : Brian Kernighan et Dennis Ritchie. Le milieu l'appelle « le livre blanc », ou K&R. Le livre servira de norme de fait pendant plus de dix ans, jusqu'au standard ANSI de 1989. Il est court, et sa deuxième édition, en 1988, s'en explique dès la préface :

Le C n'est pas un gros langage, et un gros livre ne lui rendrait pas service.

Le premier programme du livre ne fait qu'une chose : afficher hello, world. Kernighan l'avait déjà glissé dans un tutoriel sur B en 1972, puis dans un mémo des Bell Labs de 1974, Programming in C: A Tutorial. C'est le livre de 1978 qui en fait un rite. Depuis, à peu près tout manuel de programmation commence par saluer la planète.

* * *

Ce qui tourne en C en 2026

On entend souvent que tout est écrit en C. C'est presque vrai, et le presque se vérifie. Le noyau Linux, plus de 43 millions de lignes en septembre 2026, est écrit pour l'essentiel en C, avec un peu d'assembleur et, depuis la version 6.1 de décembre 2022, un peu de Rust. Le cœur de Windows NT, dont Windows 11 descend, est en C et en assembleur. XNU, le noyau de macOS et de l'iPhone, est en C, en C++ et en assembleur. CPython, l'implémentation de référence de Python, est écrite en C. PostgreSQL est en C. Git est en C. Les microcontrôleurs des cartes Arduino, pour la plupart des puces AVR à 8 bits, se programment en C et en C++. En septembre 2026, l'index TIOBE classe le C deuxième langage le plus populaire au monde, derrière Python, avec 10,28 %.

Ritchie a conclu son histoire du langage, en 1993, par une phrase rare chez un inventeur :

Le C est bizarre, imparfait, et c'est un énorme succès.

Son explication tient en une ligne : un langage assez efficace pour chasser l'assembleur, assez abstrait pour décrire des algorithmes partout. Les accidents de l'histoire, ajoutait-il, ont sûrement aidé.

Une semaine après Steve Jobs

Le 5 octobre 2011, Steve Jobs meurt à Palo Alto. Une semaine plus tard, le 12 octobre, on apprend que Dennis Ritchie est mort chez lui, à Berkeley Heights, dans le New Jersey, où il vivait seul. Il avait soixante-dix ans et une santé fragile depuis plusieurs années, après un cancer de la prostate et des troubles cardiaques. C'est Rob Pike, un ancien de l'équipe Unix, qui l'annonce sur Google+ : « Je viens d'apprendre qu'après une longue maladie, Dennis Ritchie (dmr) est mort chez lui ce week-end. » Puis il ajoute une phrase :

C'était un homme discret et plutôt secret, mais c'était aussi mon ami, mon collègue et mon collaborateur, et le monde a perdu un très grand esprit.

Sa mort reçoit une fraction de l'attention accordée à celle de Jobs. L'historien Paul Ceruzzi résume le contraste : Ritchie était « sous le radar », son nom n'était pas connu du grand public, mais « si on avait un microscope pour regarder à l'intérieur d'un ordinateur, on verrait son travail partout ». Le système qui faisait tourner l'iPhone de Jobs descendait d'Unix, et son noyau était écrit en C.

La discrétion lui ressemblait. Prix Turing en 1983 avec Thompson, National Medal of Technology en 1999 : il a passé toute sa carrière aux Bell Labs, de 1967 à sa retraite en 2007. Sa thèse de doctorat, rédigée à Harvard en 1968, n'a jamais donné lieu au diplôme, parce qu'il aurait refusé de payer la reliure de l'exemplaire exigé par la bibliothèque. Si Harvard veut un livre relié, disait-il selon son directeur de thèse, qu'elle le paie. Le manuscrit, retrouvé par sa sœur, a été rendu public par le Computer History Museum en 2020.

Un entier, quatorze caractères, et un compilateur qui ne sait pas où cacher un pointeur. Ritchie a supprimé le pointeur. En 2026, cinquante-quatre ans après, la ligne qu'il voulait écrire s'écrit dans chaque programme C : une structure, des champs, des octets rangés dans l'ordre où ils sont en mémoire. Il faut un microscope pour voir l'homme. Il suffit d'un fichier pour voir le langage.