Zum Inhalt springen

Referenzielle Transparenz

aus Wikipedia, der freien Enzyklopädie
Dies ist die aktuelle Version dieser Seite, zuletzt bearbeitet am 14. November 2022 um 21:30 Uhr durch imported>Siphonarius (Änderungen von 2A02:908:1A12:CCE0:1CAE:5729:EA86:F6B6 (Diskussion) auf die letzte Version von Bicycle Tourer zurückgesetzt).
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Vorlage:Hinweisbaustein Die referenzielle Transparenz besagt, dass ein Ausdruck mit seinem Wert ersetzt werden kann, ohne das Verhalten des Programms zu ändern. Dies bedeutet, dass der Ausdruck pur ist, also für gleiche Eingabewerte das gleiche Ergebnis liefert und keine Seiteneffekte hat.<ref>HaskellWiki contributors: Referential transparency. In: HaskellWiki. Abgerufen am 21. März 2021 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> Dies ist eine wichtige Eigenschaft des funktionalen Programmierparadigmas.

Außerdem ermöglicht dies Programmtransformationen, also die Ersetzung von aufwändig durch einfach zu berechnende Ausdrücke.

Das Prinzip der referenziellen Transparenz wirft aber auch Probleme auf. So ist das einfache Auslesen eines mit der Tastatur eingegebenen Zeichens nicht direkt möglich; solch eine Funktion – wie getchar in C – ist nicht erlaubt. Jedes Mal wäre der Rückgabewert abhängig von der Eingabe des Benutzers. Damit entstünden Kommunikationsprobleme mit der Umgebung.

So werden z. B. in der funktionalen Programmiersprache Haskell Aktionen, die mit der Umgebung interagieren können, als Werte des Datentyps IO beschrieben. Mittels spezieller Operatoren können aus elementaren Aktionsbeschreibungen komplexe Beschreibungen konstruiert werden. Jedes Haskell-Programm definiert eine Variable main, deren Wert eine Aktionsbeschreibung des gesamten Programms ist. Aktionen können ausgeführt werden, indem ihre Beschreibung in den Wert von main eingebettet wird.

Einzelnachweise

<references />