Was ist die Geschichte des C-Compilers?


23

Wenn wir sagen, dass "Dennis Ritchie C-Sprache entwickelt hat", meinen wir damit, dass er einen Compiler (unter Verwendung einer bereits entwickelten anderen Sprache) erstellt hat, der den in C-Sprache geschriebenen Quellcode kompilieren kann? Wenn ja, in welcher Sprache hat er den ersten C-Compiler geschrieben? Ich verstehe, dass ein Compiler ein Programm ist und wir mit dem derzeit verfügbaren C-Compiler einen weiteren Compiler für C-Sprache erstellen können. Ist das korrekt?

Antworten:


23

Aus dem Wiki :

Ritchie ist am bekanntesten als Schöpfer der Programmiersprache C und Hauptentwickler des Unix-Betriebssystems sowie als Mitautor des endgültigen Buches über C.

Auch aus dem Wiki :

Der erste C-Compiler von Dennis Ritchie verwendete einen rekursiven Descent-Parser, der spezifische Kenntnisse über den PDP-11 enthielt und sich auf einen optionalen maschinenspezifischen Optimierer stützte, um den generierten Assembler-Code zu verbessern.

Der erste C-Compiler wurde ebenfalls von ihm in Assembler geschrieben.

Diese Seite von bell-labs beantwortet die meisten Ihrer Fragen.


Die erste Verbindung ist unterbrochen.
Mahmoud Hossam

IIRC, C basierte auf einer früheren Sprache namens B, und Unix basierte auf einem früheren Betriebssystem namens Multics. Es wäre eine offensichtliche Vermutung, dass diese verwendet wurden, um die Entwicklung zu starten - aber nach dem, was ich gelesen habe, ist das eine falsche Vermutung. Die frühe Entwicklung von Unix war in Assembler, bis C zum Beispiel übernahm.
Steve314

2
IIRC, B war eine abgespeckte Version von BCPL, einer frühen Programmiersprache für Systeme. Ich glaube , dass viele der frühen Unix Arbeit wurde beschrieben mit B, aber ich bin nicht sicher , ob es jemals eine tatsächliche Unix - Compiler für sie (möglicherweise ein Cross-Compiler , dass RAN auf etwas anderes).
TMN

Autsch. . . Schreiben eines Compilers in Assemblersprache.
Compman

6
@compman Irgendwann muss jemand einen Compiler in Assembly schreiben - wie kann man sich sonst den Weg zu einem Compiler in einer HLL bahnen?
Richard Gadsden

9

Schauen Sie sich diesbezüglich eine Geschichtsstunde an: http://www.livinginternet.com/i/iw_unix_c.htm

Als der PDP-11-Computer bei Bell Labs eintraf, baute Dennis Ritchie auf B auf, um eine neue Sprache namens C zu erstellen, die Thompsons Vorliebe für prägnante Syntax übernahm und eine leistungsstarke Mischung aus Funktionen auf hohem Niveau und den für die Programmierung eines Betriebs erforderlichen Detailfunktionen aufwies System. Die meisten Komponenten von Unix wurden schließlich in C umgeschrieben, was 1973 mit dem Kernel selbst gipfelte

Auch das könnte interessant sein: http://cm.bell-labs.com/cm/cs/who/dmr/chist.html


1
AFAIK, "gebaut auf" wie in "Design basiert auf Design von" , nicht wie "kompiliert mit" .
Vartec

8

Dennis Ritchie benutzte Bootstrapping . Bootstrapping ist eine einfache Idee, bei der Sie einen anfänglichen, einfachen Compiler in der Assembly entwickeln und dann diesen einfachen Compiler verwenden, um Ihren vollwertigen Compiler zu kompilieren, der in (einer Teilmenge von) Ihrer Zielsprache geschrieben ist. Auf diese Weise hat Ritchie sehr früh den Compiler last1120c erstellt .



2

C wurde so konzipiert, dass Unix auf andere Plattformen portiert werden kann, ohne dass der gesamte Assemblycode für die neue Plattform neu geschrieben werden muss.

Daher das Sprichwort "C ist tragbarer Assembler". Dies spiegelt wider, dass C absichtlich einer CPU (ab 1970) auf Abstraktionsebene sehr nahe kommt und auch der Grund dafür ist, dass die meisten eingebetteten Programme in einer Art C geschrieben sind.

Daher ist C eng mit Unix verbunden, und die Unix-Leute schrieben den ersten C-Compiler auf der Grundlage früherer Arbeiten, um das zu tun, was sie brauchten.

Bitte beachten Sie, dass Kernigan und Richie ein ausgezeichnetes Buch über C geschrieben haben, das wahrscheinlich eines der einflussreichsten Nachschlagewerke zu einer Computersprache ist, da es so klar und prägnant war, dass die meisten Leser fortgeschrittene Themen wie Zeiger und Rekursion daraus lernen konnten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.