Referentielle Transparenz

Definition - Was bedeutet referenzielle Transparenz?

Referenzielle Transparenz ist eine Eigenschaft eines bestimmten Teils eines Programms oder einer Programmiersprache, insbesondere funktionaler Programmiersprachen wie Haskell und R. Ein Ausdruck in einem Programm wird als referenziell transparent bezeichnet, wenn er durch seinen Wert ersetzt werden kann und das resultierende Verhalten ist das gleiche wie vor der Änderung. Dies bedeutet, dass das Verhalten des Programms nicht geändert wird, unabhängig davon, ob es sich bei der verwendeten Eingabe um eine Referenz oder um einen tatsächlichen Wert handelt, auf den die Referenz verweist.

Technische.me erklärt die referenzielle Transparenz

Referenzielle Transparenz hat ihre Wurzeln in der analytischen Philosophie, einem Zweig der Philosophie, der Konstrukte, Argumente und Aussagen natürlicher Sprache auf der Grundlage der Methoden der Mathematik und Logik untersucht und wenig mit Programmierung zu tun hat, obwohl sie von Informatikern übernommen wurde.

Das Konzept ist einfach, der "Referent", auf den sich ein Ausdruck bezieht, kann verwendet werden, um den "Referrer" zu ersetzen, ohne die Bedeutung des Ausdrucks zu ändern. Zum Beispiel bezieht sich die Aussage "Lukes Vater ist ein böser Mann", "Lukes Vater" bezieht sich auf "Darth Vader" in der Star Wars-Überlieferung. Die Aussage ist also referenziell transparent, da "Lukes Vater" jederzeit durch "Darth Vader" ersetzt werden kann und sich die Bedeutung der Aussage nicht ändern würde. In der Aussage "Das Publikum wusste bis 'The Empire Strikes Back' nicht, dass Lukes Vater tatsächlich Darth Vader ist" ist dies jedoch kein referenziell transparenter Ausdruck, da der Ausdruck "the" wird, wenn "Lukes Vater" durch "Darth Vader" ersetzt wird Das Publikum wusste erst 'The Empire Strikes Back', dass Darth Vader tatsächlich Darth Vader ist, "was eine ganz andere Bedeutung hat.

In Bezug auf die Programmierung ist das Konzept auf den ersten Blick dasselbe, aber viele Philosophen sind sich nicht einig, dass das Konzept in Programmiersprachen gut umgesetzt oder übertragen wird. In der allgemeinen Programmierung bedeutet dies jedoch einfach, dass ein Ausdruck durch seinen resultierenden Wert ersetzt werden kann, ohne das Verhalten des Programms zu beeinflussen. Zum Beispiel fügt die Funktion plusOne (x) einfach eins zu dem Wert von x hinzu. Wenn wir also wissen, dass x = 5 ist, können wir die Funktion sicher durch den Wert 6 in einem Ausdruck ersetzen, der bei Verwendung von plusOne dasselbe Verhalten ergibt (x). Wenn es jedoch eine externe Variable innerhalb des Ausdrucks gibt, die extern gesteuert wird, beispielsweise in der Funktion plusY (x), in der Y innerhalb der Funktion extern gesteuert wird, ist das resultierende Verhalten möglicherweise nicht dasselbe - in diesem Fall ist dies nicht referenziell transparent Ausdruck.