Es gibt keinen Unterschied, da „kompilierte Programmiersprache“ und „interpretierte Programmiersprache“ keine aussagekräftigen Konzepte sind. Jede Programmiersprache, und ich meine wirklich jede, kann interpretiert oder kompiliert werden. Interpretation und Kompilierung sind also Implementierungstechniken, keine Attribute von Sprachen.
Interpretation ist eine Technik, bei der ein anderes Programm, der Interpreter, Operationen im Namen des zu interpretierenden Programms ausführt, um es auszuführen. Wenn Sie sich vorstellen können, ein Programm zu lesen und Schritt für Schritt das zu tun, was es verspricht, beispielsweise auf einem Stück Rubbelpapier, dann ist es genau das, was ein Dolmetscher auch tut. Ein häufiger Grund für die Interpretation eines Programms ist, dass Dolmetscher relativ einfach zu schreiben sind. Ein weiterer Grund ist, dass ein Interpreter überwachen kann, was ein Programm während der Ausführung versucht, um beispielsweise aus Sicherheitsgründen eine Richtlinie durchzusetzen.
Das Kompilieren ist eine Technik, bei der ein in einer Sprache geschriebenes Programm (die „Ausgangssprache“) in ein Programm in einer anderen Sprache (der „Objektsprache“) übersetzt wird, was hoffentlich dasselbe bedeutet wie das ursprüngliche Programm. Während der Übersetzung versucht der Compiler häufig, das Programm so zu transformieren, dass das Objektprogramm schneller wird (ohne seine Bedeutung zu ändern!). Ein häufiger Grund für das Kompilieren eines Programms ist, dass es eine gute Möglichkeit gibt, Programme in der Objektsprache schnell und ohne den Aufwand für die Interpretation der Ausgangssprache auszuführen.
Sie haben möglicherweise basierend auf den obigen Definitionen vermutet, dass sich diese beiden Implementierungstechniken nicht gegenseitig ausschließen und sich möglicherweise sogar ergänzen. Traditionell war die Objektsprache eines Compilers Maschinencode oder ähnliches, was sich auf eine beliebige Anzahl von Programmiersprachen bezieht, die von bestimmten Computer-CPUs verstanden werden. Der Maschinencode würde dann "auf dem Metall" laufen (obwohl man sehen könnte, wenn man genau hinschaut, dass das "Metall" sehr ähnlich wie ein Interpreter funktioniert). Heutzutage ist es jedoch sehr üblich, einen Compiler zu verwenden, um Objektcode zu generieren, der interpretiert werden soll. So hat beispielsweise Java früher funktioniert (und funktioniert manchmal immer noch). Es gibt Compiler, die andere Sprachen in JavaScript übersetzen, das dann häufig in einem Webbrowser ausgeführt wird, der das JavaScript interpretieren kann. oder kompilieren Sie eine virtuelle Maschine oder nativen Code. Wir haben auch Interpreter für Maschinencode, mit denen eine Art von Hardware auf einer anderen emuliert werden kann. Oder man kann einen Compiler verwenden, um Objektcode zu generieren, der dann der Quellcode für einen anderen Compiler ist, der sogar rechtzeitig im Speicher Code kompiliert, damit er ausgeführt wird, was wiederum der Fall ist. . . Du hast die Idee. Es gibt viele Möglichkeiten, diese Konzepte zu kombinieren.