In the late 50’s, when people programmed close to metal (read: with assembly languages) on a daily basis, there were only two so-called high-level programming languages: Fortran and Lisp. Both are still in use, even though they are considered passé (yet, I consider Lisp and its Zen-like syntax as one of the best languages out there).
Since the late 60’s, hundreds of programming languages have emerged. Most notably the language C, developed between 1969 and 1973, which provides highly expressive constructs as well as assembly language-level primitives. In the 80’s C++ became an object-oriented extension of C, and eventually C++ received a standard definition in 1998. With the maturation of STL (Standard Template Library) in the late 90’s, and the coming of more libraries, notably the boost library in early 2000’s, C++ is the language of reference for applications that require a tight coupling with the hardware, e.g., operating systems, high performance computing, servers, video games, etc.
Java in particular has been hailed as the new universal language because of:
- Its portability, one of the major features of Java’s core design with the JVM.
- Its ease of use –a strong C/C++ flavor without the complexity, like the memory management.
- Its amazingly rich libraries –you can truly develop pretty much anything with a relatively small Java code if you know your libraries.
Since Java and the evolution of the web, it has somehow became fashionable to question C++’ relevance. Should you learn C++ at all? Is C++ dead? (Google returns more than 6 millions hits on that question…)
There are many empirical ways to measure the relevance and popularity of a language –see the TIOBE index, LangPop.com, PYPL, The RedMonk Ranking, Language Popularity Index, etc. They all show C++ alive and well. So where does this discrepancy come from?
For those who know the web as the only computing environment (and they are many), it is understandable to be biased towards the trendies languages –Ruby, Java, C#, etc. Too many people equate “not the best language for web development” with “obsolete”. These same people tend to forget that the large, distributed, real-time, fault-tolerant, infrastructures that fuel the web (servers, databases, data centers, cloud computing), as well as the OS and network logical layers that make it possible, are built on top of very efficient, close to metal, yet high-level languages, like C and C++. Case in point: Facebook, whose systems were mostly written in HTML, PHP and Java, has been moving its core infrastructure to C++ for performance.
So rest assured: C++ might not be the easiest language to master, or the most fashionable in the web spheres, but it is still the undisputed king for high performance computing, whether performance means speed, memory, or power.