Seiteneffekte
Seiteneffekte
Was sind eigentlich Seiteneffekte ?
Ich hab schon in google nachgeschaut aber da gibt es irgendwie keine richtige Antwort.
Ich hab schon in google nachgeschaut aber da gibt es irgendwie keine richtige Antwort.
C ( Durchschnittlich ) C++ (am Lernen)
- Dirty Oerti
- Beiträge: 2229
- Registriert: Di Jul 08, 2008 5:05 pm
- Wohnort: Thurndorf / Würzburg
Re: Seiteneffekte
Oha.
Seiteneffekte in welchem Zusammenhang.
Nicht-informatisch kann ich dir sagen, dass Seiteneffekte etwas sind, was nebenher wegen einem Ereignis passiert.
Ich bin mir aber fast sicher, dass du das nicht meinst...
Wo hast du denn davon gehört, bzw in welchem Zusammenhang?
Seiteneffekte in welchem Zusammenhang.
Nicht-informatisch kann ich dir sagen, dass Seiteneffekte etwas sind, was nebenher wegen einem Ereignis passiert.
Ich bin mir aber fast sicher, dass du das nicht meinst...
Wo hast du denn davon gehört, bzw in welchem Zusammenhang?
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne!
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
Ich helfe gerne!

----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
Re: Seiteneffekte
Ich verstehe nicht was seiteneffekt bedeutet im zusammenhang mit der if anweisung
C ( Durchschnittlich ) C++ (am Lernen)
Re: Seiteneffekte
Gegooglet, Seiteneffekte falsch geschrieben (nur ein "f") und gefunden:
http://www.mi.uni-koeln.de/c/mirror/f7a ... fects.html
Das müsste es eigentlich sein.
Ich hoffe du kannst damit etwas anfangen.
MfG Fuss
http://www.mi.uni-koeln.de/c/mirror/f7a ... fects.html
Das müsste es eigentlich sein.
Ich hoffe du kannst damit etwas anfangen.
MfG Fuss
- Dirty Oerti
- Beiträge: 2229
- Registriert: Di Jul 08, 2008 5:05 pm
- Wohnort: Thurndorf / Würzburg
Re: Seiteneffekte
Cool, den Begriff kannte ich auch nicht.^^
Bzw, ich wusste nicht, das es dafür einen eigenen Begriff gibt
Auch was gelernt.
Bzw, ich wusste nicht, das es dafür einen eigenen Begriff gibt

Auch was gelernt.

Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne!
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
Ich helfe gerne!

----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
- tutorials.at
- Beiträge: 10
- Registriert: Mo Jan 19, 2009 2:23 pm
- Wohnort: Wien
- Kontaktdaten:
Re: Seiteneffekte
Kommt sogar bei mir vor:
http://www.google.at/search?q=site%3Atu ... teneffekte
http://www.google.at/search?q=site%3Atu ... teneffekte
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Seiteneffekte
Ein Seiteneffekt ist alles, was passiert, obwohl es nicht das Bedürfnis des Ausführenden war.soufian88 hat geschrieben:Was sind eigentlich Seiteneffekte ?
Ich hab schon in google nachgeschaut aber da gibt es irgendwie keine richtige Antwort.
Seiteneffekte lassen sich gelegentlich nicht verhindern, also muss eine Software sich dagegen absichern.
Beispiel: es laufen mehrere Prozesse, die alle auf die gleichen Bank Daten zugreifen. Kunde 1 hat 100 Euro auf dem Konto, Kunde 2 hat 200 Euro auf dem Konto und überweist 100 Euro an Kunde 1. Gleichzeitig überweist Kunde 1 50 Euro an Kunde 3.
Überweisung 1 liest den Kontostand von Kunde 2 aus: 200 Euro, zieht 100 Euro ab und speichert den Kontostand neu ab. Nun liest sie den Datensatz von Kunde 1: 100 Euro.
Überweisung 2 beginnt und liest den Datensatz von Kunde 1 aus: 100 Euro. 50 Euro werden abgezogen und gespeichert. Kunde 1 hat den Kontostand 50 Euro.
Überweisung 1 geht weiter: auf die ausgelesenen 100 Euro werden 100 Euro addiert. Der neue Kontostand von Kunde 1 ist damit 200 Euro, dieser wird gespeichert und überschreibt den veränderten Kontostand von 50 Euro.
Datensätze, die von mehreren Prozessen geschrieben werden können, können durch ungünstige Verkettungen verkehrt geschrieben werden. Hier tritt ein Seiteneffekt auf (das Überschreiben eines Ergebnisses, ohne die Veränderung beachtet zu haben). Das Programm hat eine Racing-Condition: Je nach Ausführungzeitpunkt der beiden Prozesse können unterschiedliche Ergebnisse auftreten.
Überweisungen müssen durch einen Mutex zu atomaren, nicht unterbrechbaren Anweisungen gezwungen werden, um Seiteneffekte zu verhindern.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: Seiteneffekte
Am größten ist die Gefahr zu Seiteneffekten aber bei Makros, da sie vor allem teilweise sehr schwer nachzuvollziehen sind. Schau dir einmal folgendes Beispiel an:
Was glaubst du gibt dieser Code aus?
Zuerst wird '++a' mit '++b' verglichen. Da a und b den den gleichen Wert von 2 erhalten gibt dieser Vergleich falsch bzw 0 zurück. Deshalb wird der Teil (b) zurückgegeben. Da in einem Makro aber alle "Parameter" ersetzt werden und nicht die nur dir Werte übernommen werden, wird aus (b) (++b). Der Rückgabewert deshalb vor der Rückgabe noch um 1 erhöht. Die Ausgabe wird also lauten:
Und genau so etwas nennt man Seiteneffekt und sollte so gut wie möglich vermieden werden. Deshalb sollte man auch in Funktions/Makroaufrufen oder zb if-Abfragen wenn man nicht genau weiß vermeiden den Inkrement oder Dekrementoperator zu verwenden, da man oft nur sehr schwer erkennen kann wie oft er aufgerufen wird.
Code: Alles auswählen
#define MIN(a,b) ( (a < b) ? (a) : (b) )
// ...
int a = 1, b = 1;
printf("min(2,2)=%d\n",MIN(++a,++b));
printf("a=%d, b=%d\n", a, b);
Zuerst wird '++a' mit '++b' verglichen. Da a und b den den gleichen Wert von 2 erhalten gibt dieser Vergleich falsch bzw 0 zurück. Deshalb wird der Teil (b) zurückgegeben. Da in einem Makro aber alle "Parameter" ersetzt werden und nicht die nur dir Werte übernommen werden, wird aus (b) (++b). Der Rückgabewert deshalb vor der Rückgabe noch um 1 erhöht. Die Ausgabe wird also lauten:
Code: Alles auswählen
min(2,2)=3
a=2, b=3
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)
OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at
OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at
Re: Seiteneffekte
Was hat die Zeile auf sich? zumindest die hälfte der Zeile verstehe ich#define MIN(a,b) ( (a < b) ? (a) : (b) )
C ( Durchschnittlich ) C++ (am Lernen)