05_8338_102_Compiler und Interpreter - Offene

Werbung
Das diesem Dokument zugrundeliegende Vorhaben wurde mit
Mitteln des Bundesministeriums für Bildung und Forschung
unter dem Förderkennzeichen 16OH21005 gefördert.
Die Verantwortung für den Inhalt dieser Veröffentlichung liegt
beim Autor/bei der Autorin.
1
Nun wollen uns näher damit beschäftigen, wie man von einer
Programmiersprache zu einem lauffähigen Programm kommt.
Hierzu ist es notwendig folgende Begriffe zu definieren:
• Interpreter
• Compiler
2
Ein Compiler wird auch Übersetzer genannt. Er dient dazu aus einer höheren
Programmiersprache ausführbaren Binärcode zu erzeugen, der von einer CPU
ausgeführt werden kann.
3
In dieser Abbildung sehen Sie ein typisches Beispiel für einen C-Compiler.
Wie man sehen kann, besteht ein C-Compiler aus verschiedenen TeilWerkzeugen.
Prä-Prozessor
Der Prä-Prozessor löst alle Zeilen auf, die mit einem #-Zeichen anfangen. Er
nimmt reine textuelle Ersetzungen vor.
Compiler
Der Compiler übersetzt den C-Quellcode meist in eine plattformspezifische
Assemblersprache.
Assembler
Der Assembler arbeitet wie ein Compiler und übersetzt die Assemblersprache in
ein Binärformat.
Linker
Ein Linker bindet die Binärdatei mit den Bibliotheken (ebenfalls Binärdateien)
4
des Betriebssystems.
4
Ziel von Java ist es ,einen plattformunabhängigen Bytecode zur Verfügung zu
stellen.
Ein Java-Compiler übersetzt daher die Java-Quelldateien in sogenannte ClassFiles. Die Class-Files sind unabhängig von der Hardware-Architektur der CPU,
auf denen die Anwendung ausgeführt werden soll. Um dies zu ermöglichen,
werden die Class-Files nicht von der CPU direkt ausgeführt, sondern von einer
Java-Virtuellen Maschine. Dies wird auch kurz als JVM bezeichnet.
Hinweis:
Die Class-Files sind somit auch unabhängig davon, ob sie später auf einer 32-Bit
Plattform oder einer 64 Bit Plattform ausgeführt werden.
5
Im Gegensatz zu Java steht bei dem .NET Framework die ProgrammiersprachenUnabhängigkeit im Vordergrund.
So können aus verschiedenen Programmiersprachen die MIL Dateien erzeugt
werden. Somit besteht die Möglichkeit innerhalb eines Softwareproduktes
unterschiedliche Programmiersprachen einzusetzen.
Dies bedeutet man kann aus Java aus auch C# Klassen aufrufen.
6
Ein Interpreter verarbeitet den Quellecode Anweisung für Anweisung. Hierbei
wird eine Anweisung übersetzt und sofort ausgeführt.
Vorteil:
Man kann das Ergebnis einer Anweisung sofort sehen.
Nachteil:
Das ständige erneute Interpretieren von Anweisungen, die oft verwendet werden,
müssen jeweils neu interpretiert werden.
7
Hier sehen Sie ein typisches Beispiel für eine Python Interpreter.
Der Quelletext von Python-Script wird in Dateien mit dem Suffix „*.py“
abgelegt.
Der Python Interpreter interpretiert und übersetzt den Quellcode in „*.py*
Dateien in sogenannte „*pc“ Dateien. Hierbei handelt es sich um sogenannte
Python-Compiler Dateien. Diese werden dann sofort ausgeführt.
Wird nun die gleiche Python-Script Datei mehrmals aufgerufen, prüft der PythonInterpreter ob sich das py-File , welches zu dem pc-File passt geändert hat.
Hat sich nichts geändert, wird sofort die „pc“-Datei ausgeführt. Sollte sich was
geändert haben, dass wird die „pc“-Datei neu erzeugt.
8
9
10
Herunterladen