Michael Schröpl: Was sind Programmiersprachen?

Beitrag lesen

eine Programmiersprache erzeugt "auf dem Betriebssystem-Kernel selbst ablaufenden Code mit eigener interner Befehlssprache (also keine DOS-Batches...) ", d.h. es muß außer dem Betriebssystem nicht noch ein Ablaufsteuerndes Programm installiert sein, in der PC-Welt sind das dann EXE-Files oder DLLs, die von EXEs geholt werden.

Die Idee, eine Programmiersprache dadurch zu beschreiben, daß irgendetwas in einer definierten Umgebung "ausgeführt" wird, gefällt mir ganz gut.

Ich halte allerdings die Einschränkung auf genau *eine* der vielen möglichen Ebenen, nämlich das Betriebssystem, für zu restriktiv. Was ist denn mit Maschinensprache oder gar Microcode? In beiden wird sicherlich "programmiert" (etwa eine Addition zweier Registerinhalte durch eine Sequenz von Signalen beschrieben, die bestimmte Schaltkreise dazu bringen, entsprechend zu reagieren), und es ist auch kein Problem, dafür eine hochsprachenartige Syntax und einen Interpreter zu entwerfen (in der Tat machte man so etwas in der Theorie der Schaltwerke, jedenfalls Anfang der 80er Jahre ...).

Eine *konkrete* Plattform halte ich schon deshalb für unbrauchbar, weil ich jede Plattform emulieren kann. Wenn C eine Sprache ist, *weil* der übersetzte Code gegen das Betriebssystem "ausgeführt" wird, ist C dann keine Sprache mehr, wenn ich ein C-Programm in einem Windows-Emulator laufen lasse, der nicht selbst ein Betriebssystem darstellt (dieses führt ja gerade das Programm "Emulator" aus!)?
Ein Programm kann durchaus eine von mehreren Plattformen realisieren, je nachdem wie es gerade eingesetzt wird.

Außerdem bezieht sich etwa die Diskussion über Compiler oder Interpreter ja gar nicht auf die Sprache, sondern auf die Implementierung eines Programms zur Auswertung der Sprache. Für Basic gibt es Interpreter, aber auch Compiler; für Pascal gibt es Compiler, die plattformspezifischen Code erzeugen, und solche, die abstrakten Code erzeugen, der selbst wiederum durch ein plattformspezifisches Backend weiterverarbeitet werden muß. Das hat aber nichts mit Eigenschaften der Sprache zu tun, sondern mit dem modularen Entwurf eines plattformübergreifend einsetzbaren Compiler-Frontends.

Es gab ja mal Planungen für Rechner, deren Betriebssystem ein Java-Interpreter sein sollte (Java als Maschinensprache!) - ich weiß nicht, ob sie je gebaut worden sind. Da bekäme der Begriff "Plattformunabhängigkeit" eine ganz neue Bedeutung ... :-)