Because of ancient COBOL code from the 3 major banks that nearly all transactions pass through at some point. Oh and they can't rewrite them because money "CaNt FiX WhAT isNT BrOKe"
There's a huge amount of risk in rewriting old code. That COBOL or FORTRAN code is likely rock solid and has had 50 years of bug fixes applied to it to cover every possible edge case.
It's hard to justify the expensive of rewriting all of it (which would likely cost tens of millions of dollars) if the result is new code that does exactly the same thing as the old code.
By ancient, I hope you mean from like the 50s/60s when computers first started becoming a thing, and not like.....the 90s. If the 90s is ancient, I'm just going to have to cry.
In terms of technology, the 90s is archaic at this point. Imagine if your bank transactions had to go through a Dell running Windows 98 with a single piece of RAM measured in kb.
I'm pretty sure some parts of the US power grid are running on DOS and some of the medical system hasn't seen a security update since Windows 2000's end of life updates.
some parts of the US power grid are running on DOS
What's the problem with that, though? Systems like that are pretty much guaranteed to be isolated from the internet.
There's no need to rewrite code just because it's old. Code doesn't expire. If it's still doing what it's supposed to be doing, it's really not as bad as people make it out to be. Windows 11 still has code from NT 3.51 in it, because that code still does its job.
Code doesn't expire. But the programmers do (they die/retire).
If you want someone to maintain that code, old code only gets more expensive. Sure, if it ain't broke you don't need to maintain it to fix it, but you need to maintain it to upgrade it. When you eventually need to make an upgrade, it's going to be expensive. I don't know if it's more expensive than making the code not-old though.
Code doesn't expire. But the programmers do (they die/retire).
The old programmers should document their work and do a proper handoff to a new maintainer. At my work place, other people have to maintain my code, so I write wikis about how it works and do internal tech talks to explain things.
There's nothing wrong with it, per se. As they say, if it ain't broke, don't fix it. Just trying to put in perspective the technological difference between the 90s and today that makes the 90s "ancient" and how systems are still running on that old tech today.
The 90s was only about 30 years ago, but when you think of what computers running Windows 95 could do then compared to systems today, it's like a different era. It's no small wonder that banking systems can't keep your accounts up to date in real time when major pieces of them were designed before the internet was more than a DARPA project.
When my dad was in college for engineering, the college had their own computer, and he remembers going into the clean room to put his punch cards into it for classes. When I was a kid in the 90s, I remember being blown away by a flight sim on my dad's Mac. Today, I can grab my HTC Vive and be right in the cockpit of a fighter jet in something like DCS. Compared to when I was a kid, I might as well be on the holodeck from Star Trek. Dick Tracy's wrist computer went from science fiction to something people use just so they don't have to pull their computer out of their pocket.
The only thing that can outpace technology is internet meme culture.
A program from the 90s whose task is just to run a piece of machinery? Not broke, no problem
A program from the 90s supporting the bulk of an entire countrys economy that literally can't handle real-time transactions and causes numerous knock on effects as a result? Time replace the shit
What’s the problem with that, though? Systems like that are pretty much guaranteed to be isolated from the internet.
Because things break down eventually, and when it comes time to buy replacement parts you discover that they're effectively impossible to find. Then instead of having a nice, planned transition period you've got like a weekend to cobble together something to get it working again.
Hardware that runs DOS well isn't that hard to find though. There's even new modern-ish motherboards designed for embedded systems (like robots that control production lines) that still have ISA and PCI slots to support legacy hardware, since those embedded systems are designed to last a very long time.
For what it's worth, I know that some places that run old systems like that have virtualized it - they have much newer systems and run the old software in a VM.