June 27, 2018

C++ the language of the future


Since 1-2 years there are some articles available which are introducing C++ as the best programming language ever which is superior to Java, C# and Python. Are these articles right? To answer the question we must take a look back into the year 1995. The advantage is, that the history is well understood and many material is available. How was the situation in programming language in the past? Programming in C++ was possible but there was many pitfalls out there. At first, the Borland C++ compiler cost a lot of money and needs huge ressources. If somebody was interested in writing a simple Hello World program such a compiler was not the best choice, the better idea was to use a basic interpreter from MS-DOS or the Commodore 64.
But, it was clear that at least in the year 1995, C++ was an advanced high-end programming language. Because it contains lots of features: compilation of sourcecode result into fast applications, object-oriented programming is highly productive and templates allows to write the same algorithm with less code. Suppose, somebody was familiar with C++, has a lot of money and has also a fast developer workstation, then C++ was the way to go.
Since then lots have changed. State-of-the-art C++ compilers like GCC are available for free, a cheap consumer PC can be used as a workstation and new language feature like std::vector allows it to use C++ like Python. C++ works the same like in the year 1995 but without the pitfalls. And that is the reason, why some people are arguing that C++ is the language of the future. Basically it is the same language like in the year 1995, but today the costs are much lower. Perhaps the most interesting aspect is, that C++ scales to many demands. At first it is possible to write any application with it: web application, command line programs, GUI applications, games, compilers and operating systems. And secondly it is possible to use a C++ compiler in many ways. The beginner can program in C++ like in a python interpreter. That means he is writing down a hello world function which contains apart from a loop and an if-statement no interesting feature, while the expert programmer can define his own class library and use template metaprogramming. It is even possible to extend C++ into a stack-based programming language, which is called UNconventional Threaded Interpretative Language (UNTIL) and was invented by Norman E. Smith.
A look back into the year 1995 is also useful to determine the importance of GUI-libraries. In 1995 there were two major libraries out there: Object Window Library (OWL) from Borland, and Microsoft Foundation Classes (MFC; Microsoft). Such a library together with an object-oriented language is a powerful tool for creating complex application in a short amount of time. And this answer perhaps the question which programming language is right for today. In the year 2018 there are also two important open question: which language is right, and which GUI library is right?
Let us take a look into a bottleneck of today's C++ development. Under MS-Windows, C++ works great. Or to say it better: there are C++ libraries out there. If the user want's to program in Linux a GUI application he will run into trouble. The gtkmm library is available, it can be installed for free, but it is very weak documented and no introduction tutorials are available. That means, a newbie is not able right now to program under Linux a C++ GUI application. In contrast the situation in Windows is much better. I would guess, that a missing C++ GUI library which is well documented in an open Source operating system is the major bottleneck in todays C++ development. That means, if somebody is arguing he is not using C++ but C# under MS-Windows because it has the better library then he is probably right.