There will be legacy

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.

Microsoft tried to kill Visual Basic classic when VB.NET was introduced in 2001. At the same time, it stopped to add any feature to VBA. For instance, the mouse wheel support was never added although the mouse wheel appeared in 1998. When converting the code base to 64 bits, Microsoft did not even take the time to convert the set of common controls and common dialogs to 64 bits, meaning that there are fewer features in newest Office 64 bits versions than in older. Also, that is not official, it is obvious that Microsoft tries to kill VBA. But, the actual successor is very recent. Microsoft added JavaScript/HTML Widgets and is going to add Office Scripts which look very much like VBA macros but with a JavaScript programming language. In my opinion, this is a bad move.

Killing a widely used language is almost impossible. COBOL is 61 years old and still there with the latest standard published in 2014. There are billions lines of codes running out and it is one of the most commonly used language with VB, JavaScript and Java.

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:

  1. Interoperability between programming languages is poor
  2. A programmer must learn many of them and live with all their flaws
  3. The development ressources allocated to developping implementations is proportional to the number of languages to maintain
  4. 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

Scripting languages: PHP, Perl, Python, Ruby, JavaScript, etc.

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.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *