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

...komplette Frage anzeigen

1 Antwort

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

Antwort bewerten Vielen Dank für Deine Bewertung
TeeTier 24.09.2016, 11:48

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. :)

1
Isendrak 24.09.2016, 16:12
@TeeTier

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

0
wotan38 25.09.2016, 11:51

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.

0
Friguso 25.09.2016, 12:26

Danke, du hast mir sehr geholfen :)

0

Was möchtest Du wissen?