2 verschiedene rechner - gleiches ergebnis?
-
Dravere schrieb:
Und es ist auch teilweise ein wenig die Aufgabe des Programmierers, dass es auch so läuft.
also ich bin jetzt mal davon ausgegangen, dass das Programm fehlerfrei ist, sonst ist die Frage sinnlos.
-
Luckie schrieb:
also ich bin jetzt mal davon ausgegangen, dass das Programm fehlerfrei ist, sonst ist die Frage sinnlos.
Wobei "fehlerfrei" noch zu definieren wäre.
Was zu verschiedenen Ergebnissen führen könnte sind beispielsweise verschiedene Genauigkeiten von Fließkommazahlen (in JAVA sind die festgelegt, in C++ nicht) und daraus resultierende unterschiedliche Rundungsfehler. Wenn man ein Programm zwar fehlerfrei, aber dennoch ungeschickt in Bezug auf solche Rundungsfehler programmiert, können da durchaus arg unterschiedliche Ergebnisse herauskommen.
Weitere Möglichkeiten die mir spontan einfallen sind Überläufe von Integern mit verschiedener Genauigkeit, sowie Nebeneffekte (z.B. im Copy-Ctor in C++), die evtl. von einem Compiler wegotimiert werden, vom anderen nicht. Solche Fälle würde ich allerdings nicht mehr als fehlerfrei programmiert betrachten.
-
pumuckl schrieb:
Weitere Möglichkeiten die mir spontan einfallen sind Überläufe von Integern mit verschiedener Genauigkeit, sowie Nebeneffekte (z.B. im Copy-Ctor in C++), die evtl. von einem Compiler wegotimiert werden, vom anderen nicht. Solche Fälle würde ich allerdings nicht mehr als fehlerfrei programmiert betrachten.
In der Frage hieß es aber "Auf zwei Rechnern das gleiche Programm", damit dürfte praktisch eher ein und dasselbe Kompilat gemeint sein

-
hustbaer schrieb:
Bei float/double muss es nicht halten, denn da gibts einige bekannte Fehler in diversen CPUs. Wenn die CPU IEEE konform ist müsste AFAIK auch immer dasselbe rauskommen, aber real wird es eben nicht immer so sein.
solche fehler werden für gewöhnlich im bios oder im betriebssystem gefixt. im linux kernel findet man auf jedenfall hunderte fixes für cpu errata.
-
hustbaer schrieb:
Bei integer Berechnungen sollte es halten, vorausgesetzt das Programm hat keinen Fehler.
Bei float/double muss es nicht halten, denn da gibts einige bekannte Fehler in diversen CPUs. Wenn die CPU IEEE konform ist müsste AFAIK auch immer dasselbe rauskommen, aber real wird es eben nicht immer so sein.
Exakt. f'`8k
Gruß, TGGC (Der neue Game Star)
-
TGGC schrieb:
Exakt. f'`8k
unglaublich erhellend, dankeschön. hast du nichts besseres zu tun? kannst du deine profilneurose nicht irgendwie anders ausleben?
-
Doch, kann ich. f'`8k
Gruß, TGGC (Der neue Game Star)[/quote]
-
Grohool schrieb:
Kann ich davon ausgehen, dass wenn auf 2 verschiedenen PCs auf denen das gleiche Programm die gleiche Rechnung durchführt immer exakt das gleiche Ergebnis rauskommt?
Nein.
Einfaches Beispiel:
Programm gibt freien Festplattenplatz aus.
-> Fast immer ein anderes Ergebnis! q.e.d.
-
fast_alles_wissender schrieb:
Nein.
Einfaches Beispiel:
Programm gibt freien Festplattenplatz aus.
-> Fast immer ein anderes Ergebnis! q.e.d.Das ist es aber nicht mehr die gleiche Rechnung.
-
Der klassische Anfaengerfehler ist doch sowas:
float x = a / b; if (x == 0.5f) { } else if (x == 1.0f) { }
-
Grohool schrieb:
Kann ich davon ausgehen, dass wenn auf 2 verschiedenen PCs auf denen das gleiche Programm die gleiche Rechnung durchführt immer exakt das gleiche Ergebnis rauskommt?
Man kann das zwar erwarten, aber garantiert ist das noch lange nicht.
Alte Pentium CPUs rechnen z.B. falsch.
Und eine Turbo Pascal Bibliothek läuft auf modernen Rechnern nicht mehr.
Da kommt dann nämlich Runtime Error 200 oder so etwass ähnliches.Und Maschinencode, der die Eigenschaften einer 64 Bit CPU nicht berücksichtigt rechnet unter Umständen auch falsch.
-
TGGC schrieb:
Doch, kann ich. f'`8k
Gruß, TGGC (Der neue Game Star)
[/quote]
Mach lieber mal die Bugs aus Anno 14xx raus.
Ihr werft schon wieder so nen unfertigen Mist auf den Markt.
Du hast also mehr als genug zu tun. An die Arbeit!
-
Betatester schrieb:
TGGC schrieb:
Doch, kann ich. f'`8k
Gruß, TGGC (Der neue Game Star)
Mach lieber mal die Bugs aus Anno 14xx raus.
Ihr werft schon wieder so nen unfertigen Mist auf den Markt.
Du hast also mehr als genug zu tun. An die Arbeit![/quote]
Hinweis an TGGC:
Obige Message ist mit einem lauten
"Jawohl Herr!"oder
"Yes Sir!"
zu bestätigen.
-
Betatester schrieb:
Mach lieber mal die Bugs aus Anno 14xx raus.
Ihr werft schon wieder so nen unfertigen Mist auf den Markt.
Du hast also mehr als genug zu tun. An die Arbeit!
Du kannst gerne in der Fachpresse nachlesen, Anno 1701 war quasi bugfrei. Oder du liest mal die Patchnotes, ein Grossteil waren da nur Verbesserungen und Funktionserweiterungen. Wuesste aber nicht, was das ueberhaupt hiermit zu tun hat? f'`8k
Gruß, TGGC (Der neue Game Star)