Aller au contenu principal
Bethemesh
BiographieHistoire de l’informatique

Brian Kernighan : AWK, Unix et l'art d'expliquer le code

Découvrez comment Brian Kernighan a façonné AWK, diffusé C et Unix, créé des outils spécialisés et établi une pédagogie durable de la programmation.

Publié le 24 août 2026Lecture : 12 minPar Équipe Bethemesh
Débutant
Portrait de Brian Kernighan dans un environnement évoquant Unix, C et le traitement de texte
Afficher le sommaire
  1. De Toronto aux Bell Labs
  2. Unix comme atelier de petits outils
  3. Ratfor : améliorer l’écriture sans remplacer l’infrastructure
  4. AWK : transformer des motifs en actions
  5. K&R : le livre qui a stabilisé une manière d’écrire C
  6. Expliquer la philosophie Unix par la pratique
  7. Les petits langages au service de problèmes précis
  8. De la pratique de la programmation à l’enseignement
  9. Une histoire de collaborations correctement attribuées
  10. Pourquoi Brian Kernighan compte encore
  11. Chronologie
  12. Questions fréquentes
  13. Brian Kernighan a-t-il créé le langage C ?
  14. Qui a créé AWK ?
  15. À quoi sert encore AWK aujourd’hui ?
  16. Qu’appelle-t-on un petit langage ?
  17. Pourquoi les livres de Kernighan ont-ils eu autant d’influence ?

Brian Kernighan occupe une place singulière dans l’histoire des langages. Il n’a créé ni Unix ni C : ces contributions reviennent principalement à Ken Thompson et Dennis Ritchie. Son influence vient d’un autre travail, tout aussi durable. Il a construit des outils autour d’Unix, co-conçu des langages spécialisés et surtout rendu les idées du laboratoire compréhensibles, transmissibles et utilisables.

Son nom reste associé à AWK, conçu avec Alfred Aho et Peter Weinberger, ainsi qu’à The C Programming Language, écrit avec Ritchie. Mais réduire Kernighan à « l’auteur du livre sur C » masquerait une œuvre cohérente : Ratfor, eqn, pic, AMPL, les environnements Unix, la pratique des tests et plusieurs décennies d’enseignement montrent comment de petits langages peuvent simplifier des tâches précises.

Kernighan a ainsi contribué à une culture de programmation où un bon outil fait peu de choses, les fait clairement et se combine avec d’autres.

De Toronto aux Bell Labs

Brian Wilson Kernighan naît en 1942 à Toronto. Il étudie la physique de l’ingénieur à l’université de Toronto, puis rejoint Princeton pour un doctorat en génie électrique. Sa thèse, achevée en 1969, porte sur le partitionnement de graphes, un problème qui consiste à diviser un réseau en groupes tout en limitant les connexions entre eux.

Il entre la même année aux Bell Laboratories, dans le Computing Science Research Center. Le laboratoire réunit alors des chercheurs capables de passer de la théorie des langages à l’implantation d’un système, puis à la rédaction de sa documentation. Les bureaux voisins, les échanges informels et l’accès à des machines partagées favorisent des collaborations rapides.

Unix commence à prendre forme autour de Ken Thompson et Dennis Ritchie. Kernighan participe à cet environnement sans revendiquer le noyau du système ni la création de C. Il teste des outils, écrit des programmes, améliore la documentation et aide à faire d’un prototype local un environnement dans lequel d’autres peuvent travailler.

Il est également généralement crédité du nom « Unix », jeu de mots avec Multics, le système plus vaste dont plusieurs chercheurs des Bell Labs avaient tiré des leçons. Cette anecdote résume une partie de son rôle : trouver une formulation compacte pour une idée technique et la faire circuler.

Unix comme atelier de petits outils

La force d’Unix ne réside pas uniquement dans son noyau. Elle vient aussi d’un modèle d’usage : les programmes lisent et écrivent des flux relativement simples, puis le shell les relie par des pipelines. Une commande sélectionne des lignes, une autre les trie, une troisième produit un rapport.

Kernighan contribue à plusieurs outils de cet atelier, notamment pour la préparation de documents. Avec Lorinda Cherry, il développe eqn, qui permet de décrire des formules mathématiques dans un texte. Il travaille aussi sur pic, destiné aux diagrammes, et sur des systèmes de composition liés à troff.

Ces programmes suivent une intuition importante : une notation spécialisée peut être plus expressive qu’une succession d’options graphiques ou qu’un programme généraliste. L’utilisateur décrit la structure souhaitée — une fraction, une flèche, l’alignement de deux objets — et l’outil calcule la présentation.

Le fichier texte reste lisible, modifiable, archivable et compatible avec d’autres commandes. Cette approche annonce des pratiques désormais courantes : documentation écrite comme du code, génération reproductible et outils dédiés intégrés dans une chaîne automatisée.

Ratfor : améliorer l’écriture sans remplacer l’infrastructure

Dans les années 1970, FORTRAN est largement disponible mais ses anciennes versions imposent une programmation peu structurée. Plutôt que d’attendre le déploiement universel d’un nouveau compilateur, Kernighan conçoit Ratfor, pour Rational Fortran.

Ratfor offre une syntaxe plus structurée avec des blocs, des boucles et des conditions familières, puis traduit le programme vers du Fortran accepté par les compilateurs existants. Le langage ne cherche donc pas à remplacer toute la chaîne de compilation. Il ajoute une couche qui améliore l’expression tout en réutilisant l’infrastructure déjà installée.

Cette stratégie apparaît dans Software Tools, écrit avec P. J. Plauger. Le livre ne présente pas seulement des programmes finis. Il montre comment bâtir et porter des outils de traitement de texte sur différents systèmes en s’appuyant sur une notation intermédiaire.

Ratfor illustre un principe que Kernighan appliquera souvent : choisir le point d’intervention le plus économique. Un préprocesseur modeste peut parfois diffuser une meilleure pratique plus vite qu’un système entièrement nouveau.

AWK : transformer des motifs en actions

En 1977, Alfred Aho, Peter Weinberger et Brian Kernighan conçoivent AWK, dont le nom reprend leurs initiales. Chacun apporte une expérience différente. Aho travaille sur les langages formels et les expressions régulières ; Weinberger s’intéresse au traitement de données et réalise rapidement la première implantation ; Kernighan cherche un moyen fluide de manipuler ensemble texte et nombres.

Le modèle du langage tient dans une forme compacte :

condition { action }

AWK lit les enregistrements d’un flux, découpe automatiquement chaque ligne en champs, teste les motifs puis exécute les actions associées. Pour additionner la deuxième colonne de toutes les lignes, quelques mots suffisent :

{ total += $2 }
END { print total }

Cette brièveté ne vient pas d’une syntaxe mystérieuse, mais de choix adaptés au domaine. Le parcours du fichier est implicite, les champs sont déjà accessibles et nombres comme chaînes sont traités naturellement. Le programme exprime ce qui varie ; le langage prend en charge le cadre répétitif.

AWK se place entre une commande de filtrage et un langage général. Il permet d’extraire des colonnes, agréger des mesures, convertir des formats, produire des rapports ou valider des journaux sans écrire puis compiler un programme complet en C.

Le succès du langage rappelle aussi la nature collective des Bell Labs. Aucun des trois auteurs ne résume à lui seul AWK. Son équilibre résulte de la rencontre entre théorie des motifs, besoins de reporting, implantation pragmatique et expérience des pipelines Unix.

K&R : le livre qui a stabilisé une manière d’écrire C

Dennis Ritchie crée C au début des années 1970 pour développer Unix et ses outils. Le langage évolue par l’usage avant de disposer d’une norme officielle. Pour le diffuser au-delà des Bell Labs, il faut une explication précise, des exemples réalistes et une description suffisamment stable pour guider les programmeurs comme les auteurs de compilateurs.

Kernighan écrit avec Ritchie The C Programming Language, publié en 1978. Le livre, couramment appelé K&R, associe la connaissance intime du créateur du langage à l’expérience pédagogique de Kernighan. Il expose les constructions de C par de courts programmes plutôt que par une accumulation de définitions isolées.

La première édition devient de fait une référence du C antérieur à la normalisation. La seconde, publiée en 1988, accompagne le C normalisé par l’ANSI. Le livre contribue aussi à diffuser un style : indentation régulière, fonctions limitées, noms choisis avec soin, tests rapides et exemples qui peuvent être exécutés.

Il faut cependant distinguer diffusion et invention. Dire que Kernighan a « créé C » confondrait le langage avec son ouvrage le plus célèbre. Son apport essentiel est d’avoir aidé à formuler C pour ceux qui ne travaillaient pas dans le bureau voisin de Ritchie.

Expliquer la philosophie Unix par la pratique

Avec Rob Pike, Kernighan publie en 1984 The Unix Programming Environment. L’ouvrage ne se limite pas à une liste de commandes. Il montre comment penser avec le shell, les filtres, les fichiers texte et les programmes composables.

Une tâche est progressivement décomposée. On commence par une commande simple, on observe ses limites, puis on assemble des outils ou on écrit un petit langage adapté. Cette pédagogie transmet une méthode de résolution plutôt qu’un catalogue à mémoriser.

Kernighan a souvent condensé cette culture en principes devenus associés à la « philosophie Unix » : écrire des programmes qui font une chose correctement, coopèrent avec d’autres et utilisent des formats que l’on peut inspecter. Ces formules ne décrivent pas une règle absolue suivie par chaque composant Unix. Elles rendent visible une direction architecturale qui a favorisé la réutilisation.

Les pipelines ont eux aussi des limites. Les formats textuels perdent parfois des informations de structure, les erreurs circulent mal entre commandes et une longue chaîne peut devenir difficile à maintenir. La leçon durable n’est pas que tout doit être du texte, mais qu’une interface simple et une composition explicite réduisent souvent le coût d’intégration.

Les petits langages au service de problèmes précis

Kernighan poursuit cette approche avec AMPL, conçu avec Robert Fourer et David Gay pour la modélisation mathématique. L’utilisateur décrit un problème d’optimisation — variables, contraintes et objectif — sans écrire lui-même l’algorithme numérique du solveur.

AMPL sépare le modèle du moteur qui le résout. Le même problème peut être transmis à différents solveurs et les données peuvent changer sans réécrire sa structure mathématique. Comme eqn ou AWK, le langage capture les concepts du domaine afin d’éviter que l’utilisateur ne les traduise manuellement en opérations de bas niveau.

Ces projets popularisent l’idée de petit langage : une notation limitée, parfois intégrée à une chaîne plus large, qui offre une grande expressivité dans un périmètre précis. L’objectif n’est pas de créer un langage universel de plus, mais de rapprocher le code du problème décrit.

Cette intuition se retrouve aujourd’hui dans les langages de requête, les fichiers de configuration, les moteurs de règles, les outils de construction et les notations de visualisation. Elle exige toutefois de la discipline : un petit langage mal conçu peut accumuler des exceptions jusqu’à devenir plus complexe qu’une API ordinaire.

De la pratique de la programmation à l’enseignement

Les livres de Kernighan prolongent sa recherche sur les outils. The Elements of Programming Style, avec P. J. Plauger, étudie des programmes concrets pour montrer comment les rendre plus clairs et fiables. The Practice of Programming, avec Rob Pike, aborde conception, débogage, tests, performance, portabilité et interfaces.

Leur principe commun est que le style n’est pas décoratif. Un programme lisible expose mieux ses hypothèses ; une interface réduite limite les dépendances ; des tests systématiques rendent les modifications moins risquées. La qualité apparaît dans le choix des exemples autant que dans les recommandations explicites.

Kernighan maintient par ailleurs une version d’AWK pendant des décennies. Cette expérience nourrit son enseignement du test : un logiciel largement porté rencontre des entrées inattendues, des différences de plateformes et des usages que ses auteurs n’avaient pas prévus. Tester sert autant à clarifier le comportement attendu qu’à détecter des régressions.

En 2000, après trente ans aux Bell Labs, il rejoint le département d’informatique de Princeton. Il y enseigne aux étudiants en informatique, mais aussi à des publics non spécialistes qui doivent comprendre les réseaux, la confidentialité, la sécurité et les conséquences sociales des systèmes numériques.

Une histoire de collaborations correctement attribuées

L’œuvre de Kernighan est indissociable de ses coauteurs. Ritchie conçoit C ; Thompson et Ritchie sont les principaux créateurs d’Unix ; Aho, Weinberger et Kernighan conçoivent ensemble AWK ; Fourer et Gay participent à AMPL ; Cherry, Plauger et Pike apportent chacun des contributions substantielles aux outils et aux livres partagés.

Cette liste n’affaiblit pas son importance. Elle précise sa contribution : repérer des idées compatibles, construire le langage ou l’exemple qui les relie et produire une explication assez claire pour que d’autres puissent les reprendre.

Les Bell Labs offraient un contexte exceptionnel pour ce travail collectif. Les outils étaient utilisés localement par des collègues exigeants, corrigés au contact de problèmes réels puis documentés. Leur diffusion vient moins d’un plan commercial initial que d’une boucle courte entre conception, usage et transmission.

Pourquoi Brian Kernighan compte encore

Le développement contemporain dispose d’écosystèmes beaucoup plus vastes que l’Unix des années 1970, mais il rencontre les mêmes tensions. Faut-il ajouter une dépendance ou écrire un petit outil ? Concevoir un format général ou un langage de domaine ? Exposer toutes les possibilités ou préserver une interface réduite ?

Les travaux de Kernighan ne donnent pas une réponse automatique. Ils fournissent des critères : exprimer clairement le problème, éviter le mécanisme inutile, rendre les données inspectables, composer des unités autonomes et expliquer le comportement par des exemples que le lecteur peut vérifier.

Son héritage est enfin éditorial. Une technologie ne se diffuse pas uniquement parce qu’elle est techniquement supérieure. Elle doit posséder des mots, des exemples et une progression qui permettent à quelqu’un d’extérieur à son groupe d’origine de se l’approprier. K&R a joué ce rôle pour C ; ses autres ouvrages l’ont fait pour Unix et la programmation elle-même.

Chronologie

  • 1942 : naissance de Brian Wilson Kernighan à Toronto, au Canada.
  • 1964 : diplôme en physique de l’ingénieur à l’université de Toronto.
  • 1969 : doctorat en génie électrique à Princeton, puis arrivée aux Bell Laboratories.
  • Début des années 1970 : contributions aux outils de traitement de texte et à l’environnement Unix.
  • 1975 : publication de Ratfor, préprocesseur destiné à structurer l’écriture de programmes Fortran.
  • 1976 : publication de Software Tools avec P. J. Plauger.
  • 1977 : création d’AWK avec Alfred Aho et Peter Weinberger.
  • 1978 : première édition de The C Programming Language avec Dennis Ritchie.
  • 1984 : publication de The Unix Programming Environment avec Rob Pike.
  • 1988 : seconde édition de K&R, mise à jour pour le C ANSI.
  • Années 1980–1990 : développement et diffusion d’AMPL avec Robert Fourer et David Gay.
  • 2000 : départ des Bell Labs et arrivée comme professeur à Princeton.
  • 2019 : publication de Unix: A History and a Memoir.
  • 2023 : seconde édition de The AWK Programming Language avec Aho et Weinberger.

Questions fréquentes

Brian Kernighan a-t-il créé le langage C ?

Non. Dennis Ritchie a conçu C aux Bell Labs. Kernighan a contribué à son environnement et a surtout coécrit avec Ritchie The C Programming Language, ouvrage décisif pour expliquer et diffuser le langage.

Qui a créé AWK ?

AWK est une création collective d’Alfred Aho, Peter Weinberger et Brian Kernighan ; son nom est formé de leurs initiales. Aho apporte notamment son expertise des expressions régulières, Weinberger réalise la première implantation et Kernighan contribue à la conception d’un langage fluide pour le texte et les nombres.

À quoi sert encore AWK aujourd’hui ?

Il reste adapté aux transformations rapides de données structurées en lignes et colonnes : journaux, exports, rapports ou sorties de commandes. Pour des formats imbriqués, de très grands programmes ou des besoins de bibliothèques complexes, un autre langage peut être plus facile à maintenir.

Qu’appelle-t-on un petit langage ?

C’est une notation conçue pour un domaine limité, comme les motifs et actions d’AWK, les équations d’eqn ou les modèles d’optimisation d’AMPL. Sa spécialisation permet d’exprimer directement les concepts utiles avec moins de mécanismes généraux.

Pourquoi les livres de Kernighan ont-ils eu autant d’influence ?

Ils associent des explications compactes à des programmes réalistes et progressifs. Plutôt que d’énumérer uniquement des fonctionnalités, ils montrent une méthode de conception, de test et de composition que le lecteur peut appliquer à ses propres outils.

Sources et références

  1. 1.Princeton University --- Brian Kernighan
  2. 2.Computer History Museum --- Oral History of Brian Kernighan
  3. 3.Brian Kernighan --- Personal Home Page
  4. 4.Princeton University --- Brian Kernighan recognized for work on programming languages
  5. 5.Princeton Unix Archive --- Unix Oral History

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 ?