24th March 2016 • Rob Fairbrother
As a technical recruiter in the Software Development sector, I regularly speak with skilled software engineers and professionals adept at a variety of languages, including C++, C# and Java.
Recently, after seeing all of the conversations going on about the future of C++ as a language, I decided to do some research of my own.
C++ is an extremely difficult language to learn and the language has a huge size and scope. The challenge presented to new programmers looking to learn it is pretty intensive.
“There are only 2 things wrong with C++: the initial concept and the implementation” – Bertrand Meyer
As a low level language, C++ is losing out on market share due to a trend for programmers to opt to code in higher level language (according to the long term trends in TIOBE’s programming index). Higher level languages are easy to read and projects happen quickly, and are thus often the cheaper option. The interfaces are often simpler, meaning that programmers can code in a shorter amount of time. However, it’s worth noting that the resulting programs usually run more slowly.
The language programmers code in is usually determined by the hardware they’re using. As hardware advances, C++ has ceased to be the universal option. The trend for corporations to move away from C++ into higher level, mainstream languages or newly created OOP (Object Oriented Programming) versions of C – such as Objective C (Apple), Java (Google) and C# (Microsoft) means that newer libraries and sample code aren't written in C++ as often.
New features are added to C++ every 3 years and the new C++11 standard has been well received within the programming community. The evolution of the language is spurred on by an “evolve or die” mentality within the C++ community. Indeed, C++ as a language may look very different within 5 years.
Whilst it may be seem less popular than mainstream languages, the new introduction of the C++11 standard is reportedly the reason C++ has become the biggest climber in the first half of 2015.
“Compared to last year C++ gained more than 3.1%, leaving Java (2.0%) and Python (1.6%) behind.” – TIOBE
With an excellent capacity for running legacy code, C++ still has a definite place within the programming world. It is simply not cost effective to rewrite decades of legacy code simply because of the advent of newer languages. C++ is also essential if you are writing code which will directly interface with raw hardware.
A powerful object oriented programming language, C++ is often full of pitfalls for the novice programmer. It makes no effort to conceal or prevent access to dangers. However, as the only language which can be used to simultaneously teach Object Oriented Programming and low level memory management within a platform in an independent way, it still has a great deal of clout within education.
The beauty of C++ is that if you understand it, you should be able to switch to any new language. If you’re able to learn a new syntax, almost every one of the concepts you might need will have been taught through C++. When learning C++, you are learning some of the core concepts of programming.
Integrated widely in finance, video games, high performance embedded and real time systems, transportation and manufacturing, C++ is perceived by many as a universal language. With the status as the only industrial programming language built around managing components with limited availability - Scope Bound Resource Management (formerly referred to as Resource Acquisition Is Initialisation – RAII) there can be no alternatives to C++ when it comes to precision and determinism.
Ultimately, it seems C++ is destined to perish as hardware evolves and newer programming languages become more applicable. The use of C++ in a large proportion of legacy code means that it won’t cease to be relevant for a while – it wouldn't be cost effective to think otherwise.
The new features being added to the standard on a consistent basis indicate that the C++ community is determined to evolve with the times and the language continues to provide strong object oriented programming capacities. Whilst it may not triumph when it comes to parallel programming, this multi paradigm language will be around for a while yet.