Suchen und Finden
Service
Infos und Kontakt
15 Speicher und veränderliche Objekte (S. 298-299)
Wir erweitern unser programmiersprachliches Repertoire jetzt umOperationen,mit denen der Zustand eines Speichers abgefragt und verändert werden kann. Die Speicheroperationen versetzen uns in die Lage, veränderliche Objekte darzustellen. Damit ergeben sich neue Datenstrukturen und neue Algorithmen. Mathematische Objekte sind gedankliche Objekte, die per Konstruktion unveränderlich sind. Denken Sie etwa an die Zahl 12. Mathematische Objekte existieren unabhängig vomBegriff der Zeit.
Dahermacht es keinen Sinn, von der Lebensdauer einesmathematischen Objektes zu sprechen. Physikalische Objekte sind veränderliche Objekte. Sie ändern ihren Zustand im Laufe der Zeit. Stellen Sie sich eine Uhr vor. Sie muss ihren Zustand mit der Zeit verändern, sonst kann sie nicht die aktuelle Uhrzeit anzeigen. Sie können den Zustand derUhr auch von außen ändern, indemSie eine andere Uhrzeit einstellen. Computer sind physikalische Objekte, mit denen gedankliche Objekte für eine gewisse Zeit realisiert werden können. Stellen Sie sich einen geöffneten Interpreter auf dem Desktop Ihres Computers vor. Wenn Sie eine Deklaration eingeben, realisiert der Interpreter das deklarierte Objekt, sodass Sie damit arbeiten können. Computer können veränderliche und unveränderliche Objekte darstellen.
Ein Beispiel für ein auf einem Computer realisierbares veränderliches Objekt ist ein Interpreter. Zunächst können Sie einen Interpreter erzeugen (starten), indem Sie das den Interpreter beschreibende Programm zur Ausführung bringen. Danach können Sie den Zustand des Interpreters durch die Eingabe vonDeklarationen verändern. Schließlich können Sie den Interpreter beseitigen (beenden). Der Interpreter hat dann für die Zeitspanne zwischen seiner Erzeugung und seiner Beseitigung existiert. JedesMal, wenn Sie das den Interpreter beschreibende Programm zur Ausführung bringen, erzeugen Sie einen neuen Interpreter. Wenn Sie wollen, können Sie mehrere Interpreter erzeugen, die gleichzeitig auf demselben Computer existieren.
15.1 Zellen und Referenzen
Wir erweitern das Ausführungsmodell unserer Programmiersprache jetzt umein veränderliches Objekt, das wir als Speicher bezeichnen. Wir stellen uns den Speicher als ein physikalisches Objekt vor, das in sogenannte Zellen unterteilt ist. In jeder Zelle wird ein Wert dargestellt. Die Zellen des Speichers sind durchnummeriert und die Nummern der Zellen werden als Referenzen bezeichnet. Für Programme ist der Speicher als abstrakte Datenstruktur sichtbar.
Die Allokationsoperation ref wählt eine bisher nicht benutzte Zelle aus, schreibt dieDarstellung einesWerts in die Zelle und liefert die Referenz der Zelle. Wir sagen, dass die Allokationsoperation eine Zelle alloziert.Die Dereferenzierungsoperation ! liefert zu einer Referenz den in der entsprechenden Zelle dargestellten Wert. Die Zuweisungsoperation := schreibt dieDarstellung einesWerts in eine bereits allozierte Zelle. Dabei wird die bisher in der Zelle befindliche Darstellung überschrieben. Man sagt, dass man einen Wert in eine Zelle legt, wenn man seine Darstellung in die Zelle schreibt. Zusammenfassend bezeichnen wir die Operationen ref , ! und := als Speicheroperationen. Alle drei Speicheroperationen haben konstante Laufzeit. Der Typkonstruktor ref liefert die sogenannten Referenztypen. Eine Referenz des Typs t ref identifiziert eine Zelle, in der Werte des Typs t liegen können. Die abstrakten Referenztypen stellen sicher, dass nur solche Referenzen imUmlauf sind, deren Zellen durch die Allokationsoperation alloziert wurden.
Alle Preise verstehen sich inklusive der gesetzlichen MwSt.; Ersparnis im Vergleich zur Printversion














