Wikipedia · einfach zusammengefasst · Stand
Wirkung (Informatik)
In der theoretischen Informatik bezeichnet eine (spezifizierte) Wirkung die Veränderung des Zustands, in dem sich eine abstrakte Maschine befindet.
Inhalt5 Abschnitte
Grundidee
In der theoretischen Informatik bezeichnet eine Wirkung die Veränderung des Zustands, in dem sich eine abstrakte Maschine befindet. Wenn diese Veränderung Teil der beschriebenen Maschine ist, spricht der Artikel von einer spezifizierten Wirkung. Manchmal wird dafür auch der Ausdruck Seiteneffekt verwendet.
Ausdrücke und Funktionen können wirkungsbehaftet oder wirkungsfrei sein. Wirkungsbehaftete Ausdrücke können den Zustand verändern oder andere Effekte auslösen. Wirkungsfreie Ausdrücke verändern den Zustand nicht; dazu gehören in Hochsprachen etwa mathematische Funktionen wie Sinus, Kosinus oder Quadratwurzel.
Spezifizierte und unspezifizierte Wirkungen
Eine Variable repräsentiert zu jedem Zeitpunkt des Programmablaufes einen ganz bestimmten Wert. Die Gesamtheit aller Variablen und ihrer Werte definiert den Programmzustand einer abstrakten Maschine. Dieser Zustand kann nur durch Operationen mit spezifizierten Wirkungen verändert werden.
Von spezifizierten Wirkungen unterscheidet der Artikel unspezifizierte Wirkungen. Sie liegen außerhalb der Betrachtung des Systems. Je nach Definition kann zum Beispiel die Bildschirmausgabe dazugehören. Solche Effekte werden für die abstrakte Maschine gegebenenfalls nicht berücksichtigt. Funktionen, die mit Ein- oder Ausgabe von Daten zu tun haben, gehören in der Regel zu den Funktionen mit unspezifizierten Wirkungen.
Rein funktionale Programmierung
In rein funktionalen Programmiersprachen hat die Auswertung eines Ausdrucks niemals eine spezifizierte Wirkung. Auch wenn ein Ausdruck ein Ergebnis liefert, gilt diese Ausgabe eines Ergebnisses hier nicht als spezifizierte Wirkung.
Solche Sprachen besitzen keine Anweisungen, keine Variablen und keine Wertezuweisungen, sondern nur Ausdrücke. Deshalb treten keine Zustandsänderungen im Sinne der Definition auf. Die Programmiersprache ist damit zustandslos und wirkungsfrei.
Diese Eigenschaft heißt referenzielle Transparenz. Sie bedeutet, dass der Wert eines Ausdrucks nur von seiner Umgebung abhängt, nicht vom Zeitpunkt der Auswertung und nicht von einer bestimmten Auswertungsreihenfolge. Als Beispiele für gänzlich wirkungsfreie Sprachen nennt der Artikel Haskell, Elm und reines Lisp (pure Lisp).
Beispiel für referenzielle Transparenz
Das Beispielprogramm in Lisp- oder Scheme-ähnlicher Präfixnotation lautet: (if (= a 0) (+ a 1) (* a 2)). Es liefert abhängig von einer Bedingung eines von zwei möglichen Berechnungsergebnissen zurück.
Dabei wird das Ergebnis keiner Variable zugewiesen. Die Reihenfolge, in der die einzelnen Funktionen if, =, + und * ausgewertet werden, hat keinen Einfluss auf das Ergebnis. Jeder Ausdruck kann an jeder Stelle durch seinen Wert ersetzt werden. Genau das veranschaulicht referenzielle Transparenz.
Funktional, aber nicht rein funktional
Nicht jede funktionale Programmiersprache ist rein funktional. In Sprachen wie Scheme können Prozeduraufrufe die Werte von Variablen verändern. Das ist eine spezifizierte Wirkung. Sie können außerdem Bildschirmausgaben auslösen, was eine unspezifizierte Wirkung sein kann.
Dadurch geht die referenzielle Transparenz verloren. Scheme ist deshalb nach dem Artikel keine rein funktionale, sondern nur eine funktionale Sprache. Um wirkungsbehaftete Prozeduren in der für Lehrzwecke eingesetzten Sprache Scheme kenntlich zu machen, werden sie mit einem Ausrufezeichen markiert, zum Beispiel bei der Variablenzuweisung (set! a 2).
Lernvideos zu Wirkung (Informatik)
3:13
Metapher - Was ist eine Metapher? Erklärung, Wirkung & Beispiele | Rhetorisches Stilmittel / Figur
Die Merkhilfe · 238.426 Aufrufe
4:58
Carnot Prozess: Berechnung, Wirkungsgrad und Darstellung im T-s/p-v-Diagramm!
Studyflix · 150.098 Aufrufe
7:51
Rhetorical devices 1 (A bis I) - Englisch rhetorische Stilmittel - Definition, Beispiel & Wirkung
Die Merkhilfe · 104.555 Aufrufe
3:50
Gleichnisse Jesu I Merkmale, Wirkung und Funktion
Study History · 57.196 Aufrufe