As of April 14, 2020, there are 694 programming languages listed on the Wikipedia list of programming languages. This lists programming languages, not implementations and standards, so that C++ is a single programming language, be it GNU C++, Microsoft’s Visual C++, Clang, Intel C++ compiler or C++98, C++03, C++11, C++14, C++17.
Can a legacy programming language die?
Some primitive Microsoft Excel macros (it was not listed on Wikipedia page of programming languages… I just added it) were available from the first version (1.0 in year 1985) to the fourth version (4.0 in year 1992); they were superseded by Visual Basic for Applications (VBA) macros in Excel 5.0 (year 1993), at a time where personal computers were far less available than today. Microsoft failed to kill these old legacy macros 27 years later. In 2020, the latest Office 365 version still supports Excel 4.0 macro and dialog boxes with their security issues and even has kept the old macro and dialog editor! Why? Because, there are probably millions of lines of code running that old legacy language.
Now, Microsoft has to maintain three different macro languages: Excel 1-4 macros, VBA and Office Scripts. Excel 1-4 macros may die, or not, in some near future. VBA are there for much more time than Excel 1-4 macros that did not die in 27 years. If Microsoft survives long enough, I expect VBA to live at least 50 years from 2020, but that may be much longer.
A much better move, in my opinion would be to modernize VBA. Add first-class hashes (Collections are too primitive), closures, real exception handling. Get rid of all assembly code that made transition to 64 bits so hard and rewrite that in C++. Add new controls. Because, anyway, you will have to maintain that almost forewer.
Having many programming languages, create as many problems:
- Interoperability between programming languages is poor
- A programmer must learn many of them and live with all their flaws
- The development ressources allocated to developping implementations is proportional to the number of languages to maintain
- Same thing for packages/libraries.
Some counter-argument is that each programming language answers to specific needs. Programming languages are tools. The right tool for the right job must be used. That is ridiculous because almost all programming languages are general purpose and they make pretty much the same thing as others. Okay, there are four families that answers to different needs:
Very low level: assembly languages
Low level: C and C++
Intermediate with strong type system: C#, Java
General purpose scripting languages have pretty all the same features. Multiparadigmatic, weakly typed, supporting closures and object oriented programming.
Specialized programming languages are another beast that have its own problem. I will not analyze them there.
So, if you want to create the next new general purpose programming language, think about the legacy you will create and think about putting the same resources at improving an existing language or its libraries.
If the new programming languages introduces a new paradigm that changes completely the way to program, as OOP and functionnal programming did, then, you certainly should create it. If you just expect to fixes minor flaws of other programming languages, you will see that you just add new flaws and that the old flaws will live 50 years as the old programming languages continue their lives.