Dennis Ritchie & Ken Thompson – Les vrais héros d'Unix
Vous savez qu’Unix n’aurait jamais dû exister ? Hé oui, tout a commencé parce que Ken Thompson voulait jouer à Space Travel, son petit jeu vidéo. Sauf que sur le mainframe de Bell Labs, chaque partie lui coûtait 75 dollars en temps machine. C’était complètement absurde, du coup, il a bricolé un système sur un vieux PDP-7 pour faire tourner son jeu gratos.
Car oui, les plus grandes révolutions informatiques naissent parfois des problèmes les plus cons, vous allez voir…
Vous pensez que Steve Jobs a révolutionné l’informatique ? Que nenni ! Il a surtout fait du super marketing. Les vrais héros, ceux qui ont posé les fondations de TOUT ce que vous utilisez aujourd’hui c’est-à-dire votre iPhone, Android, Linux, même Windows dans ses tripes profondes, s’appellent Dennis MacAlistair Ritchie et Kenneth Lane Thompson. Deux potes de Bell Labs qui ont littéralement inventé l’informatique moderne dans les années 70 en se marrant.
L’histoire que je vais vous raconter aujourd’hui, c’est donc celle de deux génies qui ont créé Unix et le langage C presque par accident, et croyez-moi, c’est bien plus épique que n’importe quel biopic hollywoodien avec Ashton Kutcher dedans.
Imaginez un endroit où on vous paye pour réfléchir et bidouiller sans qu’on vous emmerde avec des deadlines, des KPI ou des réunions PowerPoint interminables. Bienvenue à Bell Labs dans les années 60, le Disneyland de la recherche informatique. Ce temple de l’innovation, propriété d’AT&T, abritait les cerveaux les plus tordus de la planète. C’est là par exemple qu’on a inventé le transistor, le laser, la théorie de l’information, et j’en passe. Bref, tout ce qui fait tourner notre monde moderne.
Dennis MacAlistair Ritchie, né le 9 septembre 1941 à Bronxville dans l’État de New York, était le fils d’Alistair Ritchie, un scientifique de Bell Labs spécialisé dans les systèmes de commutation. Le gamin avait donc l’informatique dans le sang, avec un côté discret et un humour plus sec que le Sahara en plein été. Diplômé de Harvard en physique en 1963, puis docteur en mathématiques appliquées en 1967, il débarque à Bell Labs la même année. Sauf que sa thèse de doctorat, il ne la finira jamais, trop occupé à changer le monde.
Kenneth Lane Thompson, né le 4 février 1943 à La Nouvelle-Orléans, était le parfait opposé : un sale gosse qui avait traîné ses guêtres partout avant d’atterrir à Berkeley pour des études d’ingénierie électrique. Bachelor en 1965, master en 1966, et hop, direction Bell Labs. Obsédé par les jeux vidéo et les échecs, Ken était le genre de mec capable de coder 30 heures d’affilée sans dormir, juste alimenté par du café et de la passion pure. Ce gars ne tenait pas à la vie.
Le fameux PDP-7 (source)
En 1969, nos deux zigotos bossaient sur Multics (Multiplexed Information and Computing Service), un projet pharaonique censé révolutionner les systèmes d’exploitation. Le truc était tellement ambitieux qu’il en devenait inutilisable. Comme l’a dit Sam Morgan de Bell Labs : “C’était clair que Multics essayait de grimper trop d’arbres à la fois” et AT&T a fini par lâcher l’affaire en avril 1969, déclarant victoire tout en se barrant du projet, un peu comme les Américains au Vietnam.
Ken Thompson se retrouve donc sans projet officiel, avec juste un vieux PDP-7 qui traînait dans un coin du labo. Cette antiquité informatique de Digital Equipment Corporation, sortie en 1964, avait 8K de mémoire (oui, kilooctets, pas méga) et coûtait 72 000 dollars de l’époque. Pour vous donner une idée, c’est moins puissant qu’une calculatrice.
Ken et Dennis (source)
A l’époque, pour jouer à Space Travel, une simulation spatiale qu’il avait codée lui-même, Ken utilisait un autre ordinateur. Plus exactement un mainframe GE-645 avec lequel une partie lui coûtait 75 dollars en temps CPU. À ce prix-là, autant s’acheter une vraie fusée. Et là, c’est le destin qui frappe, car à l’été 1969, pendant que Neil Armstrong marchait sur la Lune, Bonnie Thompson (la femme de Ken) part en vacances chez les beaux-parents avec leur nouveau-né pour 3 semaines. Ken se retrouve donc célibataire temporaire avec un PDP-7, du temps libre et une seule mission : porter Space Travel sur cette machine pour pouvoir jouer sans se ruiner.
Space Travel (source)
Ce que Ken n’avait pas prévu, c’est qu’il allait devoir tout réécrire from scratch. Y’a pas de système d’exploitation sur le PDP-7, rien, nada, alors il s’y met : système de fichiers, éditeur de texte, assembleur, debugger, tout y passe. Il code comme un fou, et au bout de quelques semaines, il réalise qu’il vient de créer un système d’exploitation complet. Par accident. Pour un jeu vidéo.
Dennis Ritchie, qui suivait les bidouillages de son pote avec intérêt, lui file un coup de main et Brian Kernighan, un autre génie du labo, trouve le nom parfait : “Unics” (Uniplexed Information and Computing Service), une blague sur Multics. Parce que contrairement à ce monstre complexe, leur système ne supportait qu’un seul utilisateur à la fois. Le nom évoluera vite en “Unix” parce que c’était plus cool à prononcer.
En deux mois, pendant l’été 69, ils ont ainsi pondu les bases d’Unix. Thompson a même développé une philosophie qui guide encore l’informatique aujourd’hui : “Faire une chose et la faire bien”. Chaque programme Unix était conçu pour être simple, modulaire, et pouvoir communiquer avec les autres via des pipes. C’est tout con, mais c’est génial.
En 1970, pour avoir plus de ressources, ils expliquent à leur boss, qu’Unix pourrait servir pour du traitement de texte. Bell Labs leur file un PDP-11/20 tout neuf à 65 000 dollars. Cette machine, c’était la Rolls des mini-ordinateurs : 24K de mémoire, des disques durs, le grand luxe.
Ken invente alors le langage B, basé sur BCPL (Basic Combined Programming Language). Sauf que quand ils migrent Unix vers le PDP-11, B montre ses limites : pas de types de données, pas de structures, bref, c’était trop “basique”.
Dennis, pas du genre à lâcher l’affaire, se retrousse les manches et crée le langage C durant la période 1972-1973. Le nom ? Bah c’est la lettre après B, ils ne se sont pas cassé la tête. Le C, c’était révolutionnaire, car assez proche de l’assembleur pour être efficace et assez évolué pour être lisible par un humain normal. Les pointeurs, les structures, les types de données, tout y était.
Puis en 1973, Dennis fait un truc de ouf : il réécrit le kernel Unix entier en C. À l’époque, tout le monde pensait qu’un OS devait être écrit en assembleur pour être performant et ces deux mecs venaient de prouver le contraire. Unix devenait portable. On pouvait le faire tourner sur n’importe quelle machine avec un compilateur C. C’était fou !
En 1978, Dennis et Brian Kernighan publient “The C Programming Language”, surnommé le “K&R” par les geeks. Ce bouquin de 228 pages est devenu LA bible du C. La première édition contenait même le fameux programme “Hello, World!” qui est devenu le premier truc que tout programmeur écrit.
Petite anecdote marrante, quand Unix a commencé à se répandre dans les universités américaines durant les années 70, Ken distribuait personnellement les bandes magnétiques 9 pistes le contenant. Chaque envoi était même accompagné d’un petit mot manuscrit signé “Love, Ken”. Imaginez recevoir Unix avec un bisou du créateur ! C’était ça l’esprit de l’époque… du partage, de la bienveillance, et zéro marketing bullshit.
Dans le code source d’Unix Version 6, Dennis Ritchie a également écrit le commentaire de code le plus célèbre de l’histoire de l’informatique. Dans la fonction de context-switching (ligne 2238 du fichier slp.c), il a ajouté :
/* You are not expected to understand this */
Ce commentaire est devenu culte, et on le retrouve sur des t-shirts, des mugs, des posters dans tous les bureaux de devs du monde. Dennis expliquera plus tard dans un email que c’était dans l’esprit “ça ne sera pas demandé lors de l’examen” et pas du tout un défi arrogant contrairement à ce qu’on pourrait penser.
D’ailleurs, le code était buggé et même eux ne le comprenaient pas complètement à l’époque.
En 1984, Ken Thompson balance alors le hack le plus vicieux de l’histoire lors de sa conférence pour le prix Turing. Il montre comment il pourrait modifier le compilateur C pour injecter automatiquement une backdoor dans Unix. Le truc vraiment diabolique c’est que même en lisant tout le code source, impossible de détecter le piège. Le compilateur s’auto-infecterait à chaque compilation. Sa conclusion est sans appel : “You can’t trust code that you did not totally create yourself”.
Cette présentation, connue sous le nom de “Reflections on Trusting Trust”, a traumatisé toute une génération de développeurs.
Dennis, lui, était l’antithèse totale de Steve Jobs : discret, humble, fuyant les projecteurs comme un vampire fuit l’ail. Sa famille le décrivait comme “un frère incroyablement gentil, doux, modeste et généreux et évidemment un geek complet. Il avait un sens de l’humour hilarant et une appréciation aiguë des absurdités de la vie”. Rob Pike, son collègue, racontait : “Dennis était drôle d’une manière tranquille. Par exemple, il décrivait les erreurs dans son propre travail de manière hilarante”.
Un participant à une conférence Usenix racontera même un peu plus tard cette anecdote qui montre toute l’humilité de Dennis : “J’ai rencontré Dennis Ritchie sans le savoir. Il avait échangé son badge avec quelqu’un d’autre pour éviter d’être harcelé. J’ai passé 30 minutes à discuter avec lui en me disant “putain ce mec s’y connaît vraiment bien”. Puis l’autre type est arrivé et a dit “Dennis, j’en ai marre de gérer tes groupies, reprends ton badge”. Ils ont rééchangé les badges. J’ai regardé… c’était le mec qui avait non seulement écrit le livre que j’avais utilisé pour apprendre le C, mais qui avait inventé le langage lui-même.”
Contrairement aux rockstars de la Silicon Valley d’aujourd’hui, Dennis n’a jamais cherché la célébrité. Il préférait coder tranquille dans son coin à Bell Labs, peaufiner Unix et le C, et laisser son travail parler pour lui. Quand il croisait Steve Jobs ou Bill Gates dans des conférences, personne ne le reconnaissait. Pourtant, sans lui, ni l’iPhone ni Windows n’existeraient, car les deux systèmes reposent sur des fondations qu’il a posées.
Dennis Ritchie est mort le 12 octobre 2011, à 70 ans, seul dans son appartement de Berkeley Heights dans le New Jersey. Il vivait en ermite depuis la mort de ses frères et sœurs. Son corps a été découvert plusieurs jours après sa mort.
Dennis en 2011 (source)
Tandis que la mort de Steve Jobs le 5 octobre 2011 avait fait la une de tous les médias du monde, celle du créateur du C et d’Unix est passée quasi inaperçue.
Ken Thompson, lui, continue de nous étonner. À l’age de 82 ans en 2025, après sa retraite de Bell Labs en 2000, il continue de bosser chez Google depuis 2006 sur le langage Go avec Rob Pike et Robert Griesemer. Quand Google a voulu le recruter, ils lui ont demandé de passer un test de compétence en C. Sa réponse ? “Non merci, j’ai inventé le prédécesseur du C et Dennis a créé le C lui-même”. La classe absolue. Google l’a embauché direct.
Ken Thompson en 2019 (source)
Surtout que Ken a toujours été un passionné obsessionnel. Dans les années 80, il a créé Belle, l’ordinateur d’échecs le plus fort du monde, entièrement câblé en hardware. Cette machine a remporté le championnat du monde des ordinateurs d’échecs plusieurs fois. Le gouvernement américain l’a même temporairement confisqué quand Ken a voulu l’emmener en URSS pour un tournoi, de peur qu’elle tombe entre les mains des Soviétiques ! Belle était classée comme “munition” selon les lois d’exportation américaines. Du délire.
Parallèlement, Ken avait créé une base de données de 35 000 morceaux de musique dont il avait numérisé une bonne partie, stockés sur son système avec un algorithme de compression maison appelé PAC, bien avant l’arrivée du MP3. Quand les juristes de Bell Labs lui ont demandé s’il était dans la légalité, il a répondu avec son flegme habituel : “J’en collectionne beaucoup”. Ils lui ont répondu quelque chose comme : “Il y a du fair use pour la recherche, mais on n’ira pas en prison pour vous, alors vous devez arrêter”. Ken étant Ken, il a continué tranquille.
Ken et Rob Pike ont aussi inventé UTF-8 en 1992 lors d’un dîner dans un restaurant de New Jersey. Ils ont dessiné l’encodage sur une nappe en papier et aujourd’hui, UTF-8 représente 98% du web.
Ce qui rend cette histoire encore plus belle, c’est l’environnement unique de Bell Labs. Pas de daily standup, pas de sprint planning, pas de rétrospectives, pas de KPI, pas de OKR, pas de management toxique. Juste des génies qui se croisent dans les couloirs, discutent devant la machine à café, et imaginent les techno de demain. Cette culture collaborative a inspiré tout ce qu’on redécouvre aujourd’hui.
Le partage de code source ? Ils distribuaient Unix gratuitement aux universités. La review collaborative ? Ils se relisaient mutuellement sans process formalisé. L’amélioration continue ? Chaque version d’Unix apportait des innovations. L’open source ? Unix était fourni avec son code source complet. Tout ce qu’on pense avoir inventé avec Git, GitHub, et l’agile, ils le pratiquaient naturellement dans les années 70.
La philosophie Unix qu’ils ont créée tient en quelques principes simples mais géniaux. Comme je vous le disais plus haut, il y a d’abord “Faire une chose et la faire bien” où chaque programme Unix est spécialisé. “Tout est fichier”, une abstraction simple pour tout le système. “Les programmes doivent pouvoir communiquer”, d’où les pipes qui permettent de chaîner les commandes. “Privilégier la portabilité sur l’efficacité”, d’où le choix du C plutôt que l’assembleur.
Ces principes, on les retrouve partout aujourd’hui, de Docker aux microservices.
Et aujourd’hui, Unix et ses descendants font tourner absolument tout.
Linux, le clone d’Unix créé par Linus Torvalds en 1991 fait tourner 96.3% des 500 plus gros supercalculateurs du monde, 71% des smartphones (Android), et la majorité des serveurs web. MacOS et iOS basés sur Darwin, lui-même descendant de BSD Unix. FreeBSD, OpenBSD, NetBSD aussi sont des descendants directs d’Unix. Même Windows, avec son Windows Subsystem for Linux, est une reconnaissance de la supériorité du modèle Unix.
Le langage C reste lui aussi indétrônable pour tout ce qui touche au système. Le kernel Linux c’est 28 millions de lignes de C. Windows a son noyau est en C. MacOS en C et Objective-C (une extension du C). Les interpréteurs de Python, Ruby, PHP, Perl sont également écrits en C. Les bases de données MySQL, PostgreSQL, Redis, SQLite, c’est pareil. Sans parler des navigateurs web, des compilateurs, des machines virtuelles, de l’embarqué, de l’IoT, des systèmes critiques dans l’aviation, le spatial, le médical… Du C partout !!
Sans Dennis et Ken, pas de smartphone, pas d’Internet moderne, pas de cloud computing, pas d’intelligence artificielle (les frameworks de deep learning sont écrits en C/C++), pas de jeux vidéo modernes non plus (les moteurs de jeu sont en C++). Ils ont littéralement créé les fondations sur lesquelles repose toute notre informatique actuelle.
Quand Guido van Rossum a créé Python en 1989, il s’est inspiré de la syntaxe du C et Bjarne Stroustrup a créé C++ en 1979 comme une extension du C “avec des classes”. James Gosling s’est basé lui aussi sur la syntaxe du C pour créer Java en 1995. Brendan Eich a également repris la syntaxe du C pour JavaScript en 1995 (en 10 jours, le fou). Même les langages modernes comme Rust, Go, Swift, Kotlin, tous portent l’ADN du travail de Dennis.
Ken Thompson déteste d’ailleurs C++ avec passion : “Il fait beaucoup de choses à moitié bien et c’est juste un tas d’idées mutuellement exclusives jetées ensemble”. Avec Go, qu’il a co-créé chez Google, il a donc voulu revenir à la simplicité du C originel, mais adapté au monde moderne du multicore et des réseaux. Go compile en quelques secondes là où C++ prend des minutes. La simplicité, toujours la simplicité.
Dennis et Ken ont reçu pratiquement tous les prix possibles en informatique. Le prix Turing en 1983 (l’équivalent du Nobel en informatique), la National Medal of Technology en 1998 des mains du président Clinton, le Japan Prize en 2011 (400 000 dollars quand même). Ken a été élu à l’Académie Nationale d’Ingénierie en 1980 et à l’Académie Nationale des Sciences en 1985. Mais leur plus grande fierté c’est de voir leur création utilisée partout, par tout le monde, tous les jours.
L’histoire de Dennis et Ken nous enseigne plusieurs trucs cruciaux. Tout d’abord que l’innovation naît de la liberté créative. Pas de process, pas de roadmap, pas de framework agile, juste la liberté d’explorer et de se planter. C’est comme ça qu’Unix a réussi là où Multics a échoué, car la complexité tue l’innovation, toujours.
De mon point de vue, Dennis Ritchie mérite autant de reconnaissance que Steve Jobs ou Bill Gates, si ce n’est plus. Sans oublier Ken Thompson qui continue de coder à plus de 80 ans chez Google. Quand on lui demande pourquoi il continue, il répond simplement : “C’est fun”.
En tout cas, leur philosophie continue d’inspirer encore aujourd’hui avec l’open source, le partage de code, le principe du “faire une chose et la faire bien”… et ça c’est beau !
Voilà, maintenant vous savez pourquoi Unix c’est beau et Windows c’est… bah c’est Windows quoi. Allez, sortez votre terminal, tapez man unix
et saluez ces deux génies. Et si vous voulez vraiment leur rendre hommage, apprenez le C, c’est moins chiant que vous pensez et ça vous fera comprendre comment les ordinateurs fonctionnent vraiment.
Et dire qu’à la base, c’était pour faire tourner un jeu vidéo débile…
Sources : Bell Labs – Dennis Ritchie Home Page, Wikipedia – Dennis Ritchie, Wikipedia – Ken Thompson, ACM Turing Award – Dennis Ritchie, ACM Turing Award – Ken Thompson, Brian Kernighan on Dennis Ritchie, Ken Thompson – Reflections on Trusting Trust
Source : korben.info