Rache

Autor: Christoph Karl Walter Grein

Die Zeit der Rache war gekommen. Zu gut konnte ich mich noch daran erinnern, wie übel Lady Ada mir bei meinem letzten Besuch mitgespielt hatte. Also suchte ich sie im Vorgefühl meines Triumphes auf.

Beim Anblick ihres neuen Hauses verschlug es mir die Sprache - Donnerwetter, wie hatte es sich doch verändert! Ich kannte ja schon die Baupläne, aber es vor Augen zu haben, war doch etwas ganz anderes. Ihr altes Haus (Baujahr 83) war kompakt gewesen, in traditionellem Stil erbaut, ganz auf Zweckmäßigkeit ausgerichtet; 14 große Zimmer hatte es gehabt, 3 Anbauten und 3 Abstellkammern. Doch jetzt residierte sie in einem wahren Palast (Bj. 95) mit Türmchen und Erkerchen, phantastisch anzuschauen.

"Wie schön, dass Sie sich mal wieder blicken lassen", empfing mich Lady Ada freundlich lächelnd. "Wie gefällt Ihnen mein neues Haus? Darf ich Sie zu einer Besichtigung einladen?"

"Meine Hochachtung für den Architekten", erwiderte ich. "Oh, ich hatte eine ganz Reihe davon, alles vom Besten, und auch der Innenarchitekt hat hervorragende Arbeit geleistet, wie Sie gleich sehen werden", meinte sie.

Sie hatte wahrhaft nicht zu viel versprochen. Zwar gab es jetzt nur noch 13 Zimmer, dafür aber 8 Anbauten, 1 Rumpelkammer mit unnützem Gerümpel aus dem alten Haus und 5 Abstellkammern. Auch die Inneneinrichtung war eine Augenweide. Überall standen große und kleine vielgestaltige Objekte herum, deren Zweck mir nicht sofort einleuchtete. Geduldig führte mir Lady Ada alles vor: Kaum hatte sie irgendein Objekt berührt, veränderte es sofort seine Form und Funktion. "Tja - Polymorphie lautet das Gebot der Stunde."

Schließlich, mir war schon ganz schwindelig, fragte sie mich nach dem Grund für meinen Besuch: "Kommen Sie, setzen wir uns zu einem Gläschen Wein, dann besprechen wir das Problem", lud sie mich ein. "O nein, bloß nicht!" entfuhr es mir. "Ich habe noch vom letzten Mal Kopfschmerzen." Lady Ada lachte lauthals: "Na, so schlimm war's doch nicht."

"Doch!", widersprach ich, "Gerade das ist ja der Grund meines Besuchs. Die Rechnung ist noch offen. Und wedeln Sie bitte nicht so mit dem Zauberstab herum, das macht mich ganz nervös."


"Also", begann ich, "ich möchte Ihnen eine kleine Wette vorschlagen. Wenn ich gewinne, holen wir die Einladung nach, aber diesmal ohne Tricks."

"Und wenn Sie verlieren?" wollte Lady Ada wissen. "Oh, alles was Sie wollen - diese Wette verliere ich sicher nicht. Aber wenn doch, werde ich in Zukunft nur noch Java-Byte-Code erzeugen."

"Ist das nicht ein wenig hart?" "Aber nein, Sie vergessen, dass man auch von Ada aus Java-Byte- Code erzeugen kann." Lady Ada kicherte vergnügt und fragte: "Worum geht es überhaupt?"

Um sie ein wenig auf die Folter zu spannen, kramte ich umständlich einen Bogen Papier heraus und schrieb folgendes darauf:

1 < 0

Verständnislos schaute mich die Lady an. "Wenn es Ihnen lieber ist, kann ich's auch so ausdrücken", sagte ich und fügte folgendes hinzu:

1 < 0
-1 = 1

"Um so etwas wagen Sie mit mir zu wetten, wo ich doch das Programmieren erst erfunden habe?" drohte sie mir schelmisch mit ihrem Zauberstab. "Aber angenommen! - Wenn Sie unbedingt Java programmieren wollen, schießen Sie mal los."


"Der Typ Boolean ist definiert als Aufzählungstyp mit den Literalen False und True, wobei False < True gilt. Das ist in Übereinstimmung mit der Tatsache, dass man aus einer falschen Voraussetzung alles beweisen kann: False ⇒ True, was man in Ada witzigerweise False <= True schreibt.1 Welche Zahlenwerte implizit zur Darstellung der Literale verwendet werden, bleibt undefiniert im Ada Reference Manual 2. Uns sollte das gewöhnlich nicht interessieren. Wenn die interne Darstellung aus irgendeinem Grund doch wichtig sein sollte (vielleicht verlangt ein externes Gerät eine spezielle Darstellung), kann man sie erzwingen.

Auch das ist möglich:

Sollte auch noch die Länge der Darstellung wichtig sein, können wir sie ebenfalls festlegen:

Jetzt nehmen wir einmal eine Maschine, die das Zweierkomplement verwendet. Hier wird -1 als eine Folge von Bits dargestellt ... " (gelangweilt gähnte Lady Ada ausgiebig, doch ich fuhr ungerührt fort) " ... die nur aus Einsen besteht, also zum Beispiel für eine Zahl im 16-Bit-Format 3:

Doch halt, für 1 Bit haben wir nur die Werte -20..20-1 zur Verfügung, das ist -1..0. Dabei wird -1 dargestellt als 1 Bit mit dem Wert 1, die Zahl besteht sozusagen nur aus ihrem Vorzeichen:

Für T1'(A) < T1'(B) werten Sie, verehrte Lady Ada, also 0 < 1 aus, für T2'(A) < T2'(B) jedoch 1 < 0, und beide Male warten Sie mit demselben Ergebnis True auf!"

Lady Ada war sprachlos. Ihr Zauberstab verharrte wie angewurzelt auf der letzten Zeile. Dann prustete sie los: "Also für diesen gelungenen Aprilscherz haben Sie sich wirklich ein besonderes Menü verdient!" Es wurde noch ein reizender Abend.


1 Bei Verwendung der mengentheoretischen Schreibweise False ⊆ True sieht das fast wieder wie Ada-Syntax aus.

2 Bis auf den Implementierungsratschlag in Ada 95, die Werte des 'Pos-Attributs (0 für False, 1 für True) zu verwenden. Auch Ada 83 hält sich gewöhnlich an diese Konvention, doch ist das nicht zwingend. Es gibt auch Compiler, die 0 für False verwenden und irgendeine positive Zahl für True. Das ist zulässig, solange die Werte in Übereinstimmung mit der durch die Aufzählung vorgegebenen Reihenfolge sind.

3 Ihr Wertebereich ist -215 .. 215-1 (allgemein für n Bits -2n-1 .. 2n-1-1); das erste Bit legt stets das Vorzeichen fest.
(Ich verwende absichtlich nicht die Ada-Schreibweise 2#1111_1111_1111_1111#, da das die Zahl 216-1 bezeichnen würde.)


Ada Magica
Inhaltsverzeichnis
       © Copyright 1998 C.K.W. Grein