Programmiersprache Implementierung
Im Computerprogrammierung, a Programmiersprache Implementierung ist ein System zur Ausführung Computerprogramme. Es gibt zwei allgemeine Ansätze zur Implementierung der Programmiersprache:[1]
- Deutung: Das Programm wird von einem Dolmetscher als Eingabe gelesen, der die im Programm geschriebenen Aktionen ausführt.[2]
- Zusammenstellung: Das Programm wird von einem Compiler gelesen, der es in eine andere Sprache übersetzt, wie z. Bytecode oder Maschinensprache. Der übersetzte Code kann entweder direkt sein hingerichtet durch Hardware oder als Eingabe für einen anderen Dolmetscher oder einen anderen Compiler dienen.[2]
Dolmetscher
Ein Dolmetscher besteht aus zwei Teilen zusammen: a Parser und ein Bewerter. Nachdem ein Programm von einem Dolmetscher als Eingabe gelesen wurde, wird es vom Parser verarbeitet. Der Parser bricht das Programm in Sprachkomponenten zu bilden a Baum analysieren. Der Bewerter verwendet dann den Parse -Baum, um das Programm auszuführen.[3]
Virtuelle Maschine
A virtuelle Maschine ist eine spezielle Art von Dolmetscher, die Bytecode interpretiert.[2] Bytecode ist a tragbar Low-Level-Code ähnlich dem Maschinencode, obwohl er im Allgemeinen auf einer virtuellen Maschine anstelle einer physischen Maschine ausgeführt wird.[4] Um ihre Effizienz zu verbessern, viele Programmiersprachen wie Java,[4] Python,[5] und C#[6] werden vor der Interpretation zu Bytecode zusammengestellt.
Just-in-Time-Compiler
Einige virtuelle Maschinen enthalten a Just-in-Time (JIT) Compiler Verbesserung der Effizienz der Bytecode -Ausführung. Während der Bytecode von der virtuellen Maschine ausgeführt wird, wird der Teil des Bytecode wiederholt festgelegt, dass ein Teil des Bytecode verwendet wird, während er diesen bestimmten Teil des Maschinencodes kompensiert wird. Der JIT -Compiler speichert dann den Maschinencode in Erinnerung so dass es von der virtuellen Maschine verwendet werden kann. JIT -Compiler versuchen, ein Gleichgewicht zwischen längerer Kompilierungszeit und schnellerer Ausführungszeit zu erreichen.[2]
Compiler
A Compiler Übersetzt ein Programm in einer Sprache in eine andere Sprache. Die meisten Compiler sind in drei Phasen organisiert: a Frontend, ein Optimierer, und ein Back End. Das Frontend ist für das Verständnis des Programms verantwortlich. Es stellt sicher, dass das Programm gültig ist und es in eine verwandelt Zwischendarstellung, Eine vom Compiler verwendete Datenstruktur, um das Programm darzustellen. Der Optimierer verbessert die Zwischendarstellung, um die Geschwindigkeit zu erhöhen oder die Größe der zu verringern ausführbar das wird letztendlich vom Compiler produziert. Das hintere Ende wandelt die optimierte Zwischendarstellung in die Ausgangssprache des Compilers um.[7]
Wenn ein Compiler eines gegebenen hohe Sprache produziert eine weitere hohe Sprache, sie wird als als genannt Transpiler. Transpiler können verwendet werden, um vorhandene Sprachen zu erweitern oder die Compiler -Entwicklung durch Nutzung zu vereinfachen tragbar und gut optimierte Implementierungen anderer Sprachen (wie z. C).[2]
Viele Kombinationen von Interpretation und Zusammenstellung sind möglich, und viele moderne Programmiersprache -Implementierungen umfassen Elemente von beidem. Zum Beispiel die Smalltalk Die Programmiersprache wird herkömmlicherweise durch Zusammenstellung in implementiert Bytecode, was dann entweder interpretiert oder von a kompiliert wird virtuelle Maschine. Da SmallTalk -Bytecode auf einer virtuellen Maschine ausgeführt wird, ist es über verschiedene Hardwareplattformen hinweg tragbar.[8]
Mehrere Implementierungen
Programmiersprachen können mehrere Implementierungen haben. Verschiedene Implementierungen können in verschiedenen Sprachen geschrieben werden und verwenden unterschiedliche Methoden zum Kompilieren oder Interpretieren von Code. Zum Beispiel Implementierungen von Python enthalten: [9]
- Cpython, das Referenzimplementierung von Python
- Ironpython, eine Implementierung, die auf die abzielt .NET Framework (geschrieben in C#)
- Jython, eine Implementierung, die auf die abzielt Java virtuelle Maschine
- Pypy, eine Implementierung für Geschwindigkeit (geschrieben in Rpython)
Verweise
- ^ Ranta, Aarne (9. Mai 2012). Programmiersprachen implementieren (PDF). College -Veröffentlichungen. S. 16–18. ISBN 9781848900646. Abgerufen 22. März 2020.
- ^ a b c d e Baker, Greg. "Sprachimplementierungen". Computing Science - Simon Fraser University. Abgerufen 22. März 2020.
- ^ Evans, David (19. August 2011). Einführung in das Computer (PDF). Universität von Virginia. p. 211. Abgerufen 22. März 2020.
- ^ a b Sridhar, Jay. "Warum der java virtuelle Computer Ihrem Code hilft, besser auszuführen". Gebrauch machen von. Abgerufen 22. März 2020.
- ^ Bennett, James. "Eine Einführung in Python Bytecode". OpenSource.com. Abgerufen 22. März 2020.
- ^ Ali, Mirza Farrukh. "Common Language Runtime (CLR) Dotnet". Mittel. Abgerufen 22. März 2020.
- ^ Cooper, Keith; Torczon, Linda (7. Februar 2011). Engineering ein Compiler (2. Aufl.). Morgan Kaufmann. pp.6-9. ISBN 9780120884780.
- ^ Lewis, Simon (11. Mai 1995). Die Kunst und Wissenschaft von SmallTalk (PDF). Prentice Hall. S. 20–21. ISBN 9780133713459. Abgerufen 23. März 2020.
- ^ "Alternative Python -Implementierungen". Python.org. Abgerufen 23. März 2020.
Externe Links
-
Medien im Zusammenhang mit dem Zusammenstellen und Verknüpfen bei Wikimedia Commons