For some things you need compatibility, and that means that writing a replacement must be done extremely carefully and will require significant effort.
For some things you need compatibility, and that means that writing a replacement must be done extremely carefully and will require significant effort.
As a system ages, it becomes more and more complicated because it is serving more and more purposes. Accordingly making upgrades while preserving backward compatibility becomes harder and harder. I remember hearing about an old AT&T switch with software so intricate that in the end it required one meeting for every line of code changed. And so progress grinds to a halt.
At some point, you either break backward compatibility or face stagnation. Careful modularization and upgrades can push back the boundary, but not forever. Even good practices, good people, and a good organization can only tame so much complexity.
.
COBOL had a purpose, which was making programs more readable / understandable. We now have much better ways to do that, and it's a primary area of research.
C++ has a purpose, which is to maximize abstraction without imposing any unnecessary runtime cost. But we're not focused on doing better at this, since most applications don't really care about performance. C++ may become somewhat of a niche language only used to build the invisible low-level stuff, but it will never go the way of COBOL until something better at its purpose comes along (I've heard good things about Rust?).
Your tired has-been COBOL is so infrequently used that on Tiobe, it outranks D, Erlang, Common Lisp, Haskell, Scala, Go, Lua, ...
In light of that, I'd be careful with predictions like "few or no new projects will be done in C++". It might be a long while before we reach that point.
Is that for new projects, though?
You won't get stuff to post on HN, but the bank accountant will be very happy.
http://www.gtsoftware.com/netcobol-2/
http://www.fujitsu.com/global/products/software/developer-to...
http://www.microfocus.com/products/micro-focus-developer/vis...
Or that since COBOL 2002 there is support for OOP, and the standard just got a new revision this year.
Most corporations of enterprise level, seldom write full new applications, rather extensions to existing systems.
So the language depends a lot of the pool of available skills. If the employees are COBOL guys, the new modules will be COBOL as well.