Avatar von Exxtreme2
  • Exxtreme2

mehr als 1000 Beiträge seit 18.10.2008

Re: Dependent Types wären keine Lösung

Daelach schrieb am 19.03.2017 23:09:

Naja die Falle ist aber doch die, daß der Programmierer gar nicht damit rechnet, daß die Zahlen so groß werden. Typischerweise kommt sowas durch Übernahme von Code aus anderen Projekten, wo die Zahlen wirklich nicht größer wurden. Aber keiner prüft funktionierenden Code dann so genau nach, und mangelhafte Doku von Randbedingungen tut ein Übriges.

Hmmm, die meisten Überläufe passieren wenn das Programm Daten von extern reinbekommt. Sprich, entweder aus einer Datei oder Netzwerkverbindung. Da können Datenmengen bzw. Datenmutationen vorkommen mit denen die Programmierer nicht gerechnet hatten. Aus Performancegründen machen die dann ein riesiges Array für die Daten, prüfen dann aber nicht ob das Ding trotz seiner Größe überläuft.

Daelach schrieb am 19.03.2017 23:09:

Ja, das ist verständlich. Ich vermute mal, einfach Ganzzahlen mit Cents gehen nicht wegen Währungsumrechnungen, und hätte man damals Ganzzahlen mit Pfennigen gemacht, dann wäre man damit spätestens bei der Euro.Umstellung auf die Nase gefallen.

Nicht nur Währungsumrechnungen sondern auch prozentuale Umsatzsteuern etc. Da kommen am Ende schon recht viele Nachkommastellen zusammen. Und dann muss man auf solche künstlichen Datentypen zurückgreifen. Wobei das in Java schon recht geschickt gemacht wurde. Je nachdem wie groß die Zahl ist wird intern mit passenden Datentypen gearbeitet. Passt die Zahl in einen 64-Bit Integer dann nutzt BigInteger intern long. Dann sind die Berechnungen immer noch halbwegs schnell. Überschreitet die Zahl die 64-Bit dann wird intern ein int-Array benutzt etc. Für den Entwickler völlig transparent aber man muss halt auf Performance verzichten.

MfG

Das Posting wurde vom Benutzer editiert (20.03.2017 16:54).

Bewerten
- +