Referenzielle Transparenz

Referenzielle Transparenz ist ein Merkmal von Teilen von Computerprogrammen. Ein Teil eines Programms wird als "referentiell transparent" bezeichnet, wenn er durch den Wert ersetzt werden kann, den er zurückgibt, ohne das Verhalten des Programms zu verändern. Eine referentiell transparente Funktion muss rein sein - sie muss immer die gleiche Ausgabe liefern, wenn sie die gleiche Eingabe nimmt, und sie darf keine Nebeneffekte haben - Teile des Programms, die eine andere Aktion ausführen als die Rückgabe eines Wertes. Das Gegenteil von referentieller Transparenz ist referentielle Opazität.

In der Mathematik sind alle Funktionen referentiell transparent, weil eine mathematische Funktion nur Werte aufnehmen und einen Wert ausspucken kann. In der Programmierung ist dies nicht immer richtig - eine Funktion könnte auch herausfinden, welcher Tag des Jahres es ist, oder eine Nachricht auf dem Bildschirm ausgeben. Wegen dieses Unterschieds verwenden einige Leute andere Namen für Funktionen in der Programmierung, wie z.B. Prozeduren.

Die referentielle Transparenz lässt Programmierer und Compiler Code als ein Umschreibungssystem betrachten - etwas, das einen Ausdruck nimmt und ihn durch etwas anderes ersetzt. Dies kann bei verschiedenen Aufgaben hilfreich sein, wie zum Beispiel

  • Der Beweis, dass das Programm oder der Code korrekt ist - dass es genau das tut, was es tun soll, egal was passiert.
  • Einen Algorithmus einfacher machen.
  • Das macht es einfacher, den Code zu ändern und trotzdem sicher zu sein, dass er das tut, was er tun soll.
  • Den Code schneller oder auf eine Art und Weise laufen zu lassen, die weniger Speicher verbraucht.

Es gibt verschiedene Möglichkeiten, die letzte Aufgabe zu erledigen - die bekanntesten sind Memoisierung (Speichern von Antworten nach dem ersten Mal), Eliminierung von Unterausdrücken (herausfinden, ob es sich lohnt, zwei gleiche Teile des Codes zu kombinieren), faule Auswertung (die Antwort erst dann finden, wenn der Code sie wirklich braucht) und Parallelisierung (gleichzeitiges Arbeiten an mehreren Problemen).

Fragen und Antworten

F: Was ist referenzielle Transparenz?


A: Referentielle Transparenz ist eine Eigenschaft von Teilen von Computerprogrammen, bei der ein Teil des Programms durch den Wert, den es zurückgibt, ersetzt werden kann, ohne dass sich das Verhalten des Programms ändert.

F: Was ist das Gegenteil von referenzieller Transparenz?


A: Das Gegenteil von referenzieller Transparenz ist referenzielle Opazität.

F: Sind alle Funktionen in der Mathematik referenziell transparent?


A: Ja, alle Funktionen in der Mathematik sind referenziell transparent, denn eine mathematische Funktion kann nur Werte aufnehmen und einen Wert ausgeben.

F: Wie hilft die referenzielle Transparenz Programmierern und Compilern?


A: Die referentielle Transparenz ermöglicht es Programmierern und Compilern, Code als ein Umschreibesystem zu betrachten - etwas, das einen Ausdruck durch einen anderen ersetzt. Dies hilft bei Aufgaben wie dem Nachweis, dass das Programm oder der Code korrekt ist, der Vereinfachung eines Algorithmus, der Erleichterung von Änderungen am Code, wobei Sie immer noch sicher sein können, dass der Code das tut, was er tun soll, und der Beschleunigung der Ausführung des Codes oder der Verringerung des Speicherverbrauchs.

F: Welche Techniken werden verwendet, um Code schneller laufen zu lassen oder weniger Speicherplatz zu verwenden?


A: Zu den Techniken, die dazu beitragen, dass der Code schneller läuft oder weniger Speicherplatz benötigt, gehören Memoisierung (Speichern von Antworten nach dem ersten Mal), Eliminierung gemeinsamer Unterausdrücke (Herausfinden, ob es sich lohnt, zwei gleiche Teile des Codes zu kombinieren), Lazy Evaluation (erst dann die Antwort finden, wenn der Code sie wirklich braucht) und Parallelisierung (gleichzeitiges Arbeiten an mehreren Problemen).

F: Gibt es einen Unterschied zwischen den Funktionen in der Programmierung und denen in der Mathematik?


A:Ja, es gibt einen Unterschied zwischen Funktionen in der Programmierung und denen in der Mathematik. In der Programmierung kann eine Funktion auch herausfinden, welcher Tag im Jahr ist oder eine Nachricht auf dem Bildschirm ausgeben, während dies bei mathematischen Funktionen nicht möglich ist.

AlegsaOnline.com - 2020 / 2023 - License CC3