<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Wirkung_%28Informatik%29</id>
	<title>Wirkung (Informatik) - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Wirkung_%28Informatik%29"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Wirkung_(Informatik)&amp;action=history"/>
	<updated>2026-06-11T13:40:48Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Wirkung_(Informatik)&amp;diff=1413981&amp;oldid=prev</id>
		<title>imported&gt;Polluks: /* Einzelnachweise */ Archiv</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Wirkung_(Informatik)&amp;diff=1413981&amp;oldid=prev"/>
		<updated>2025-02-27T15:57:31Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Einzelnachweise: &lt;/span&gt; Archiv&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;In der [[Theoretische Informatik|theoretischen Informatik]] bezeichnet eine (spezifizierte) &amp;#039;&amp;#039;&amp;#039;Wirkung&amp;#039;&amp;#039;&amp;#039; die Veränderung des Zustands, in dem sich eine [[abstrakte Maschine]] befindet.&amp;lt;ref name=&amp;quot;Appelrath1999&amp;quot; /&amp;gt; Manchmal wird auch von &amp;#039;&amp;#039;&amp;#039;Seiteneffekt&amp;#039;&amp;#039;&amp;#039; gesprochen, eine Bezeichnung, die auf eine [[Übersetzungsschwierigkeit #Wortneubildungen durch Rückübersetzung|Rückübersetzung]] des englischen &amp;#039;&amp;#039;side effect&amp;#039;&amp;#039; (deutsch: [[Nebenwirkung]]) zurückgeht.&lt;br /&gt;
&lt;br /&gt;
[[Ausdruck (Programmierung)|Ausdrücke]] und [[Funktion (Programmierung)|Funktion]]en können sein:&lt;br /&gt;
* wirkungsbehaftet&lt;br /&gt;
** mit spezifizierten Wirkungen (s.&amp;amp;nbsp;u.): in den meisten [[Programmiersprache]]n kann die [[Auswertung (Informatik)|Auswertung]] eines Ausdrucks eine spezifizierte Wirkung haben.&lt;br /&gt;
** mit unspezifizierten Wirkungen (s.&amp;amp;nbsp;u.): dazu gehören z.&amp;amp;nbsp;B. in der Regel alle Funktionen, die mit der [[Eingabe (Computer)|Ein-]] oder [[Ausgabe (Computer)|Ausgabe]] von Daten zu tun haben.&lt;br /&gt;
* wirkungsfrei: dazu gehören in [[Höhere Programmiersprache|Hochsprache]]n etwa [[mathematische Funktionen]] wie [[Sinus]], [[Kosinus]] oder [[Quadratwurzel]].&lt;br /&gt;
&lt;br /&gt;
== Spezifizierte Wirkungen ==&lt;br /&gt;
Eine [[Variable (Programmierung)|Variable]] repräsentiert zu jedem Zeitpunkt des [[Programmablauf]]es einen ganz bestimmten Wert. Die Gesamtheit aller Variablen und ihrer Werte definiert den [[Prozesskontext #Der Kontext von Prozessen eines Betriebssystems|Programmzustand]] einer abstrakten Maschine (siehe [[operationale Semantik]]). Dieser Zustand kann nur durch [[Operation (Informatik)|Operationen]] mit spezifizierten Wirkungen verändert werden.&amp;lt;ref name=&amp;quot;Appelrath1999&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Unspezifizierte Wirkungen ==&lt;br /&gt;
Von diesen spezifizierten Wirkungen zu unterscheiden sind die unspezifizierten Wirkungen, die außerhalb der Betrachtung des Systems liegen. Dazu kann beispielsweise, je nach Definition, die Bildschirmausgabe gehören. Unspezifizierte Effekte werden für die abstrakte Maschine ggf. &amp;#039;&amp;#039;nicht&amp;#039;&amp;#039; berücksichtigt.&lt;br /&gt;
&lt;br /&gt;
== Wirkungsfreiheit der rein funktionalen Programmierung ==&lt;br /&gt;
In [[Funktionale Programmierung #Rein funktionale Programmiersprachen|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 [[Anweisung (Programmierung)|Anweisungen]], daher auch keine Variablen oder Werte[[zuweisung]]en, sondern nur [[Ausdruck (Programmierung)|Ausdrücke]]. In der rein funktionalen Programmierung treten deshalb keine Zustandsänderungen im Sinne der obigen Definition und somit auch keine Wirkungen auf;&amp;lt;ref name=&amp;quot;Informatik-Handbuch&amp;quot; /&amp;gt; die Programmiersprache ist [[zustandslos]] und wirkungsfrei.&amp;lt;ref name=&amp;quot;Informatik-Handbuch&amp;quot;&amp;gt;P. Rechenberg, G. Pomberger: &amp;#039;&amp;#039;Informatik-Handbuch&amp;#039;&amp;#039;. Carl Hanser Verlag, München/Wien 2006, ISBN 978-3-446-40185-3.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;Wagenknecht&amp;quot;&amp;gt;C. Wagenknecht: &amp;#039;&amp;#039;Programmierparadigmen&amp;#039;&amp;#039;. Teubner, Wiesbaden 2004, ISBN 978-3-519-00512-4.&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;Wagenknecht&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese Eigenschaft einer Programmiersprache wird als [[referenzielle Transparenz]] bezeichnet. Sie besagt, dass der Wert eines Ausdrucks nur von seiner Umgebung abhängt und nicht vom Zeitpunkt oder einer bestimmten Reihenfolge der Auswertung.&amp;lt;ref name=&amp;quot;Schiedermeier&amp;quot;&amp;gt;C. Schiedermeier:  {{Webarchiv|text=&amp;#039;&amp;#039;Funktionales Programmieren&amp;#039;&amp;#039;. |url=http://www.informatik.fh-nuernberg.de/Professors/Schiedermeier/SS_2002/FunProg/Vorlesung/FunProg_SS2002.pdf |wayback=20050522010631 }} (PDF) Nürnberg 2002.&amp;lt;/ref&amp;gt; Beispiele für gänzlich wirkungsfreie Sprachen sind die rein funktionalen Programmiersprachen [[Haskell (Programmiersprache)|Haskell]], [[Elm (Programmiersprache)|Elm]] oder reines [[Lisp]] (&amp;#039;&amp;#039;pure Lisp&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
=== Beispiel ===&lt;br /&gt;
Das folgende, mit seinen Klammern und der [[Präfixnotation]] für eine Sprache wie Lisp oder Scheme typische Beispielprogramm liefert abhängig von einer Bedingung eines von zwei möglichen Berechnungsergebnissen zurück:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Lisp&amp;quot;&amp;gt;&lt;br /&gt;
(if (= a 0)&lt;br /&gt;
  (+ a 1)&lt;br /&gt;
  (* a 2))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es findet keine Zuweisung des Ergebnisses zu einer Variable statt. Insbesondere hat die Reihenfolge der Auswertung der einzelnen Funktionen (&amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;) keinen Einfluss auf das Ergebnis: jeder Ausdruck kann an jeder Stelle durch seinen Wert ersetzt werden; das ist die referenzielle Transparenz.&lt;br /&gt;
&lt;br /&gt;
=== Funktionale, aber nicht rein funktionale Programmierung ===&lt;br /&gt;
In anderen funktionalen Programmiersprachen wie etwa [[Scheme]] können [[Prozedur (Programmierung)|Prozedur]]&amp;lt;nowiki/&amp;gt;aufrufe die Werte von Variablen verändern (spezifizierte Wirkung) oder Bildschirmausgaben auslösen (unspezifizierte Wirkung). Dadurch geht die referenzielle Transparenz verloren, und Scheme ist damit keine rein funktionale, sondern „nur“ eine [[Funktionale Programmierung|funktionale Sprache]].&amp;lt;ref name=&amp;quot;Schiedermeier&amp;quot; /&amp;gt; Um diese Eigenschaft in der für Lehrzwecke eingesetzten Sprache Scheme hervorzuheben, werden wirkungsbehaftete Prozeduren mit einem Ausrufezeichen gekennzeichnet, z.&amp;amp;nbsp;B. in der Variablenzuweisung &amp;lt;code style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;(set! a 2)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;Appelrath1999&amp;quot;&amp;gt;&lt;br /&gt;
Hans-Jürgen Appelrath, Jochen Ludewig: [https://web.archive.org/web/20180520053046/http://www.iste.uni-stuttgart.de/fileadmin/user_upload/iste/se/research/publications/Skriptum_HJAx_JL_MEDOC/Skriptum_Informatik/41.html &amp;#039;&amp;#039;Skriptum Informatik - eine konventionelle Einführung&amp;#039;&amp;#039;.] Version vom 11. Februar 1999; Archiv vom 20. Mai 2018&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Informationstheorie]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Polluks</name></author>
	</entry>
</feed>