MINT üben

Compiler und Interpreter

Dreißig Übungen zu Compiler und Interpreter — von der Übersetzungszeit über den Zwischencode bis zum JIT-Compiler.

Dein Fortschritt:
0 / 0 Aufgaben
1

Übungsaufgaben

Dreißig Übungen in gemischter Reihenfolge — du klickst, ziehst, ordnest, rechnest und knobelst. Jede Übung gibt dir sofort eine Rückmeldung, und zu jeder Aufgabe gibt es zwei gestufte Tipps: Der erste zeigt die Richtung, der zweite den entscheidenden Schritt. Die Chips zeigen das Anforderungsniveau: AFB I heißt wiedergeben und direkt anwenden, AFB II selbst entscheiden und verknüpfen, AFB III begründen, beurteilen oder eine Falle durchschauen. Aufgaben mit dem Chip Mix verbinden Wissen aus früheren Unterkapiteln, bei Trick steckt eine Falle drin. Fährst du über ein unterstrichenes Arbeitswort, siehst du, was es genau von dir verlangt.

A1
Was meldet der Compiler?
AFB II

Untersuche die Zeilen und markiere alle, die ein Compiler schon vor dem Start des Programms als Fehler meldet. Jede Zeile steht einzeln in der Methode main eines Java-Programms.

Genau 4 Zeilen meldet der Compiler. Klicke jede an — ein zweiter Klick nimmt die Markierung zurück. Mit der Tastatur: Tab zum Bild, Pfeiltasten wandern, Enter markiert.
0 von 4 markiert
int x = 5System.out.println("Hallo);int a = "text";int[] f = new int[3]; f[5] = 1;int q = 7 / 0;String s = null; s.length();Strng t = "A";while (true) { }
Vier Zeilen meldet der Compiler vor dem Start: Zeile 1 (Semikolon), 2 (Anführungszeichen), 3 (Typ) und 7 (unbekannter Typ). Die Zeilen 4, 5, 6 und 8 sind formal richtig; ihre Probleme zeigen sich erst während des Laufs oder gar nicht.
Ansatz: Frage bei jeder Zeile: Erkennt man den Fehler schon am Text — oder erst, wenn man weiß, was zur Laufzeit passiert?
Weiter: Syntax und Typen prüft der Compiler vorab, Werte wie 0 oder null kennt er meist nicht.
A2
Je …, desto …
AFB II

Erläutere die Zusammenhänge rund um die Übersetzung von Programmen, indem du jeden Satz durch Klicken auf die farbigen Wörter richtig einstellst.

Klicke auf die farbig hinterlegten Wörter: Jeder Klick schaltet zur nächsten Möglichkeit weiter. Stelle jeden Satz so ein, dass er stimmt. Tastatur: Tab zum Wort, Enter/Leertaste oder ↑/↓ schaltet um.

Je eine Schleife läuft, desto wird der Vorteil eines Compilers gegenüber dem Interpreter.

Ein Programm in Maschinencode läuft nur auf der Plattform, .

Java-Bytecode braucht zum Ausführen eine ; bei C# übernimmt diese Aufgabe .

Je ein Stück Zwischencode läuft, desto lohnt sich seine Übersetzung durch den JIT-Compiler.

Bei einer langen Schleife zahlt der Interpreter jede Zeile immer wieder neu, deshalb wächst der Vorteil des Compilers. Maschinencode passt zu Prozessor und Betriebssystem, für die übersetzt wurde. Der Zwischencode braucht eine Laufzeit: die JVM bei Java, .NET bei C#. Und der JIT-Compiler lohnt sich gerade für Teile, die oft laufen.
Ansatz: Setze Beispiele ein: eine Schleife mit 3 Durchläufen, dann mit 3000.
Weiter: Beim dritten Satz gehört zu jeder Sprache ihre eigene Laufzeit.
A3
Eine Fehlermeldung lesen
AFB I

Lies an der Meldung des Compilers ab, was die markierten Stellen bedeuten: Lege die passenden Etiketten auf die Punkte. Zwei Etiketten bleiben übrig.

Ziehe jedes passende Etikett auf seine Markierung — oder klicke erst das Etikett und dann die Markierung. Tastatur: Etikett mit Enter wählen, dann die Ziffer der Markierung drücken; 0 legt es zurück. Nicht jedes Etikett wird gebraucht.
$ gcc spiel.c -o spielspiel.c: In function 'main':spiel.c:5: error: expected ';'
Die Meldung nennt zuerst die Datei (spiel.c), dann die Zeilennummer (5), die Art des Fehlers (error) und zuletzt, was der Compiler erwartet hätte (ein Semikolon). Uhrzeit und Spalte stehen nicht in der Meldung.
Ansatz: Lies die dritte Zeile von links nach rechts: Welche Angabe kommt zuerst?
Weiter: Die Zahl nach dem Doppelpunkt hinter dem Dateinamen sagt, wo im Quelltext du suchen musst.