2.8.2 Editieren - Kompilieren |
|
Interpreter - Kompiler | Ein
Interpreter ist selber ein Programm, der den Quelltext in dem Sinne
ausführt, dass Zeile für Zeile eines Programms in einen auf der Maschine
lauffähigen, so genannten Maschinenkode übersetzt und vom Rechner
abarbeiten lässt. Das hat zur Folge, dass eine Zeile, die in einer
Schleife z.B. 100 mal abgearbeitet werden soll, 100 mal übersetzt werden
muss. Das kostet viel Zeit. Zudem können Syntaxfehler erst beim Laufen
lassen des Programms gefunden werden.
Im Gegensatz zum
Interpreter wird der Quelltext vom Kompiler auf einmal in einen
Maschinenkode übersetzt und kann dann schnell abgearbeitet werden. Fehler
werden nicht erst beim Laufen lassen des Programms, sondern bereits beim
Übersetzten aufgespürt. |
Java VM | Der
Java-Kompiler ist kein vollständiger Kompiler, da sein Output kein
lauffähiges Programm mehr ist, sonder ein sog. Bytekode, der von einem
Interpreter abgearbeitet wird. Er hat den Vorteil, dass Syntax-Fehler
bereits beim Kompilieren gefunden werden. Die bei dieser Technologie
gewonnene Plattformunabhängigkeit führt beim Starten eines Javaprogramms
zu einer Verzögerung. Die Virtuelle Maschine, die den Java-Bytekode
ausführen soll, kompiliert den Bytekode zu einem lauffähigen Programm. Wir
sprechen auch deshalb von einem 'Just-in-time-Compiler'.
Was den Java-Kompiler so
interessant macht, ist seine Plattformunabhängigkeit. Was bedeutet dies? |
Übliche Kompiler - Lopgik | Ein
Quellkode, der in einer Sprache geschrieben ist, muss von einem
rechnerspezifischen Kompiler in einen auf der jeweiligen Maschine
lauffähigen Maschinenkode übersetzt werde. D.h. Ein in z.B. C++
geschriebener Quelltext muss von jeweils verschiedenen Kompilern für die
verschiedenen Plattformen übersetzt werden. Das kostet viel Zeit und Geld.
Man muss für eine Sprache für jede Plattform einen Kompiler entwickeln.
Dafür hat man einen Kode, der auf den einzelnen Maschinen schnell
abgearbeitet wird.
|
Die "neue" Kompiler - Logk | Aus einem
Quelltext einer plattformenübergreifenden Sprache wie Java, erzeugen
plattformenabhängige Kompiler einen standardisierten Bytekode, der für
alle Maschinentypen gleich ist. Virtuelle Java-Maschinen (VM) haben dann
nur noch den Bytekode zu interpretieren. Es ist also Aufgabe der
Plattformenhersteller, ihren Kunden eine Java VM zur Verfügung zu stellen.
Der Java-Programmierer arbeitet somit auf einer beliebigen Maschine und
verkauft seinen plattformenunabhängigen Byte-Kode. Folgen sind Kosten- und
Zeitersparnis und nicht zu vergessen die Möglichkeit Java im Internet
einzusetzen. Die Java VM muss dazu lediglich in den Browser eingebunden
sein.
|
Für eine Maschine ist also nur ein Kompiler notwendig, der den standardisierten Byte-Kode erzeugt.
|
|
Vom Plan zum Produkt | Für den Informatikalltag interessiert uns, wie kommen wir vom Plan eines Programms zum Produkt. |
![]() -programmierer gehen muss, um vom Plan bis zum Endprodukt zu kommen. Am Anfang steht die Planung, die für sich genommen je nach Projekt so umfangreich und komplex sein kann, dass speziell ausgebildete Leute diese Aufgabe übernehmen. Das Rechteck mit der Inschrift 'Beginn' markiert den eigentlichen Startpunkt des Programmierers. Er schreibt (=editiert) den Quelltext und lässt ihn anschließend vom Kompiler übersetzen. Sehr häufig enthält der Quellkode, nicht selten durch Schreibfehler verursachte, Syntaxfehler. In diesem Fall muss man immer wieder zurückkehren und den Text bearbeiten, bis er syntaktisch korrekt ist und vom Kompiler vollständig übersetzt wird. Danach lässt man das Programm laufen. Dabei kann es wieder zu Fehler kommen, den so genannten Laufzeitfehler. Auch in diesen Fällen muss man den Quelltext bearbeiten. Die Fehler liegen häufig darin, dass Datenstrukturen nicht korrekt verwaltet werden (z.B. unbeabsichtigte Division durch null). Treten schließlich keine Laufzeitfehler mehr auf, kann das Programm trotzdem nicht das liefern, was es oll. Man sagt, es ist semantisch nicht korrekt. Jetzt ist der Fehler in der Planung zu suchen. Wir sehen, es gibt viele Möglichkeiten, dass ein Programm 'nicht tut'. Sorgfältige Planung und diszipliniertes Programmieren zahlt sich auf Dauer sicherlich aus. |
|
zu | 2.8.3 Übungen |
zur Startseite | www.pohlig.de (C) MPohlig 2006 |