×
Informatik Sekundarstufe II

 DOWNLOADSEITE

Seite: bdc_index
Diese Seite wurde aktualisiert am 28.11.2019

LOGIN
Benutzer:
Passwort:
 
Geogebra-
Quelle: https://nwm2.net-schulbuch.de/index.php
Druckversion vom 05.05.2024 11:42 Uhr
Startseite Qualifikationsphase Theoretische Informatik Compilerbau
Startseite Qualifikationsphase Theoretische Informatik Compilerbau Diese Seite wurde aktualisiert am 28.11.2019

Compilerbau

Ein Compiler ist ein Übersetzer zwischen formalen Sprachen. Typischerweise übersetzt er aus einer höheren Programmiersprache (Fortran, C, Pascal, Java,...) in die Maschinensprache eines Computersystems.

Eine solche Übersetzung findet immer statt, wenn man Programme ändert und testet.

Der Übersetzungsvorgang gliedert sich in mehrere Schritte:

Quelltext in einer Programmiersprache

 ↓  Scanner

Tokenliste

 ↓ Parser

Tokenliste (ggf. korrigiert)

Übersetzer

Zielsprache
Scanner

Ein Scanner liest den Quelltext ein und zerlegt ihn in eine Folge von Sinneinheiten (Zahlen, Bezeichner, Operatoren, Schüsselworte).

Er reicht eine Folge von solchen Sinneinheiten (sog. Token) an den Parser weiter.

Baustelle
Parser

Ein Parser prüft die vom Scanner gelieferte Tokenfolge auf syntaktische Korrektheit, also darauf, ob es sich um ein Konstrukt (Wort, Satz) der Ausgangssprache handelt.

Der Parser liefert als Anwort: korrekt oder nicht.

None
Übersetzer

Je nach Anwendungsfall bzw. Zielsprache wird ein Programm in einer maschinennahen Sprache, in einem Zwischencode oder etwa  ein Syntaxdiagramm  erzeugt.

 

Compiler oder Interpreter

Ein Interpreter untersucht den Quelltext und führt ihn dabei gleich aus; Beispiele sind etwa Javascript, PHP und Prolog. Interpreter sind bei der Softwareentwicklung vorteilhaft, weil das System meistens überschaubar ist und die Änderungen am Quelltext unmittelbar getestet werden können.  Bei lange laufenden Programmen – insbesonderen mit vielen Schleifen – wird die Ausführung durch die immer wieder nötige Untersuchung der nächsten Quelltextpassage verlangsamt.

Bei einem Compiler wird der Quelltext komplett in die Maschinensprache des jeweiligen Systems übersetzt (Beispiele: C, C++ und Delphi). Nach der evtl. aufwendigen Kompilierung  erfolgt die Ausführung  ohne weiteren Ballast in der höchstmöglichen Geschwindigkeit. Das Kompilat ist allerdings nur für die jeweils benutzte Hardwareplattform geeignet. Bei einem anderen System (Win 32Bit, Win 64 Bit, Mac, Linux) muss der Quelltext neu kompiliert werden.

Die Unterschiede werden seit einigen Jahren geringer: Interpreter wie etwa die Browser im Hinblick auf Javascript compilieren beim Programmstart mal eben den Quelltext (Just In Time Compiler); die Rechner sind heute so schnell, dass bei den im Unterricht verwendeten Systemen (BlueJ, JavaEditor, …) das Compileren eines Programms ohne spürbare Wartezeit  erfolgt.

Sonderfall Java

Programme in Maschinensprache, wie sie von einem Compiler erzeugt werden, sind immer nur  auf einer bestimmten Systemplattform lauffähig: Windows 32, Windows 64, Mac, Linux, Android, IOS, … Damit in Java geschriebene Programme systemunabhängig sind und etwa über das Internet verteilt werden können („Applets“), wird dort eine andere Technik verwendet. Die Zielsprache beim Übersetzen ist ein Zwischencode (Java-Bytecode; class-Dateien). Auf dem Zielrechner muss Java installiert sein, genauer eine zum verwendeten Computersystem passende  JVM (Java Virtual Machine); diese interpretiert den Bytecode und führt ihn dabei aus.

In der Praxis

Die Compiler (= Übersetzer) für Programmiersprachen sind nur ein Teil der in der Praxis verwendeten Übersetzer zwischen formalen Sprachen: Oft als Treiber oder Interface bezeichnet übersetzen sie zwischen der Ausgabe eines Systems und der Eingabe, die ein anderes System benötigt, z. B. : LibreOffice "liest" Dateien, die von Microsoft Office erstellt wurden, CAD - Programme produzieren G-Code, der von einer CNC-Maschine ausgeführt wird.

 

 

 

©2024 NET-SCHULBUCH.DE

10.09  0.1521  8.1.28