Was bedeutet es zu sagen, dass C in C kompiliert wurde? [Duplikat]

7

Ich habe so etwas gesehen geschrieben ... C wurde in C geschrieben, oder ABAP wurde in ABAP geschrieben ..

Ich habe sogar ein kerl gesehen, dass dies so ist eines der Kriterien zum Sortieren von Sprachen in true Programmiersprachen.

Ich möchte, dass mir jemand erklärt, was das bedeutet.

Vielen Dank im Voraus.

BEARBEITEN: Geänderter Titel von: " C wurde mit C erstellt" C wurde mit C kompiliert.

    
Felipe Almeida 13.03.2011, 13:58
quelle

5 Antworten

11

Sie beginnen mit der Assemblierung, Sie erstellen eine erste Version und können immer eine neue Version eines Compilers mit der vorherigen Version schreiben.

Sie benötigen keinen Compiler, um den Compiler in seiner Sprache zu starten. Sie müssen nur einen Interpreter für eine C-Untermenge schreiben. Dann verwenden Sie diese Teilmenge, um sie zu verbessern.

Zu der Zeit, als C erfunden wurde (um 1967), dachte niemand, dass es eine vernünftige Idee wäre, einen Compiler oder ein Betriebssystem in einer höheren Programmiersprache zu schreiben, außer Brian Kerninghan und Dennis Ritchie. Sie haben sich als richtig erwiesen!

    
Costis Aivalis 13.03.2011, 14:03
quelle
9

Es bedeutet, dass der C-Compiler in C geschrieben wurde.

Zunächst ist das ein Problem, denn wie kann man einen Compiler in C schreiben, wenn noch kein Compiler für C existiert?

Aktualisierung:

Wenn Sie einen Compiler in einer anderen Sprache schreiben, fragen sich die Leute, ob die Sprache für den Aufbau eines Compilers zu begrenzt ist oder ob die Erfinder der Sprache nicht von ihrer Sprache überzeugt sind und eine andere bevorzugen.

Aber es gibt gute Gründe, einen Compiler in einer anderen Sprache zu schreiben.

    
Codo 13.03.2011 14:00
quelle
1

Compiler sind relativ komplizierte Programme, daher wird manchmal angenommen, dass die Fähigkeit, etwas wie einen Compiler zu schreiben, ein Hinweis darauf ist, dass eine Computersprache genug Macht hat, um komplizierte Programme zu schreiben - also eine "wahre" Programmiersprache.

>

Der Compiler muss nicht in der Sprache geschrieben sein, in der er kompiliert wird. Zum Beispiel, wenn C verwendet wird, um einen Pascal-Compiler zu schreiben, erfüllt es immer noch den (etwas nicht-wissenschaftlichen) Test, dass C eine wahre Programmiersprache ist.

Damit es einen Test gibt, müssen natürlich Computersprachen vorhanden sein, die nicht leistungsfähig genug sind, um einen Compiler zu schreiben - oder dass sie so kompliziert oder kompliziert sind, dass sie gar nicht erst versucht werden. Einige 4GL, bestimmte Skriptsprachen oder spezialisierte Sprache (können Sie einen Compiler in LISP schreiben? Ich weiß nicht ...) kann in diese Kategorie fallen.

Wie gesagt, ist dies keineswegs ein "wissenschaftlicher" Test einer Sprache. Es kam ursprünglich nur für das Marketing zustande. Es gibt jedoch einige kleine Vorteile: Wenn Sie einen Compiler, O / S und Dienstprogramme in der gleichen Sprache geschrieben haben, können Sie eine vollständige Programmierumgebung in einer einzigen Sprache erstellen, was die Wartung erheblich vereinfacht. Unix und C ist ein gutes erstes Beispiel für eine "Nur-C" -Umgebung.

    
Stephen Chung 13.03.2011 14:19
quelle
0

Es bedeutet wirklich nichts. Aussagen wie diese können nicht wirklich auf eine Sprache als Ganzes angewendet werden, sondern nur spezifische Implementierungen davon. Zum Beispiel kann der Code für einen C-Compiler wohl in C geschrieben werden.

    
Oliver Charlesworth 13.03.2011 14:00
quelle
0

Ich würde vorschlagen, dass der true Test für "wahre Sprache" wäre, ob es Turing abgeschlossen . Interpretierte Sprachen sind nicht weniger wahre Sprachen, aber Sie könnten den Interpreter nicht in der interpretierten Sprache schreiben, was vielleicht Ihr "Ein-Mann" ist. (Eigentlich könntest du das, aber du brauchst den ursprünglichen Interpreter, um den neuen Interpreter zu starten, mehrere Generationen später wäre es schrecklich langsam und groß).

    
Clifford 13.03.2011 19:40
quelle