www.wikidata.de-de.nina.az
In der theoretischen Informatik bezeichnet eine spezifizierte Wirkung die Veranderung des Zustands in dem sich eine abstrakte Maschine befindet 1 Manchmal wird auch von Seiteneffekt gesprochen eine Bezeichnung die auf eine Ruckubersetzung des englischen side effect deutsch Nebenwirkung zuruckgeht Ausdrucke und Funktionen konnen sein wirkungsbehaftet mit spezifizierten Wirkungen s u in den meisten Programmiersprachen kann die Auswertung eines Ausdrucks eine spezifizierte Wirkung haben mit unspezifizierten Wirkungen s u dazu gehoren z B in der Regel alle Funktionen die mit der Ein oder Ausgabe von Daten zu tun haben wirkungsfrei dazu gehoren in Hochsprachen etwa mathematische Funktionen wie Sinus Kosinus oder Quadratwurzel Inhaltsverzeichnis 1 Spezifizierte Wirkungen 2 Unspezifizierte Wirkungen 3 Wirkungsfreiheit der rein funktionalen Programmierung 3 1 Beispiel 3 2 Funktionale aber nicht rein funktionale Programmierung 4 EinzelnachweiseSpezifizierte Wirkungen BearbeitenEine Variable reprasentiert zu jedem Zeitpunkt des Programmablaufes einen ganz bestimmten Wert Die Gesamtheit aller Variablen und ihrer Werte definiert den Programmzustand einer abstrakten Maschine siehe operationale Semantik Dieser Zustand kann nur durch Operationen mit spezifizierten Wirkungen verandert werden 1 Unspezifizierte Wirkungen BearbeitenVon diesen spezifizierten Wirkungen zu unterscheiden sind die unspezifizierten Wirkungen die ausserhalb der Betrachtung des Systems liegen Dazu kann beispielsweise je nach Definition die Bildschirmausgabe gehoren Unspezifizierte Effekte werden fur die abstrakte Maschine ggf nicht berucksichtigt Wirkungsfreiheit der rein funktionalen Programmierung BearbeitenIn rein funktionalen Programmiersprachen hat die Auswertung eines Ausdrucks im Unterschied zu anderen Programmiersprachen niemals eine spezifizierte Wirkung eine Wirkung in Form der Ausgabe eines Ergebnisses ist in diesem Fall keine spezifizierte Wirkung Es gibt in solchen Sprachen keine Anweisungen daher auch keine Variablen oder Wertezuweisungen sondern nur Ausdrucke In der rein funktionalen Programmierung treten deshalb keine Zustandsanderungen im Sinne der obigen Definition und somit auch keine Wirkungen auf 2 die Programmiersprache ist zustandslos und wirkungsfrei 2 3 3 Diese Eigenschaft einer Programmiersprache wird als referenzielle Transparenz bezeichnet Sie besagt dass der Wert eines Ausdrucks nur von seiner Umgebung abhangt und nicht vom Zeitpunkt oder einer bestimmten Reihenfolge der Auswertung 4 Beispiele fur ganzlich wirkungsfreie Sprachen sind die rein funktionalen Programmiersprachen Haskell Elm oder reines Lisp pure Lisp Beispiel Bearbeiten Das folgende mit seinen Klammern und der Prafixnotation fur eine Sprache wie Lisp oder Scheme typische Beispielprogramm liefert abhangig von einer Bedingung eines von zwei moglichen Berechnungsergebnissen zuruck if a 0 a 1 a 2 Es findet keine Zuweisung des Ergebnisses zu einer Variable statt Insbesondere hat die Reihenfolge der Auswertung der einzelnen Funktionen if und keinen Einfluss auf das Ergebnis jeder Ausdruck kann an jeder Stelle durch seinen Wert ersetzt werden das ist die referenzielle Transparenz Funktionale aber nicht rein funktionale Programmierung Bearbeiten In anderen funktionalen Programmiersprachen wie etwa Scheme konnen Prozeduraufrufe die Werte von Variablen verandern spezifizierte Wirkung oder Bildschirmausgaben auslosen unspezifizierte Wirkung Dadurch geht die referenzielle Transparenz verloren und Scheme ist damit keine rein funktionale sondern nur eine funktionale Sprache 4 Um diese Eigenschaft in der fur Lehrzwecke eingesetzten Sprache Scheme hervorzuheben werden wirkungsbehaftete Prozeduren mit einem Ausrufezeichen gekennzeichnet z B in der Variablenzuweisung set a 2 Einzelnachweise Bearbeiten a b Hans Jurgen Appelrath Jochen Ludewig Skriptum Informatik eine konventionelle Einfuhrung Version vom 11 Februar 1999 abgerufen am 10 August 2008 a b P Rechenberg G Pomberger Informatik Handbuch Carl Hanser Verlag Munchen Wien 2006 ISBN 978 3 446 40185 3 a b C Wagenknecht Programmierparadigmen Teubner Wiesbaden 2004 ISBN 978 3 519 00512 4 a b C Schiedermeier Funktionales Programmieren Memento vom 22 Mai 2005 im Internet Archive PDF Nurnberg 2002 Abgerufen von https de wikipedia org w index php title Wirkung Informatik amp oldid 236026393