Wie programmiert man eine Programmiersprache?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Übersetzer/Interpreter für Programmiersprachen werden heute in einer schon existierenden Programmiersprache programmiert. Am häufigsten wird dafür C verwendet. Wieso, das habe ich hier erklärt: http://www.gutefrage.net/frage/neue-programmiersprache-erfinden

Wenn Du genauer wissen willst, wie man das macht, dann schau Dich mal unter dem Begriff Übersetzerbau bzw. Compilerbau um. Das wichtigste programmiererische Problem dabei ist, wie man der Maschine die Grammatik der Programmiersprache so beibringt, daß sie grammatische Fehler findet, korrekte Programme in ihre einzelnen Sinnbestandteile zerlegt (Scanning und Parsing) und für diese Teile dann die entsprechenden Anweisungen in Maschinencode zusammenbaut.

Ein bekanntes ausführliches Lehrbuch ist das mit dem Drachen von Aho und Ullman. Gut zu lesen und weniger umfangreich sind die Bücher von David Gries und Niklaus Wirth. (Nur als Bsp. Es gibt recht viele.)

Eine interessante Frage. Schließlich ist ein Computer im Prinzip dumm wie Brot - er kann nur 1 und 0. Die ersten Computer ( z. B. Zuse) funktionierten ja noch mit Lochkarten -.Loch=1 kein Loch=0. Die erste Programmiersprache, mit der ich Berührung hatte, war "BASIC". Aber auch da mussten die Befehle in Binärcode umgewandelt und kompiliert werden. Der Complier ist dann also der "Übersetzer", der die jeweilige Programmiersprache in Binärcode umwandelt. Es gibt also für jede Sprache einen "Dolmetscher", der z. B. von Java nach Binär "übersetzt".

Die Programmiersprachen fußen alle auf den Maschinensprache ("Assembler"). Das ist der interne Code, nach dem der Mikroprozessor funktioniert. Wenn du z.B. in C programmierst jagst du wenn du mit einem Programm fertig bist, das Programm durch einen "Compiler", der dann den C - Code in Maschinensprache umsetzt und dann gestartet werden kann.

Theoretisch könntest du auch direkt in Maschninensprache programmieren, das ist aber recht umständlich (allerdings das schnellste).

Suboptimierer  15.04.2013, 16:45

Assembler ist schon ein Overhead auf die Maschinensprache, aber ansonsten topp.

1