Referenzielle Transparenz

Referenzielle Transparenz

Die Referenzielle Transparenz besagt, dass der Wert eines Ausdrucks in einem Quelltext nur von seiner Umgebung abhängt und nicht vom Zeitpunkt seiner Auswertung. Dies ist eine wichtige Eigenschaft des deklarativen Programmierparadigmas.

In der Mathematik gilt, dass ein und dieselbe Variable an verschiedenen Stellen ihres Geltungsbereichs immer den gleichen Wert hat. Dies gilt in imperativen Programmiersprachen nicht, da die Programmsemantik (z. B. Endergebnis) von einem impliziten Zustand (z. B. Speicherinhalt) abhängt.

x = x + 1

Formal analysiert ist diese Gleichung eine nicht lösbare Aussage, was heißt, es existiert kein x, das die Gleichung wahr macht. Trotzdem ist diese Zeile in imperativen Programmiersprachen möglich. Je nachdem, was in der Speicherzelle für x steht, wird die rechte Seite damit erzeugt und die linke Seite berechnet.

Möchte man aber Programmeigenschaften mathematisch beweisen (z. B. liefert das Programm wirklich das, was es soll), dann dürfen solche Nebeneffekte nicht auftreten. In der deklarativen Programmierung gilt hingegen das Prinzip der referenziellen Transparenz und als Konsequenz daraus das Substitutionsprinzip. Danach kann ein Ausdruck immer durch einen anderen gleichen Wertes ersetzt werden ohne dass dies Auswirkungen auf die Programmsemantik hat. Das Ziel von solchen Programmtransformationen ist 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 eingegeben 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 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.


Wikimedia Foundation.

Игры ⚽ Нужно решить контрольную?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Referentielle Transparenz — Die Referenzielle Transparenz besagt, dass der Wert eines Ausdrucks in einem Quelltext nur von seiner Umgebung abhängt und nicht vom Zeitpunkt seiner Auswertung. Dies ist eine wichtige Eigenschaft des deklarativen Programmierparadigmas. In der… …   Deutsch Wikipedia

  • Seiteneffekt — In der Programmierung bezeichnet Wirkung (engl. effect) die Veränderung des Zustands, in dem sich ein Computersystem befindet. Beispiele sind das Verändern von Inhalten des Speichers oder die Ausgabe eines Textes auf Bildschirm oder Drucker. Da… …   Deutsch Wikipedia

  • Zustandsänderung (Informatik) — In der Programmierung bezeichnet Wirkung (engl. effect) die Veränderung des Zustands, in dem sich ein Computersystem befindet. Beispiele sind das Verändern von Inhalten des Speichers oder die Ausgabe eines Textes auf Bildschirm oder Drucker. Da… …   Deutsch Wikipedia

  • Wirkung (Informatik) — In der Programmierung bezeichnet Wirkung (engl. effect) die Veränderung des Zustands, in dem sich ein Computersystem befindet. Beispiele sind das Verändern von Inhalten des Speichers oder die Ausgabe eines Textes auf Bildschirm oder Drucker. Da… …   Deutsch Wikipedia

  • Funktionale Programmiersprache — Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf mit, ihn zu verbessern, und entferne anschließend diese Markierung. Funktionale Programmierung ist ein Programmierparadigma. Programme… …   Deutsch Wikipedia

  • Funktionionale Programmierung — Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf mit, ihn zu verbessern, und entferne anschließend diese Markierung. Funktionale Programmierung ist ein Programmierparadigma. Programme… …   Deutsch Wikipedia

  • Prozedurale Generierung — Prozedurale Synthese oder Prozedurale Generierung bezeichnet in der Informatik Methoden zur Erzeugung von Programminhalten wie Texturen, virtuellen Welten, 3D Objekten und sogar Musik in Echtzeit und während der Laufzeit des Computerprogrammes,… …   Deutsch Wikipedia

  • Fpii — ist eine funktionale und objektorientierte Programmiersprache, die auf den von John Backus vorgeschlagenen FP Systemen aufbaut. Die Objektorientierung ist auf die Polymorphie der Methoden in einem Klassenobjekt samt Vererbung reduziert. Da es in… …   Deutsch Wikipedia

  • Werttreu — Die Referenzielle Transparenz besagt, dass der Wert eines Ausdrucks in einem Quelltext nur von seiner Umgebung abhängt und nicht vom Zeitpunkt seiner Auswertung. Dies ist eine wichtige Eigenschaft des deklarativen Programmierparadigmas. In der… …   Deutsch Wikipedia

  • Algebraische Programmiersprache — Eine Algebraische Programmiersprache erfüllt die Eigenschaften der Referenziellen Transparenz. Das Konzept ist verwandt mit demjenigen funktionaler Programmiersprachen. Inhaltsverzeichnis 1 Termumformungen von Gleichungen und neue Sprachen 2… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”