Aller au contenu principal
Bethemesh
BiographieHistoire de l’informatique

Ken Thompson : d’Unix au langage Go, la simplicité comme méthode

Découvrez comment Ken Thompson a relié Unix, le langage B et Go par une même recherche de simplicité, d’efficacité et d’outils composables.

Publié le 24 août 2026Lecture : 10 minPar Équipe Bethemesh
Débutant
Ken Thompson à gauche aux côtés de Dennis Ritchie en 1973
Afficher le sommaire
  1. Retrouver ce que Multics avait rendu possible
  2. Pourquoi les contraintes du PDP-7 ont favorisé la simplicité
  3. Du langage B à la naissance du C
  4. Des expressions régulières aux outils de programmation
  5. Ce que « Reflections on Trusting Trust » révèle sur les compilateurs
  6. Pourquoi Thompson revient à la conception d’un langage avec Go
  7. Un héritage fondé sur les relations entre les outils
  8. Chronologie
  9. Questions fréquentes
  10. Ken Thompson a-t-il créé Unix seul ?
  11. Quelle différence existe entre les contributions de Ken Thompson et de Dennis Ritchie ?
  12. Le langage B est-il encore utilisé ?
  13. Ken Thompson a-t-il inventé les tubes Unix ?
  14. Quel rôle Ken Thompson a-t-il joué dans la création de Go ?
  15. Pourquoi son travail reste-t-il important aujourd’hui ?

Une grande partie de l’informatique moderne repose sur une idée que Ken Thompson a mise en pratique dès la fin des années 1960 : un système puissant n’a pas besoin d’être compliqué si ses éléments les plus simples savent travailler ensemble. Cette idée structure Unix, traverse le langage B, prépare le C et réapparaît plusieurs décennies plus tard dans Go.

Thompson ne suit pourtant pas un programme théorique unique. Il construit des outils pour résoudre les problèmes qu’il rencontre : utiliser un petit ordinateur de manière interactive, écrire un système avec très peu de mémoire, traiter du texte ou compiler rapidement un grand logiciel. La continuité vient de sa méthode. Il préfère les mécanismes réduits, compréhensibles et combinables aux architectures qui tentent de tout prévoir.

Cette recherche de simplicité ne signifie pas que ses réalisations sont rudimentaires. Elle déplace la complexité : au lieu de l’imposer à chaque composant, elle l’organise dans les relations entre eux.

Retrouver ce que Multics avait rendu possible

Kenneth Lane Thompson naît en 1943 à La Nouvelle-Orléans. Il étudie le génie électrique et l’informatique à l’université de Californie à Berkeley, où il obtient un diplôme de premier cycle en 1965 puis un master en 1966. Il rejoint ensuite les Bell Labs, un laboratoire où informaticiens, ingénieurs et mathématiciens peuvent expérimenter sur le long terme.

Thompson y participe au projet Multics, mené avec le MIT et General Electric. Ce système d’exploitation en temps partagé doit permettre à plusieurs personnes d’utiliser simultanément un ordinateur tout en bénéficiant d’un environnement interactif. L’ambition est considérable, mais le système devient complexe et coûteux. Bell Labs se retire du projet en 1969.

Thompson ne veut pas reproduire Multics en miniature. Il souhaite conserver ce qui rendait l’environnement agréable pour programmer : un système de fichiers cohérent, un terminal interactif et la possibilité de créer directement de nouveaux outils. Un mini-ordinateur PDP-7, bien plus limité que les machines prévues pour Multics, lui donne l’occasion de tester cette approche.

Un jeu de simulation spatiale qu’il avait écrit, Space Travel, sert de déclencheur pratique. Le porter sur le PDP-7 l’amène à construire les outils nécessaires pour utiliser réellement la machine. En 1969, il développe un système de fichiers, un interpréteur de commandes et les premières fonctions de ce qui deviendra Unix. Dennis Ritchie rejoint rapidement le travail.

Pourquoi les contraintes du PDP-7 ont favorisé la simplicité

Le PDP-7 possède peu de mémoire et offre un environnement de développement sommaire. Chaque abstraction doit donc justifier son coût. Thompson privilégie de petits programmes spécialisés plutôt qu’un outil unique chargé de nombreuses fonctions.

Cette organisation produit une propriété décisive : les résultats d’un programme peuvent devenir les données d’un autre. Un outil sélectionne du texte, un deuxième le trie, un troisième le compte. La puissance ne réside plus seulement dans chaque commande, mais dans la possibilité de les composer.

Les tubes, ou pipes, donneront ensuite une forme directe à ce principe. Doug McIlroy en défend l’idée aux Bell Labs ; Thompson l’implémente dans Unix en 1973. Le caractère | permet de relier la sortie d’une commande à l’entrée de la suivante. Une ligne de commandes devient ainsi un petit programme construit à partir d’éléments réutilisables.

Cette philosophie influence encore les systèmes de type Unix, les chaînes de traitement de données et de nombreux outils de développement. Elle fournit aussi le contexte dans lequel un langage de programmation plus adapté devient nécessaire.

Du langage B à la naissance du C

Les premières versions d’Unix sont écrites en assembleur. Le code dépend étroitement du processeur du PDP-7, puis du PDP-11. Cette proximité permet de contrôler la machine, mais rend le système difficile à déplacer vers une autre architecture.

Thompson conçoit alors B, une adaptation de BCPL suffisamment petite pour fonctionner sur les ordinateurs disponibles. Le langage évite une partie des détails de l’assembleur, tout en conservant un modèle minimal. Thompson l’utilise pour certains outils d’Unix et écrit son compilateur en B lui-même, une technique appelée auto-hébergement.

B révèle aussi ses limites. Son modèle de données, adapté aux machines où un mot mémoire représente l’unité principale, convient mal au PDP-11 et à ses octets adressables. Dennis Ritchie transforme progressivement le langage : il ajoute des types, améliore la représentation des données et aboutit au langage C au début des années 1970.

La filiation doit rester précise. Thompson crée B et participe au contexte technique dans lequel C apparaît ; Ritchie est le principal concepteur du C. Leur collaboration permet ensuite de réécrire l’essentiel d’Unix en C. Le système devient beaucoup plus facile à porter, et le langage se diffuse avec lui dans les universités puis dans l’industrie.

La biographie de Dennis Ritchie prolonge cette histoire du point de vue de la conception du C, tandis que l’histoire du langage C suit son adoption au-delà d’Unix.

Des expressions régulières aux outils de programmation

L’influence de Thompson ne se limite pas au noyau d’Unix et au langage B. Il développe notamment l’éditeur de texte ed, dont les commandes contribueront à la culture des outils Unix. Son travail sur la recherche de motifs aide également à diffuser l’usage informatique des expressions régulières, une notation destinée à décrire des formes de texte.

Une expression régulière peut, par exemple, représenter « une suite de chiffres » sans énumérer toutes les suites possibles. Cette idée est aujourd’hui intégrée aux éditeurs, aux langages de programmation, aux moteurs de recherche et aux outils d’analyse de journaux.

Thompson travaille aussi sur Plan 9, système expérimental développé aux Bell Labs pour pousser plus loin certaines idées d’Unix dans un environnement distribué. Avec Rob Pike, il conçoit en 1992 l’encodage UTF-8, qui représente les caractères Unicode tout en restant compatible avec les textes ASCII existants. UTF-8 devient ensuite l’encodage dominant du Web.

Ces contributions paraissent éloignées les unes des autres. Elles répondent pourtant à la même question : comment définir une représentation assez simple pour être manipulée partout, sans empêcher son extension à des besoins plus vastes ?

Ce que « Reflections on Trusting Trust » révèle sur les compilateurs

En 1983, Thompson et Ritchie reçoivent le prix Turing pour Unix et son influence. Lors de sa conférence associée, Thompson présente une démonstration devenue célèbre sous le titre Reflections on Trusting Trust.

Il décrit un compilateur modifié capable d’insérer secrètement une porte dérobée lors de la compilation d’un programme de connexion. Le compilateur peut aussi reconnaître son propre code source et reproduire la modification dans sa version suivante. Une inspection du programme et du compilateur source ne suffit alors plus à révéler l’attaque.

L’expérience enseigne une limite profonde de la confiance logicielle : vérifier un code source n’apporte une garantie complète que si la chaîne d’outils qui le transforme est elle-même digne de confiance. Les recherches modernes sur les compilations reproductibles, la sécurité de la chaîne d’approvisionnement et la vérification des compilateurs prolongent directement ce problème.

Pourquoi Thompson revient à la conception d’un langage avec Go

Thompson rejoint Google en 2006. Il y retrouve un problème différent de celui du PDP-7, mais une frustration comparable : les logiciels sont devenus immenses, les compilations longues et la programmation concurrente difficile à maîtriser. Le matériel dispose de plusieurs cœurs et les services utilisent de nombreuses machines, tandis que les langages employés imposent souvent des outils ou des abstractions complexes.

En septembre 2007, Thompson, Rob Pike et Robert Griesemer commencent à définir Go. Le langage recherche des compilations rapides, un formatage standard, une gestion automatique de la mémoire et des mécanismes de concurrence intégrés. Sa syntaxe reste volontairement réduite afin que le code écrit par de grandes équipes demeure lisible.

Go ne reproduit pas C et ne remplace pas Unix. Il transpose une méthode dans un autre contexte. Là où B devait tenir sur une petite machine, Go doit aider des équipes à travailler dans de grands dépôts de code. Dans les deux cas, Thompson traite la simplicité comme une réponse à une contrainte d’échelle.

Le projet est publié en logiciel libre en novembre 2009. Go se développe ensuite collectivement et trouve une place importante dans les services réseau, les outils d’infrastructure et les systèmes distribués. La trajectoire relie ainsi deux périodes rarement rapprochées : la naissance de l’informatique interactive et les plateformes du cloud.

Un héritage fondé sur les relations entre les outils

Unix reste présent dans Linux, macOS, les systèmes BSD, Android et une grande partie des infrastructures de serveurs. Le C demeure essentiel aux systèmes et a fourni une base syntaxique ou conceptuelle à de nombreux langages, dont le C++ de Bjarne Stroustrup. UTF-8 permet aux mêmes systèmes d’échanger des textes dans les écritures du monde entier. Go équipe des logiciels conçus pour les réseaux et le cloud.

Réduire cet héritage à une liste d’inventions manquerait toutefois le lien entre elles. Thompson conçoit des composants qui font peu de choses, mais dont les interfaces permettent des usages imprévus. Cette approche ne supprime pas la complexité : elle évite de l’enfermer dans un bloc impossible à comprendre ou à remplacer.

La contribution durable de Ken Thompson tient donc autant à une manière de construire qu’aux programmes eux-mêmes. Un système devient plus adaptable lorsque ses parties restent intelligibles, et plus puissant lorsque ces parties peuvent être combinées.

Chronologie

  • 1943 : naissance de Kenneth Lane Thompson à La Nouvelle-Orléans.
  • 1965–1966 : obtention de ses diplômes à l’université de Californie à Berkeley.
  • 1966 : arrivée aux Bell Labs et participation au projet Multics.
  • 1969 : création de la première version d’Unix sur un PDP-7.
  • 1969–1970 : développement du langage B à partir de BCPL.
  • 1973 : ajout des tubes à Unix et réécriture de l’essentiel du système en C avec Dennis Ritchie.
  • Années 1970 : développement d’outils Unix, dont l’éditeur ed, et diffusion des expressions régulières.
  • 1983 : prix Turing partagé avec Dennis Ritchie ; présentation de Reflections on Trusting Trust.
  • 1992 : conception d’UTF-8 avec Rob Pike.
  • 2006 : arrivée chez Google.
  • 2007 : début de la conception de Go avec Robert Griesemer et Rob Pike.
  • 2009 : publication de Go comme projet open source.
  • Aujourd’hui : Unix, UTF-8 et Go prolongent dans des domaines différents sa recherche de systèmes simples et composables.

Questions fréquentes

Ken Thompson a-t-il créé Unix seul ?

Thompson écrit la première version du système en 1969 et en constitue le principal moteur initial. Dennis Ritchie le rejoint rapidement, puis d’autres chercheurs des Bell Labs contribuent à Unix, à ses outils et à sa diffusion. Unix est donc né d’une initiative de Thompson avant de devenir une réalisation collective.

Quelle différence existe entre les contributions de Ken Thompson et de Dennis Ritchie ?

Thompson est le créateur initial d’Unix et du langage B. Ritchie est le principal concepteur du C et joue un rôle central dans la réécriture d’Unix avec ce langage. Leurs apports sont distincts, mais leur combinaison a rendu Unix portable et le C largement utilisable.

Le langage B est-il encore utilisé ?

B n’est plus employé couramment. Son importance est historique : il constitue le prédécesseur direct du C et montre comment les contraintes des premiers mini-ordinateurs ont orienté la conception des langages système.

Ken Thompson a-t-il inventé les tubes Unix ?

Doug McIlroy avait formulé et défendu l’idée de relier des programmes par leurs flux de données. Thompson en réalise l’implémentation décisive dans Unix en 1973. L’innovation résulte donc d’une idée proposée par McIlroy et rendue pratique par Thompson.

Quel rôle Ken Thompson a-t-il joué dans la création de Go ?

Il fait partie des trois concepteurs initiaux avec Robert Griesemer et Rob Pike. À partir de 2007, ils définissent ensemble les objectifs et les premières caractéristiques du langage. De nombreux autres contributeurs rejoignent ensuite le projet.

Pourquoi son travail reste-t-il important aujourd’hui ?

Les systèmes de type Unix structurent encore les serveurs, les ordinateurs personnels et les téléphones. UTF-8 transporte l’essentiel du texte sur le Web, tandis que Go est utilisé pour des infrastructures réseau et cloud. Ces technologies conservent une même priorité : rendre des systèmes complexes maîtrisables grâce à des composants simples.

Sources et références

  1. 1.Computer History Museum — Ken Thompson
  2. 2.Computer History Museum — The Earliest Unix Code
  3. 3.Computer History Museum — A Computing Legend Speaks
  4. 4.Dennis Ritchie — The Development of the C Language
  5. 5.Go Documentation — Frequently Asked Questions
  6. 6.Go Blog — Using Go at Google

Collection

Langages de programmation

  1. 01Grace Hopper : des premiers compilateurs à COBOL
  2. 02John Backus : FORTRAN, la notation BNF et le refus du code machine
  3. 03Dennis Ritchie : le langage C au cœur d'Unix
  4. 04FORTRAN : prouver qu'un compilateur peut rivaliser avec l'assembleur
  5. 05Le langage C : rendre les systèmes portables sans masquer la machine
  6. 06Niklaus Wirth : de Pascal à Oberon, concevoir par la simplicité
  7. 07Bjarne Stroustrup : concevoir C++ sans renoncer aux performances
  8. 08Pascal : apprendre à programmer en rendant la structure visible
  9. 09C++ : de C with Classes à un langage généraliste
  10. 10La programmation orientée objet : objets, messages et abstractions réutilisables
  11. 11Guido van Rossum : créer Python pour rendre le code lisible
  12. 12Brendan Eich : JavaScript, du prototype de Netscape au standard du Web
  13. 13James Gosling : l'ingénieur à l'origine de Java
  14. 14Python : la lisibilité, les batteries incluses et un écosystème mondial
  15. 15Java : écrire une fois, exécuter partout
  16. 16JavaScript : le langage qui a rendu le Web interactif
  17. 17Ken Thompson : d’Unix au langage Go, la simplicité comme méthode
  18. 18John McCarthy : Lisp et l’idée de programmer avec des symboles
  19. 19Alan Kay : Smalltalk et l’ordinateur comme média personnel
  20. 20Barbara Liskov : l'abstraction qui a rendu le logiciel modulaire
  21. 21Robin Milner : ML, la preuve assistée et les langages de l’interaction
  22. 22Brian Kernighan : AWK, Unix et l'art d'expliquer le code
  23. 23Anders Hejlsberg : de Turbo Pascal à C# et TypeScript
  24. 24Larry Wall : Perl, le langage qui a relié les outils d'Internet
  25. 25Yukihiro Matsumoto : Ruby et le bonheur du programmeur
  26. 26Rasmus Lerdorf : PHP et la démocratisation du Web dynamique
BiographieHistoire de l’informatiqueDébutant

Dennis Ritchie : le langage C au cœur d'Unix

Comment Dennis Ritchie a conçu le langage C et contribué à Unix, deux fondations qui ont rendu les logiciels système plus portables.

3 août 20268 minLire

Cet article vous a-t-il été utile ?