Wie wurde der erste C-Compiler geschrieben?

Lesezeit: 2 Minuten

Benutzeravatar von Jaskaran SP
Jaskaran SP

Stimmt es, dass der erste C-Compiler in C selbst geschrieben wurde? Wie wurde es dann ausgeführt und kompiliert? Oder wurde dieser Compiler in Assembler geschrieben?

  • Welcher C-Compiler?

    – nett

    8. August 2013 um 12:01 Uhr

  • Bootstrapping

    – PP

    8. August 2013 um 12:01 Uhr

  • Lochkarten. Deshalb int ist implizit, spart also Löcher.

    – Kerrek SB

    8. August 2013 um 12:03 Uhr

  • @ H2CO3 das Ei war das erste. Aber welcher war zuerst, der Hähnchen Ei oder Huhn? 😉

    – chux – Wiedereinsetzung von Monica

    8. August 2013 um 12:06 Uhr

  • Weißt du nicht, dass es in Emacs Lisp geschrieben ist? Mx build-c-compiler

    – Schizz

    8. August 2013 um 12:28 Uhr

Benutzeravatar von Hans Passant
Hans Passanten

Es ist ziemlich gut beschrieben in Der Bericht von Dennis Ritchie der Geschichte der C-Sprache.

Geben Sie nur eine Zusammenfassung dessen, was er dort geschrieben hat, verwenden Sie seinen Artikel für die feineren Details. C begann mit der BCPL-Sprache, Ken Thomson hatte Zugriff auf einen Compiler dafür, der auf ihrem General Electrics 635 Mainframe lief. Thomson war mit der Sprache unzufrieden und verwendete BCPL, um einen Compiler für die B-Sprache zu schreiben, ein evolutionärer Schritt über BCPL hinaus, der einige der technischen Probleme in BCPL beseitigte.

Sie verwendeten B, um Programme auf ihrem PDP-7-Minicomputer zu erstellen, obwohl die meisten von ihnen kaum mehr als Spielzeugprogramme waren, hatte die Maschine sehr eingeschränkte Hardwarefähigkeiten. Ein wichtiger Schritt von Thomson war es, den B-Compiler in B selbst umzuschreiben. Ein üblicher Bootstrapping-Schritt.

Dieser Compiler wurde dann schrittweise durch einen kurzlebigen Zwischenschritt namens NB (New B) optimiert, um C zu ähneln. Der PDP-11-Minicomputer war maßgeblich an diesem Schritt beteiligt und gab ihnen genügend Raum, um die Sprache und den Compiler zu verbessern.

  • Jemand hat eine von Dennis Ritchies frühen PDP-11-Versionen für die Nachwelt auf github gestellt: github.com/mortdeus/legacy-cc Quelle

    – sehen

    8. August 2013 um 15:39 Uhr


  • Wow. Das sieht nach einem interessanten Hack aus 🙂 (Für einen Moment dachte ich, dass es ein Zeichen der Garbage Collection im ephemeren C-Compiler wäre :<)

    – sehen

    8. August 2013 um 23:32 Uhr

  • Der obige Link ist defekt – für die Nachwelt glaube ich, dass dies dieselbe Beschreibung ist: bell-labs.com/usr/dmr/www/chist.html

    – tonysdg

    21. Januar 2016 um 19:36 Uhr

Benutzeravatar von Belkacem REBBOUH
Belkacem REBBOUH

Der erste C-Compiler wurde nicht in C geschrieben, normalerweise verwenden wir beim Schreiben eines Compilers entweder die Assemblersprache oder eine andere Programmiersprache, und es ist üblich, dass der Compiler nach der ersten Kompilierung in seiner Muttersprache neu geschrieben wird.

Es gibt viele Programmiersprachen, die in C geschrieben und dann in ihrer Muttersprache umgeschrieben wurden: Java zum Beispiel, Ada …

  • Eigentlich weiß ich nicht, wann das letzte Mal ein Compiler in Assembly geschrieben wurde. Ich glaube, das kam Mitte der 1960er-Jahre schnell aus der Mode. Während zumindest einige der Compiler der 1950er Jahre in Assembler geschrieben wurden (Hoppers berühmter erster Compiler für die A-0-Sprache im Jahr 1952 und IBM (Backus et team) FORTRAN im Jahr 1957. Bis 1960 mindestens ein Compiler, nämlich der COBOL-Compiler für UNIVAC-II wurde in FLOW-MATE geschrieben. Geschichte des Compilerbaus Seitdem wurden die meisten von bestehenden Hochsprachen gebootstrapped.

    – mctylr

    8. August 2013 um 19:26 Uhr

  • Hallo, im Legacy-C-Compiler: github.com/mortdeus/legacy-cc Wir können sehen, dass der Einstiegspunkt ein in Assembly geschriebenes Makro ist und die Codebasis zu 17 % aus Assembly besteht.

    – Belkacem REBBOUH

    9. August 2013 um 14:15 Uhr

  • Ich habe auch den Legacy-CC überflogen, der Assembly-Teil ist meiner Meinung nach notwendig, weil er irgendwann Assembly ausgeben muss. Ich denke, die Assembly in Legacy-CC sind hauptsächlich die Vorlagen, die der Compiler ausgeben wird. Aber ich möchte auch darauf hinweisen, dass die Montage nicht unbedingt wie eine Plage zu vermeiden ist, Chris Sawyer soll Roller Coaster Tycoon in der Montage entwickelt haben! Wenn Sie die Sprache beherrschen, kann es auch produktiv sein.

    – v.oddou

    28. März 2014 um 0:53 Uhr

  • Die ersten Ada-Compiler wurden nicht in C geschrieben. Der, an dem ich (bei TeleSoft) gearbeitet habe, wurde in Pascal geschrieben und dann in Ada neu implementiert. Ich glaube, der allererste validierte Ada-Compiler wurde in SETL geschrieben.

    – Keith Thompson

    8. Februar 2015 um 18:55 Uhr

  • nur ein kleiner nitpick: die java-sprache hat einen in java geschriebenen compiler und eine in c++ geschriebene virtuelle maschine.

    – Alexander Ach

    8. Februar 2015 um 20:35 Uhr

Benutzeravatar von egyik
egyik

Lies die Notiz von Dennis Ritchie weiter UrzeitC weist darauf hin, dass sich C ähnlich wie das Huhn und das Ei aus einer Vorläufersprache entwickelt hat zusammen mit einem eigenen Compiler über Bootstrapping. Die Speziationszeiten waren schneller als bei Gallus gallus domesticus.

Man kann sogar sehen, wie der Compiler-Quellcode inmitten der evolutionären Turbulenzen gefangen ist. Die Notiz ist mit zwei Schnappschüssen verknüpft, die von Bandsicherungen wiederhergestellt wurden. Dieser Code hat auch wurde auf github platziert. Diese Schnappschüsse stellen Zwischenfossilien dar, Jahre vor der K&R-Syntax. Dennis ‘Beschreibung eines der Bänder zeigt, dass es sich um ein Standbild von Strukturen handelt, die gebootstrapped werden:

“prestruct-c” ist eine Kopie des Compilers, kurz bevor ich anfing, ihn so zu ändern, dass er Strukturen selbst verwendet.

Mit anderen Worten, der Compiler wurde erweitert Unterstützung Strukturen, aber noch nicht verwenden Sie. Ein guter Zeitpunkt, um ein Band-Backup zu erstellen…

1416080cookie-checkWie wurde der erste C-Compiler geschrieben?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy