Frage von Friguso, 32

Für welche Programmiersprachen gibt es Compiler, für welche Interpreter?

Hallo Community, meine Frage ist, für welche Programmiersprachen es Compiler gibt und für welche es Interpreter gibt. Außerdem bräuchte ich noch jeweils die Vorteile und Nachteile.

Vielen Dank schonmal!

Friguso

Antwort
von Isendrak, 26

Die folgende Liste erhebt keinen Anspruch auf Vollständigkeit:

Compiler: C, C++, div. BASIC-Dialekte (z.B.: FreeBasic), Pascal

Interpreter: Javascript, Python, VBScript, Perl, PHP

Interpretierter Bytecode (Compiler + Interpreter): Java, Visual Basic, C#

Vorteile Compiler vs. Interpreter: Kann "direkt" vom Prozessor abgearbeitet werden, daher höhere Geschwindigkeit, benötigt (zumindest meistens) keine zusätzliche Laufzeitumgebung sondern "läuft einfach so", schwierig bis annähernd unmöglich aus dem kompilierten Programm den Quelltext zu regenerieren (Kann durchaus von "Vorteil" sein).

Vorteile Interpreter vs. Compiler: Plattformunabhängig (mindestens teilweise), muss nicht erst kompiliert werden.

Nachteile Compiler vs. Interpreter: Nicht Plattformunabhängig, muss für jede Zielplattform einzeln kompiliert (und ggf. angepasst) werden.

Nachteile Interpreter vs. Compiler: Geringere Geschwindigkeit, Programm liegt in Quelltextform vor (Kann durchaus von "Nachteil" sein).

P.S.: Wer Rechtschreibfehler findet, darf diese behalten, wer Inhaltliche Fehler findet, möge diese an der Rezeption abgeben. %D

Kommentar von TeeTier ,

Gerade BASIC ist so eine Sache, da viele Dialekte interpretiert werden!

Und gerade solche Sprachen wie Python, Ruby, PHP, usw. werden intern auch kompiliert, nur bekommt man davon selten etwas mit. Kompilierte Python-Module haben die Dateiendung "pyc" und bei PHP werden die Kompilate durch sog. "Optimizer" im RAM gehalten, ohne bei jedem Aufruf erneut durch den Interpreter genudelt zu werden. :)

Kommentar von Isendrak ,

Kompilierte Python Module (.pyc) sind allerdings ähnlich wie bei Java auch nur als Bytecode kompiliert, der dann vom Interpreter ausgeführt wird. Man kann allerdings auch z.B. mit Cython nativ kompilierte Module erstellen (.dll bzw. .so).

Des weiteren kann Python-Code auch unkompiliert ausgeführt werden... Das gilt allerdings effektiv nur für das jeweilige "__main__" Modul... %D

Ähnliches dürfte ggf. auch für Ruby gelten.

P.S.: Das mit dem Optimizer bei PHP wusste ich bisher noch nicht...

P.P.S.: Bei C# (bzw. .NET insgesamt...) bin ich mir nicht 100% sicher, ob ich das korrekt eingeordnet hab... Könnt auch sein, dass da ein nativer Stub verwendet wird, der dann die ".NET Magic" startet... %D

Kommentar von wotan38 ,

Ergänzend dazu: Meine Workbench (COBOL) kann sowohl als auch. Zum Testen wird der Interpreter verwendet, weil der eine direkte Verbindung zum Quellcode hat. Für den effektiven Einsatz wird compiliert und nativer Code erstellt. Dieser wiederum läuft z.T. über eine Runtimebibliothek, die optional auch fest in das Progamm eingebunden werden kann.

Kommentar von Friguso ,

Danke, du hast mir sehr geholfen :)

Keine passende Antwort gefunden?

Fragen Sie die Community