Have you ever heard the conspiracy that we know how to make an everlasting lightbulb, but don't as it would put the makers out of business? Well it turns out there is some truth to this "planned obsolescence". Lightbulb manufacturers did conspire - coming together as part of the Phoebus Cartel - to shorten the lives of lightbulbs in the 1920s and 30s.
Not surprisingly then, planned obsolescence has a bad rap. I think in tech we have the opposite problem. We try to keep things working and pile new ideas on top when they are well passed their sell by date.
Languages
Fifteen years ago C++ had about fifty-five keywords, an already astonishing number. In the next release it will have around seventy-five.
Back when C++ was a mere fifty-five keyword language, a small language called Go was announced. Not exactly known for its breakneck pace of development, it now has a new package system, generics, iterator functions, a new for loop syntax and new for loop semantics.
I don't think it is controversial to say that C++ is a bit of a mess of features and backwards compatibility. Will Go be the same? Maybe Rust already is? Perhaps it is controversial to say that most other languages are tending towards C++: adding features until the language collapses under its own weight. Why haven't people heeded the warning?
Your Language Will Die
Because they don't want it to become obsolete. Unfortunately, one day your language is going to be yesterday's news. It doesn't have coroutines or higher kinded types or whatever the hot new thing is. One day, to your horror, you wake up and your language is COBOL.
But is that really so bad? For decades your language has been used to power banks and the military. You are probably going to have a lucrative and relaxed retirement keeping them ticking over. Sure, people who have never created a programming language write blog posts and use it as a stand-in for an old crusty technology, but you're laughing your way to the bank (and its mainframe room).
It is far better to have your language used and replaced than used, replaced but still trying to cling on to relevance.
A B. Stroustrup Writes In and Asks, "Why are you picking on me"?
Sorry Mr Stroustrup. You are right of course, this isn't unique to any language in particular. I might have used COBOL as an example of a dignified exit above but the latest release was in 2023 and added asynchronous messaging! A sixty six year old language is getting new features.
Neither is it limited to programming language design. Microsoft Paint used to start quickly and let you do rubbish drawings. There were sixteen buttons and a colour picker. Nowadays it has a ribbon, pre-set shapes, different brushes and a button to open a different paint application that does 3D. What do I get with these extra features? My drawing are still rubbish, it runs worse and is harder to use.
That doesn't mean we have to hobble our technology to be simple or to conform to whatever was possible thirty years ago. The mistake is repeatedly adding complexity and diluting your product. The problem is, it's very hard to fight this when you have to justify an upgrade fee or a monthly SaaS cost. There always needs to be another feature, or a new thing to keep people interested.
I don't think this is true in programming languages. Nowadays both the languages and the compilers tend to be free, so you don't have the monetary pressure. Furthermore, at least to start with, languages tend to be one-man bands. That gives the project a natural leader who can decide that it is done.
Perhaps if our tools lead, the rest of us will follow.