Trotz vieler (zum Teil existenzieller) Unterschiede haben aktuelle Programmiersprachen doch eine breite Basis an grundlegend übereinstimmenden Funktionalitäten und Konventionen. Dies gilt insbesondere für die mathematischen Bibliotheken - könnte man meinen. Als ich kürzlich ein kleines Perl-Script in Java neuschreiben wollte, wurde ich jedoch eines Besseren belehrt. Konkret ging es um den Modulo-Operator (der den Rest einer ganzzahligen Division angibt) im Zusammenhang mit einen negativen Dividenden. Während in Perl
-1 mod 7 = 6 ergab, wollte mir Java das Ergebnis des Terms als -1 angeben.
Hier mal eine kleine Liste der Ergebnisse in unterschiedlichen Programmiersprachen:
Perl: 6
Python: 6
Ruby: 6
PHP: -1
JavaScript: -1
Java: -1
Pascal: -1
.NET: -1
C++: -1
Grund dafür ist übrigens die
Existenz zweier Methoden zur Berechnung - einer "mathematischen" und einer symetrischen.
Soviel zu Standards...