To get a trial key
fill out the form below
Team License (standard version)
Enterprise License (extended version)
* By clicking this button you agree to our Privacy Policy statement

** This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
Request our prices
New License
License Renewal
--Select currency--
USD
EUR
GBP
RUB
* By clicking this button you agree to our Privacy Policy statement

** This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
To get the licence for your open-source project, please fill out this form
* By clicking this button you agree to our Privacy Policy statement

** This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
To get the licence for your open-source project, please fill out this form
* By clicking this button you agree to our Privacy Policy statement

** This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
I am interested to try it on the platforms:
* By clicking this button you agree to our Privacy Policy statement

** This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
Message submitted.

Your message has been sent. We will email you at


If you haven't received our response, please do the following:
check your Spam/Junk folder and click the "Not Spam" button for our message.
This way, you won't miss messages from our team in the future.

>
>
>
C++ in the modern world

C++ in the modern world

Jun 06 2015

Debates on the present state of C++ in the programming world divide the participants into two camps: some dislike C++ and predict it's imminent death, while others believe that it will persist as it has before. I'd say the truth lies somewhere in the middle, but that would mean that C++'s condition is kind of uncertain, like it was between the releases of C++03 and C++11. But it's not actually so. How so? Let's try to figure this out.

0329_CppPopularity/image1.png

Is it the beginning of the end?

0329_CppPopularity/image2.png

Nothing of the kind. Sure, C++ is probably not as popular as C# and Java among beginner programmers, and industry giants do not release new C++-specific technologies, nor is it promoted by Microsoft and Oracle. But interpreting this as the end of C++ is totally wrong. Software based on C++ is still in use and needs support. Most new software, such as game engines, are built with (/extensively uses) C++. C++11 and C++14, as well as C++17 which is coming out soon, only prove that C++ is doing well. But first things first.

C++11, C++14, C++17...

0329_CppPopularity/image3.png

As mentioned previously, C++ was in a somewhat "uncertain" condition between C++11 and C++03 releases. Old libraries such as boost, Qt, etc., were developing and improving a new library when C++/CLI was released, while there was still no sign of the new official standard.

Things went that way for a long time, but anyway the new C++11 standard was released in 2011 instead of 2009, as it had been planned. However, it was finally released and brought many additions, extensions, and syntactic sugar. It made the language much easier to code in; the standard library was expanded with many things to make the programming process easier. A lot of new features were introduced: official support of parallel programming, initialization lists to make the code clearer, lambda functions, and much more. But there is no need to discuss all of that here because the article is not about that.

OK, we have the C++11 standard, that's great. But what's next? Stagnation for another 8 years? No way. It is not a secret that C++14 has already been released. It is hard to compare C++11's and C++14's innovations (/It isn't as innovative as C++14), but it has still brought some additions and improvements.

It is very important that this trend is sustained, and that there are already some outlines of the new C++17 standard.

Of course, it will be a long time before programmers fully understand all the benefits of the new standards, and learn to use the innovations properly. Yet these innovations are sure to have a positive effect on the quality of the code and software.

And what about existing software?

Existing software

There is a large amount of software built with C++. Of course, we need to support it. Do you want to look at real-life examples? Please, check this list. You will surely (I can bet) find many well-known products there. I don't believe that anyone will take up the job of rewriting all the existing C++ code into C# or Java just because it will be easier to work with in future, and because of the garbage collectors, and so on. It appears that knowledge of C++ is still urgent. Considering that C++ has become much more convenient to work with, the idea of using it to write modules/applications does not sound crazy. It will be much easier to support such code later. At the same time, it is the same high-performance C++as it used to be, but extended with a huge variety of new features. The extended standard library will also give us an opportunity to use ready-made solutions instead of creating them anew.

Popularity among beginners

0329_CppPopularity/image4.png

From this viewpoint, things are not so good with C++. It is not much popular among beginner programmers who prefer C# or Java instead. Why? There are several reasons:

High language learning difficulty

0329_CppPopularity/image5.png

Every programmer knows that C++ is difficult. Yes, it is vast, and there are a lot of peculiarities. But what do we get in return? High performance + absolute control of all the processes (especially in original C). Again, we cannot but mention the C++11 standard with its improved user-friendliness, easy syntax, various containers, algorithms, and other useful things designed to make programmers' life and job easier.

However, you still can shoot yourself in the foot, though the probability of this has been greatly reduced.

Low promotion

It is not a secret for anyone that C# and Java are aggressively promoted by Microsoft and Oracle. I am not sure about Java, for I'm not very much into the current trends there, but promotion by Microsoft is very evident. Most Microsoft innovations are tailored specifically for C# and their hackathons use C# too. I'm not saying it's bad, I'm just stating a fact.

There is no support like that for C++. Sure, there is a variety of tools released specifically for it to make the workflow and the development process easier. Among these, we should mention Qt and ReSharper C++ recently released by JetBrains. Visual Studio 2015 now provides support for some of the innovations of the latest standards plus some new additional features that have made the workflow easier.

Nevertheless, it can't compare to C#'s and Java's scope of promotion.

Specialization

In spite of the fact that C++ is a very rich and flexible language, its scope of use is pretty narrow. Competitors contribute to this, too. Let's look at a real-life example - mobile software development. The major platforms are already occupied by specific languages: Windows Phone by C#, Android by Java, iOS by Objective-C. That doesn't mean that you can't use C++ for these platforms. The question is if it will be easy, and as efficient. Neither is C++ well suited for web software development, which is growing more and more popular every year. Yes, there are means to work with sockets and libraries like Wt. But have you heard much of C++ web applications? Me neither. Considering that mobile and web software development have become a very popular field, it's no wonder that beginner programmers prefer to learn other languages.

TIOBE Index

But it's all just words, and, as they say, a picture paints a thousand words.

Let's have a look at the current state of affairs. In this area, the TIOBE index is quite popular: it demonstrates language ratings, rating dynamics in the chart, and other parameters.

0329_CppPopularity/image6.png

As you can see, C++ is in the 3rd place presently, which is better than the last year. Furthermore, it is one of two languages among the top five whose rating has increased, even though it is only slightly.

Conclusion

0329_CppPopularity/image7.png

I think that you have already formed an opinion of C++'s current state in the modern world. Now let me speak my own.

Shouting that C++ is doing better than ever would be a lie. But an even bigger lie is to call it a "dying" language.

C++ is alive and occupying its own niche.

New standards introduce some innovations making the language easier and more "user-friendly". Software built with this language is still in use, and needs support. C++ is perfectly suited for software development in certain fields, which, together with everything said above, means that C++ is still needed, evolving, and not going to give up.

Popular related articles
How PVS-Studio Proved to Be More Attentive Than Three and a Half Programmers

Date: Oct 22 2018

Author: Andrey Karpov

Just like other static analyzers, PVS-Studio often produces false positives. What you are about to read is a short story where I'll tell you how PVS-Studio proved, just one more time, to be more atte…
The way static analyzers fight against false positives, and why they do it

Date: Mar 20 2017

Author: Andrey Karpov

In my previous article I wrote that I don't like the approach of evaluating the efficiency of static analyzers with the help of synthetic tests. In that article, I give the example of a code fragment…
Static analysis as part of the development process in Unreal Engine

Date: Jun 27 2017

Author: Andrey Karpov

Unreal Engine continues to develop as new code is added and previously written code is changed. What is the inevitable consequence of ongoing development in a project? The emergence of new bugs in th…
Technologies used in the PVS-Studio code analyzer for finding bugs and potential vulnerabilities

Date: Nov 21 2018

Author: Andrey Karpov

A brief description of technologies used in the PVS-Studio tool, which let us effectively detect a large number of error patterns and potential vulnerabilities. The article describes the implementati…
PVS-Studio for Java

Date: Jan 17 2019

Author: Andrey Karpov

In the seventh version of the PVS-Studio static analyzer, we added support of the Java language. It's time for a brief story of how we've started making support of the Java language, how far we've co…
PVS-Studio ROI

Date: Jan 30 2019

Author: Andrey Karpov

Occasionally, we're asked a question, what monetary value the company will receive from using PVS-Studio. We decided to draw up a response in the form of an article and provide tables, which will sho…
The Evil within the Comparison Functions

Date: May 19 2017

Author: Andrey Karpov

Perhaps, readers remember my article titled "Last line effect". It describes a pattern I've once noticed: in most cases programmers make an error in the last line of similar text blocks. Now I want t…
The Last Line Effect

Date: May 31 2014

Author: Andrey Karpov

I have studied many errors caused by the use of the Copy-Paste method, and can assure you that programmers most often tend to make mistakes in the last fragment of a homogeneous code block. I have ne…
The Ultimate Question of Programming, Refactoring, and Everything

Date: Apr 14 2016

Author: Andrey Karpov

Yes, you've guessed correctly - the answer is "42". In this article you will find 42 recommendations about coding in C++ that can help a programmer avoid a lot of errors, save time and effort. The au…
Characteristics of PVS-Studio Analyzer by the Example of EFL Core Libraries, 10-15% of False Positives

Date: Jul 31 2017

Author: Andrey Karpov

After I wrote quite a big article about the analysis of the Tizen OS code, I received a large number of questions concerning the percentage of false positives and the density of errors (how many erro…

Comments (0)

Next comments

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
This website uses cookies and other technology to provide you a more personalized experience. By continuing the view of our web-pages you accept the terms of using these files. If you don't want your personal data to be processed, please, leave this site.
Learn More →
Accept