Zu viele Semantiken und Aussagen basieren auf Meinungen.
Zunächst einmal: C # ist keine interpretierte Sprache. Die CLR und die JVM werden als "Laufzeiten" oder "Middleware" betrachtet, aber der gleiche Name gilt für Dinge wie Perl. Dies schafft viel Verwirrung bei Menschen, die sich mit Namen befassen.
Der Begriff "Interpreter", der sich auf eine Laufzeit bezieht, bedeutet im Allgemeinen, dass vorhandener Code nicht nativen Code interpretiert. Es gibt zwei große Paradigmen: Das Parsen liest den Rohquellcode und ergreift logische Aktionen. Die Bytecode-Ausführung kompiliert den Code zunächst zu einer nicht nativen Binärdarstellung, für deren Interpretation viel weniger CPU-Zyklen erforderlich sind.
Java wurde ursprünglich zu Bytecode kompiliert und durchlief dann einen Interpreter. Jetzt liest die JVM den Bytecode und kompiliert ihn just-in-time zu nativem Code. CIL macht dasselbe: Die CLR verwendet die Just-in-Time-Kompilierung für nativen Code.
Berücksichtigen Sie alle Kombinationen aus dem Ausführen von Quellcode, dem Ausführen von Bytecode, dem Kompilieren in native Just-in-Time-Kompilierung, dem Ausführen von Quellcode über einen Compiler in Just-in-Time-Native usw. Die Semantik, ob eine Sprache kompiliert oder interpretiert wird, wird bedeutungslos.
Als Beispiel: Viele interpretierte Sprachen verwenden die Just-in-Time-Bytecode-Kompilierung. C # wird zu CIL kompiliert, das JIT zu native kompiliert. Im Gegensatz dazu kompiliert Perl sofort ein Skript zu einem Bytecode und führt diesen Bytecode dann über einen Interpreter aus. Sie können eine C # -Baugruppe nur im CIL-Bytecode-Format ausführen. Sie können ein Perl-Skript nur im Rohquellcode-Format ausführen.
Just-in-Time-Compiler führen auch viele externe und interne Instrumente aus. Die Laufzeit verfolgt die Ausführung verschiedener Funktionen und passt dann das Codelayout an, um Zweige und Codeorganisation für den jeweiligen Ausführungsfluss zu optimieren. Dies bedeutet, dass JIT-Code schneller ausgeführt werden kann als nativ kompilierter Code (wie C ++ normalerweise ist oder wie C # über IL2CPP ausgeführt wird), da die JIT ihre Optimierungsstrategie während der Ausführung an den tatsächlichen Ausführungsfall des Codes anpasst.
Willkommen in der Welt der Computerprogrammierung. Wir haben uns entschlossen, es extrem kompliziert zu machen und dann alles mit unbeschreiblichen Namen zu versehen. Der Zweck ist es, Flammenkriege über die Definition von Wörtern zu erzeugen, die keine praktische Bedeutung haben.