2010-09-11 3 views
7

In Ordnung, ich denke, diese Frage wurde hier oft gestellt.Erstellen von Programmiersprachen und Compiler-Design. Sind sie verwandt?

Ich möchte eine Programmiersprache erstellen, die nicht unbedingt heute beginnt, sondern über einen Zeitraum von 2-3 Jahren. Ich bin kein sehr guter Programmierer, aber ich verbessere mich. Was ich fragen wollte ist, wie eng es ist, eine Sprache zu erstellen und einen Compiler zu schreiben?

Da ein Compiler eine Sprache von einer Form in eine andere übersetzt, denke ich, es geht darum, einen Compiler für ein bestimmtes Stück Text zu schreiben. Wenn ich Compiler Design lerne, kann ich meine eigene Programmiersprache schreiben?

Antwort

4

Sie können eine Programmiersprache entwerfen, ohne etwas über die Implementierung von Compilern zu wissen, und umgekehrt. Der Sprachenentwickler kann eine Spezifikation für die Sprache schreiben, und ein Compiler-Implementor kann dies dann übernehmen und den Compiler erstellen.

Wenn dies jedoch ein persönliches Projekt ist, dann müssen Sie wahrscheinlich lernen, beides zu tun. Eine Programmiersprache, für die es keinen Compiler gibt, ist rein theoretisch, und es ist schwierig herauszufinden, wie gut eine Programmiersprache ist, ohne echte Programme damit zu schreiben und auszuführen. Selbst wenn Sie jemanden finden, der bereit ist, den Compiler für Sie zu implementieren, möchten Sie vielleicht nicht jedes Mal auf diese Person warten müssen, wenn Sie eine neue Idee ausprobieren möchten. Sie werden also wissen wollen, wie Sie es selbst machen.

Die Implementierung eines Compilers ist ein ziemlich fortgeschrittenes Programmierprojekt. Wenn Sie also gerade erst als Programmierer anfangen, haben Sie eine steile Lernkurve vor sich. Vielleicht möchten Sie beginnen, indem Sie sich die Tutorials und Beispiele für LLVM ansehen, obwohl dies möglicherweise keine geeignete Compiler-Infrastruktur für Ihre Sprache ist.

2

Naruto, es hängt davon ab, welche Art von "Sprache" Sie erstellen möchten. Wenn es sich um eine einfache, zum Lernen geeignete Sprache handelt und Sie die Grammatik usw. wählen, brauchen Sie nicht viel über Programmierung zu wissen. ABER, wenn Sie mit einem ernsthaften zu tun haben, müssen Sie mindestens eine Programmiersprache tief lernen, nicht nur um es zu verwenden, sondern um zu versuchen, einige seiner Konzepte zu erreichen, zum Beispiel OO, Generika, Lambda Ausdrücke, usw., usw.

Glauben Sie mir, das ist keine Aufgabe von Monaten, aber eine ernste Reise. Wie auch immer, ich wünsche dir Glück;)

+0

Ich möchte eine einfache, nur zum Lernen geeignete Sprache entwickeln. –

2

Intim verwandt. Sie haben wirklich keine Sprache, es sei denn, Sie haben eine Möglichkeit, sie in ein ausführbares Formular zu übersetzen.

1

Es hängt davon ab, was Sie mit "Compiler" meinen. Compiler/Interpreter bestehen in der Regel aus zwei großen Teilen: einem Parser-Teil, der einen Text in Ihrer Sprache liest und daraus eine interne Struktur (AST) erstellt, und einem Code-Generierungs-/Interpretationsteil, der den AST liest und in die Maschine übersetzt oder Bytecodes. Während Sie sicherlich wissen müssen, wie Sie einen Parser für Ihre Sprache schreiben, ist die Code-Generierung zumindest in den frühen Phasen weniger wichtig. Sie können damit beginnen, einfach Ihre Sprache in C zu übersetzen und von dort aus zu sehen, wohin Sie gehen.

+0

Das habe ich mir vorgenommen. Ich habe Compiler gekauft: Prinzipien, Techniken und Tools von Aho, Lam, Sethi und Ullman. Mal sehen, wie weit ich von dort komme. –

Verwandte Themen