Quelle est l'histoire du compilateur C?


23

Quand nous disons que "Dennis Ritchie a développé le langage C", voulons-nous dire qu'il a créé un compilateur (utilisant un autre langage "déjà" développé) qui peut compiler le code source écrit en langage C? si oui, quel langage a-t-il utilisé pour écrire le premier compilateur C? Je comprends qu'un compilateur est un programme et nous pouvons créer un autre compilateur pour le langage C en utilisant le compilateur C actuellement disponible. Est-ce exact?

Réponses:


23

Du wiki :

Ritchie est surtout connu comme le créateur du langage de programmation C et un développeur clé du système d'exploitation Unix, et comme co-auteur du livre définitif sur C.

Aussi à partir du wiki :

Le premier compilateur C écrit par Dennis Ritchie a utilisé un analyseur de descente récursif, incorporé des connaissances spécifiques sur le PDP-11 et s'est appuyé sur un optimiseur spécifique à la machine en option pour améliorer le code du langage d'assemblage qu'il a généré.

Le premier compilateur C a également été écrit par lui, en assembleur.

Cette page de bell-labs répond à la plupart de vos questions.


Le premier lien est rompu.
Mahmoud Hossam

IIRC, C était basé sur un langage antérieur appelé B, et Unix était basé sur un système d'exploitation antérieur appelé Multics. Ce serait une supposition évidente que ceux-ci ont été utilisés pour démarrer le développement - mais d'après ce que j'ai lu, c'est une mauvaise supposition. Les premiers développements d'Unix étaient en assembleur, jusqu'à ce que C prenne le relais, par exemple.
Steve314

2
IIRC, B était une version allégée de BCPL, qui était un des premiers langages de programmation de systèmes. Je pense qu'une grande partie des premiers travaux Unix a été décrite en utilisant B, mais je ne suis pas sûr qu'il y ait jamais eu un véritable compilateur Unix pour cela (peut-être un compilateur croisé qui a fonctionné sur autre chose).
TMN

Aie . . . écrire un compilateur en langage assembleur.
compman

6
@compman À un moment donné, quelqu'un doit écrire un compilateur dans l'assembly - sinon comment amorcer votre chemin vers un compilateur dans une HLL?
Richard Gadsden

9

Consultez ceci pour une leçon d'histoire: http://www.livinginternet.com/i/iw_unix_c.htm

Lorsque l'ordinateur PDP-11 est arrivé à Bell Labs, Dennis Ritchie a construit sur B pour créer un nouveau langage appelé C qui a hérité du goût de Thompson pour la syntaxe concise et avait un mélange puissant de fonctionnalités de haut niveau et les fonctionnalités détaillées nécessaires pour programmer un fonctionnement système. La plupart des composants d'Unix ont finalement été réécrits en C, culminant avec le noyau lui-même en 1973

Cela peut également être intéressant: http://cm.bell-labs.com/cm/cs/who/dmr/chist.html


1
AFAIK, "construit sur" comme dans "conception basée sur la conception de" , pas comme "compilé en utilisant" .
vartec

8

Dennis Ritchie a utilisé le bootstrap . L'amorçage est une idée simple, où vous développez un compilateur initial simple en assembleur, puis vous utilisez ce compilateur simple pour compiler votre compilateur à part entière écrit dans (un sous-ensemble de) votre langue cible. C'est ainsi que Ritchie a créé très tôt le compilateur last1120c .



2

C a été conçu pour permettre de porter Unix sur d'autres plates-formes sans avoir à réécrire tout le code assembleur de la nouvelle plate-forme.

D'où le dicton courant que «C est assembleur portable». Cela reflète le fait que C est intentionnellement très proche d'un CPU (à partir d'environ 1970) au niveau de l'abstraction et c'est aussi la raison pour laquelle la plupart des logiciels intégrés sont écrits dans une sorte de C.

Ainsi, C est intimement lié à Unix, et les gens d'Unix ont écrit le premier compilateur C basé sur des travaux antérieurs pour faire ce dont ils avaient besoin.

Veuillez noter que Kernigan et Richie ont écrit un excellent livre sur C qui est probablement l'un des ouvrages de référence les plus influents sur un langage informatique, car il était si clair et concis que la plupart des lecteurs pouvaient apprendre des sujets avancés comme les pointeurs et la récursivité.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.