Aller au contenu principal
Bethemesh
BiographieHistoire de l’informatique

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.

Publié le 3 août 2026Lecture : 8 minPar Équipe Bethemesh
Débutant
Portrait de Dennis Ritchie, concepteur du langage C et coauteur d'Unix
Afficher le sommaire
  1. Chercher une informatique moins dépendante des machines
  2. De BCPL et B au langage C
  3. Unix réécrit en C
  4. Le compilateur comme instrument de portabilité
  5. Une référence avant la norme
  6. Un héritage technique à double face
  7. Ritchie, Thompson et la culture Unix
  8. Pourquoi Dennis Ritchie compte encore
  9. Chronologie
  10. Questions fréquentes
  11. Dennis Ritchie a-t-il créé Unix ?
  12. Pourquoi Ritchie a-t-il créé C ?
  13. C est-il un langage de bas niveau ?
  14. Pourquoi la réécriture d’Unix en C était-elle importante ?
  15. Quel rôle Brian Kernighan a-t-il joué ?
  16. Pourquoi C reste-t-il utilisé malgré ses risques ?

Dennis Ritchie a conçu un langage volontairement compact, assez proche de la machine pour écrire un système d’exploitation, mais assez indépendant du matériel pour déplacer ce système vers de nouveaux ordinateurs. Cette combinaison a fait de C et d’Unix deux fondations de l’informatique moderne.

Parler de Ritchie exige toutefois de distinguer les contributions. Il est le principal concepteur de C. Unix naît d’un travail collectif aux Bell Labs, initié par Ken Thompson et développé avec Ritchie et d’autres ingénieurs. Leur histoire commune montre comment un langage et un système d’exploitation peuvent se transformer mutuellement.

Chercher une informatique moins dépendante des machines

Dennis MacAlistair Ritchie naît en 1941 à Bronxville, dans l’État de New York. Il étudie la physique et les mathématiques appliquées à Harvard, où il découvre les ordinateurs. En 1967, il rejoint le centre de recherche informatique des Bell Labs.

Le laboratoire participe alors à Multics, ambitieux système de temps partagé. Lorsque Bell Labs se retire du projet en 1969, Ken Thompson expérimente un système plus petit sur un PDP-7. Avec Ritchie et leurs collègues, ce travail devient Unix.

Les premières machines disposent de peu de mémoire et les logiciels système sont souvent écrits en assembleur. Ce langage donne un contrôle précis, mais attache le programme à une architecture. Changer d’ordinateur oblige à réécrire une part importante du système.

De BCPL et B au langage C

Thompson adapte d’abord les idées de BCPL dans un langage nommé B. Celui-ci convient à certaines tâches, mais son modèle sans types s’accorde mal avec le PDP-11 et ses différents formats de données. Ritchie fait évoluer B en ajoutant des types, puis conçoit le « New B » qui devient C au début des années 1970.

C reste petit. Ses constructions correspondent assez directement à des opérations qu’un processeur peut exécuter, tandis que les fonctions, structures, pointeurs et types permettent d’organiser un programme sans écrire chaque instruction en assembleur.

Un pointeur représente une adresse en mémoire. Ce mécanisme rend possibles des programmes système efficaces et des structures de données flexibles. Il ne protège cependant pas automatiquement contre les accès hors limites, l’usage d’une zone libérée ou une mauvaise interprétation des données. La force du langage et ses risques viennent en partie du même choix : faire confiance au programmeur.

Unix réécrit en C

Vers 1973, le noyau Unix est réécrit en grande partie en C. Quelques portions dépendantes du matériel restent en assembleur, mais l’essentiel du système peut désormais être compilé pour une nouvelle machine avec un volume d’adaptation réduit.

Ce résultat est historique non parce qu’aucun langage de haut niveau n’avait jamais servi à un système, mais parce qu’Unix démontre de façon convaincante qu’un système d’exploitation performant peut devenir portable. C bénéficie ensuite de la diffusion d’Unix dans les universités ; Unix bénéficie en retour de la facilité avec laquelle C permet de l’adapter.

Cette relation façonne également l’interface du langage. C n’est pas conçu abstraitement puis appliqué au système : ses types, ses opérateurs et sa bibliothèque évoluent au contact de besoins concrets. De nombreux outils Unix sont écrits dans le même langage que le noyau, ce qui simplifie leur transfert entre machines.

Le compilateur comme instrument de portabilité

La portabilité ne vient pas du texte du langage seul. Elle dépend aussi d’un compilateur capable de traduire les mêmes constructions vers des jeux d’instructions différents et d’une bibliothèque qui isole une partie des services du système.

Aux Bell Labs, C évolue avec ses compilateurs. Le langage doit rester assez simple pour être implanté sur les machines disponibles, tout en donnant accès à leurs caractéristiques utiles. Cette contrainte explique son modèle : les tableaux et les pointeurs sont étroitement liés, les structures décrivent l’organisation de données en mémoire et les opérateurs correspondent souvent à des instructions peu coûteuses.

Le résultat n’est pas une indépendance totale vis-à-vis du matériel. La taille des types, l’ordre des octets ou certains comportements peuvent varier. Un programme portable doit respecter les garanties du langage plutôt que supposer les détails d’une machine particulière. Cette distinction entre ce que la norme promet et ce qu’une implantation choisit deviendra centrale dans toute l’histoire de C.

La diffusion universitaire d’Unix accélère alors un cercle vertueux. Les étudiants disposent du système, de son code et de son langage principal ; ils développent de nouveaux outils, portent Unix vers d’autres machines et emportent ensuite ces pratiques dans l’industrie. C ne s’impose donc pas uniquement par ses qualités abstraites : il voyage avec un environnement complet de programmation.

Une référence avant la norme

En 1978, Brian Kernighan et Dennis Ritchie publient The C Programming Language. L’ouvrage, surnommé K&R, combine une présentation concise, des exemples et une description qui sert longtemps de référence de fait.

La multiplication des compilateurs rend ensuite nécessaire une norme formelle. Le comité ANSI X3J11 commence ses travaux en 1983 ; la norme américaine paraît en 1989 et devient une norme ISO en 1990. Elle précise le langage et sa bibliothèque tout en cherchant à préserver les programmes existants.

Ritchie ne contrôle donc pas seul l’évolution de C. Après sa création, le langage devient une infrastructure partagée, régie par des normes et implantée sur une immense variété de processeurs.

Un héritage technique à double face

C influence directement C++ et Objective-C. Sa syntaxe marque aussi Java, JavaScript, C#, Go et de nombreux autres langages, même lorsque leur gestion de la mémoire ou leur modèle d’exécution diffèrent profondément.

Son empreinte la plus importante reste dans les couches basses : noyaux, pilotes, bibliothèques système, microcontrôleurs, bases de données et compilateurs. Une interface définie en C sert souvent de langage commun entre composants écrits dans des technologies différentes.

Cette présence ne fait pas de C le meilleur choix universel. Ses faibles garanties facilitent des vulnérabilités telles que dépassements de tampon et erreurs de durée de vie. Des outils d’analyse, conventions de codage et langages offrant davantage de sûreté cherchent à réduire ces risques. Comprendre l’influence de Ritchie consiste donc aussi à comprendre pourquoi l’industrie protège aujourd’hui davantage certaines opérations que C expose directement.

Ritchie, Thompson et la culture Unix

Ritchie contribue à Unix comme concepteur et programmeur, mais attribuer le système à une seule personne effacerait le contexte des Bell Labs. Ken Thompson joue un rôle initial déterminant ; Brian Kernighan, Douglas McIlroy et d’autres participent à ses outils, ses idées et sa diffusion.

Ritchie et Thompson reçoivent ensemble le prix Turing en 1983 pour leur développement de la théorie générique des systèmes d’exploitation et, en particulier, la mise en œuvre d’Unix. Cette récompense associe justement leurs contributions plutôt que de reconstruire un récit solitaire.

Ritchie poursuit sa carrière aux Bell Labs et travaille ensuite sur les systèmes Plan 9 et Inferno. Il meurt en 2011. Son style public, sobre et peu spectaculaire, contraste avec l’étendue de son héritage.

Pourquoi Dennis Ritchie compte encore

Ritchie a contribué à déplacer une frontière : le logiciel système n’avait plus à être presque entièrement prisonnier de l’assembleur et d’une machine. C a fourni un niveau d’abstraction modeste mais décisif, assez transparent pour le matériel et assez stable pour la portabilité.

Cette leçon demeure actuelle. Entre performance et protection, contrôle et abstraction, compatibilité et progrès, chaque langage système reformule encore les compromis auxquels C a donné une réponse durable.

Chronologie

  • 1941 : naissance de Dennis Ritchie à Bronxville, dans l’État de New York.
  • 1963 : diplôme de physique à Harvard.
  • 1967 : arrivée aux Bell Labs.
  • 1969 : premiers travaux sur Unix avec Ken Thompson et l’équipe des Bell Labs.
  • 1971 : Unix est porté sur le PDP-11.
  • 1972 : le développement de C prend sa forme reconnaissable à partir de B.
  • 1973 : le noyau Unix est réécrit en grande partie en C.
  • 1978 : publication de The C Programming Language avec Brian Kernighan.
  • 1983 : Ritchie et Thompson reçoivent le prix Turing.
  • 1989 : publication de la norme ANSI C.
  • 1990 : adoption de C comme norme internationale ISO.
  • 2011 : décès de Dennis Ritchie.

Questions fréquentes

Dennis Ritchie a-t-il créé Unix ?

Il en est l’un des principaux développeurs, mais Unix est une œuvre collective initiée par Ken Thompson aux Bell Labs. Ritchie a joué un rôle majeur dans son développement et sa réécriture en C.

Pourquoi Ritchie a-t-il créé C ?

Les langages disponibles répondaient imparfaitement aux besoins d’Unix sur le PDP-11. C devait offrir des types et une efficacité proches du matériel tout en permettant de déplacer le code entre architectures.

C est-il un langage de bas niveau ?

On le décrit souvent comme un langage de niveau intermédiaire. Il offre des structures de haut niveau comme les fonctions et les types, tout en exposant directement les adresses mémoire et la représentation des données.

Pourquoi la réécriture d’Unix en C était-elle importante ?

Elle réduisait la dépendance à l’assembleur d’une machine précise. Unix pouvait être porté plus facilement, ce qui a favorisé sa diffusion et démontré la viabilité des systèmes portables.

Quel rôle Brian Kernighan a-t-il joué ?

Kernighan n’a pas conçu C, mais il a contribué à sa documentation et à sa diffusion. Le livre écrit avec Ritchie a servi de référence avant la normalisation.

Pourquoi C reste-t-il utilisé malgré ses risques ?

Il produit du code prévisible, fonctionne sur presque toutes les architectures et s’intègre à de nombreux systèmes existants. Ces avantages s’accompagnent d’une responsabilité accrue concernant la mémoire et la sûreté.

Sources et références

  1. 1.Dennis Ritchie --- The Development of the C Language
  2. 2.Dennis Ritchie et Ken Thompson --- The UNIX Time-Sharing System
  3. 3.ACM --- Dennis Ritchie, prix Turing 1983
  4. 4.Computer History Museum --- Dennis Ritchie

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

James Gosling : l'ingénieur à l'origine de Java

Comment James Gosling et l'équipe Green de Sun ont conçu Java : d'Oak aux machines virtuelles, de la portabilité promise à l'héritage du langage.

17 août 20268 minLire

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