https://medium.com/@bellmar/is-cobol-holding-you-hostage-with-math-5498c0eb428b
Face it: nobody likes fractions, not even computers.
When we talk about COBOL the first question on everyone's mind is always Why are we still using it in so many critical places? Banks are still running COBOL, close to 7% of the GDP is dependent on COBOL in the form of payments from the Centers for Medicare & Medicaid Services, The IRS famously still uses COBOL, airlines still use COBOL (Adam Fletcher dropped my favorite fun fact on this topic in his Systems We Love talk: the reservation number on your ticket used to be just a pointer), lots of critical infrastructure both in the private and public sector still runs on COBOL.
Why?
The traditional answer is deeply cynical. Organizations are lazy, incompetent, stupid. They are cheap: unwilling to invest the money needed upfront to rewrite the whole system in something modern. Overall we assume that the reason so much of civil society runs on COBOL is a combination of inertia and shortsightedness. And certainly there is a little truth there. Rewriting a mass of spaghetti code is no small task. It is expensive. It is difficult. And if the existing software seems to be working fine there might be little incentive to invest in the project.
But back when I was working with the IRS the old COBOL developers used to tell me: "We tried to rewrite the code in Java and Java couldn't do the calculations right."
[Ed note: The referenced article is extremely readable and clearly explains the differences between floating-point and fixed-point math, as well as providing an example and explanation that clearly shows the tradeoffs.]
(Score: 3, Insightful) by DannyB on Monday September 16 2019, @04:38PM
Maybe computers and software allow humans to create systems of such complexity that they cannot be completely specified in the way that, say, a large building can be.
Most other human activity involves lots of repetition. Many floors in a skyscraper? Lots of repetition or at least similarity. In software, repetition and similarity are factored into common functions, or collections (libraries) of such functions. Yet even with that factoring, every major software project involves a lot of complexity that is unique to the project. Even with UI frameworks. UI input validation frameworks. Database patterns and common practices. A lot has been made systematic -- yet each major project brings tons of uniqueness that is difficult to completely specify.
Software also is created for many one-off tasks by people who do not specialize in software and do not have the best practices. They just need it to work -- for them. And then share it with ten thousand colleagues.
People today are educated enough to repeat what they are taught but not to question what they are taught.