Zusammenfassung
In diesem Kapitel wird Programmvariablen ein gewisser Objektcharakter zugebilligt: sie können beispielsweise als Bestandteile von Zusammensetzungen auftreten (,organisierte Speicher‘). Die sich damit ergebenden Notwendigkeiten — etwa „Erzeugung“ von Variablen — , Besonderheiten hinsichtlich der ldentität wie auch die Möglichkeiten der Implementierung rekursiv definierter Objektstrukturen mittels organisierter Speicher werden erörtert. Die Bildung von Nexen von Variablen führt nach Übergang zu einem anderen semantischen Modell zur Einführung von Zeigern und der Bildung von Geflechten. Schließlich wird der Übergang zu Adressen diskutiert. Diese Begriffe führen an eine Grenze heran, hinter der die eigentliche Domäne der maschinennahen (System-)Programmierung erst beginnt. Für Weiterführungen und Ergänzungen siehe: G. Seegmüller, „Einführung in die Systemprogrammierung” (Mannheim 1974). Es kommt uns hier jedoch darauf an, zu zeigen, daß man zunächst keine spezielle Maschinenorganisation an die Spitze der Darlegung stellen muß.
“Machine language coding is ... the original dark craft from which we try to abstract ourselves, but into which we all lapse from time to time.” Turski 1978
“Von Neumann languages constantly keep our noses pressed in the dirt of address computation and the separate computation of single words.” Backus 1978a
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Referenzen
In diesem Zusammenhang ist es wichtig, daß auf x außer der universellen Gleichheitsoperation keine weiteren Operationen vorausgesetzt sind. 2 „Puffer“ im engeren Sinn gebraucht.
Eine solche Konstruktion zu verbieten, würde nichts nützen, da man das Verbot stets durch Verwendung von Zusammensetzungen der Art bool array var µ umgehen kann.
In maschinennaher Programmierung wird dies durch den sog. „call by reference“ bewirkt.
In ALGOL 60 ist allerdings die Adressierung, die einheitliche Implementierung in einem einzigen linearen Speicher, unzugänglich.
Es ist zu vermuten, daß Turski, auf der Linie von Wirth und Hoare, dies stillschweigend annimmt.
Die Korrespondenz isaccessible(a, I)⇤⇥ val (â [I]) * m gilt nicht! Damit sie gilt, muß co durch das feste Sonderelement l ersetzt werden.
val bekommt die Bedeutung eines Operators, der den Inhalt eines Behälters liefert.
Die next-Komponente ist nicht von der Isequ var x entsprechenden Art pt s x, sondern von der Art var pt s x, entsprechend dem Umstand, daß wir für Zeiger Behälter vorgesehen haben.
,record‘ wird noch heute häufig in diesem originalen Sinn gebraucht: ‘An object may refer to objects. For example, a record object refers to the objects that are components of the record’ (Liskov et al. 1977).
Allerdings wird nunmehr das Geflecht revertiert, vom „falschen“ Ende her, aufgebaut — die Implementierung ist nicht homolog.
Zum Vergleich mit Wirth 1975 (4.20).
Zum Vergleich mit Wirth 1975, Programm 4.1.
Haben Rechenvorschriften Zeiger als Ergebnisse, so sind für die Außenwelt nicht die Zeiger selbst, sondern die Inhalte derjenigen Zusammensetzung von Variablen, auf die sie deuten, von Belang. Die sog. „Ausgabe“ besteht dann in einer Rückverwandlung in eine entsprechende Zusammensetzung von Objekten.
Da nil als universeller Zeiger auf das „leere Wort“ eingeführt ist, ist deref nil also stets definiert, es ist ein 0-tupel von Variablen, also keine Variable, und weder ist ein Inhalt von deref nil definiert, noch eine Zuweisung an deref nil erlaubt.
In ALGOL 68, wo kein Unterschied zwischen Referenzen und Variablen besteht, ist dies allerdings nicht möglich. ALGOL 68-Konstruktionen der Systemprogrammierung werden dadurch mit einer zusätzlichen Referenzstufe belastet.
Seegmüller 1974, S. 205.
Author information
Authors and Affiliations
Rights and permissions
Copyright information
© 1984 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Bauer, F.L., Wössner, H. (1984). Organisierte Speicher und Geflechte. In: Algorithmische Sprache und Programmentwicklung. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-662-05654-7_8
Download citation
DOI: https://doi.org/10.1007/978-3-662-05654-7_8
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-662-05655-4
Online ISBN: 978-3-662-05654-7
eBook Packages: Springer Book Archive