Click here to Skip to main content
15,880,796 members
Articles / Programming Languages / C++

C++ in the modern world

Rate me:
Please Sign up or sign in to vote.
4.87/5 (28 votes)
13 Jan 2016CPOL6 min read 41.4K   22   25
Thoughts about C++ in the modern world.

Debates about the present state of C++ in the programming world divide the participants into two camps: some dislike C++ and predict it's soon 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 exactly then? Let's try to figure this out.

Is it the beginning of the end?

Nothing of the kind. Sure, C++ is probably not so 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 of new software such as game engines is 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...

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 and a new library C++/CLI was released, while there still was 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 still has brought some additions and improvements.

It is very important that this trend is sustained and 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 (/Bet you'll) 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

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

 

 

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 the 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.

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 ones whose rating has increased, even though slightly.

Conclusion

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 even a 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.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer PVS-Studio
Russian Federation Russian Federation
I am an enthusiastic C++ developer from PVS-Studio Team. PVS-Studio is a static code analyzer that helps developers find bugs in C/C++/C# projects.

Comments and Discussions

 
QuestionC++ cannot be that popular Pin
Michael Chourdakis9-Jan-18 10:16
mvaMichael Chourdakis9-Jan-18 10:16 
QuestionAnother reason why C++ will stay alive. Pin
_Praetorian_11-Jan-17 2:17
_Praetorian_11-Jan-17 2:17 
QuestionJavaScript Pin
bfrthekid9918-Dec-16 14:11
bfrthekid9918-Dec-16 14:11 
AnswerMy vote of 5 Pin
Liju Sankar12-Feb-16 7:26
professionalLiju Sankar12-Feb-16 7:26 
QuestionMy 5 Pin
John Underhill5-Feb-16 7:37
John Underhill5-Feb-16 7:37 
GeneralOne more reason Pin
Rahul Rajat Singh5-Feb-16 1:12
professionalRahul Rajat Singh5-Feb-16 1:12 
I spent first 6 years of my development career using C++ writing Audio/Video playback engines, codecs, network monitors, sniffers and directX based User interfaces. After that I moved on to C#. The reason for providing this little history was to provide another perspective based on the supply and demand from the businesses and the changing application development scenario. Since I had to move to C# because my business owners wanted an app that made sense to create in C# rather than C++.

Back in 2003-2004 there were more standalone applications for the desktop users(be it windows or linux). Most programs for devices were written in C++(except for the few using J2ME and .NET Compact Framework). So performance was a big concern and so was restricting others from reverse engineering the application.

Now in 2016, the hardware is much more powerful and thus the general perception is that the higher level languages could provide a comparable performance too. The second thing is that the delivery mechanism of most apps have been changed to either a web based or a dedicated store based model. Which let the language vendors dictate more on the choice of language to create apps. Also the rise of web apps and cloud platforms made it little difficult to choose C++. Why you ask. Because the availability of web frameworks and cloud SDKs is not as good in C++ as other language/frameworks(again vendor driven).

Lastly, the reason for more businesses choosing higher level languages is the easy availability of resources. Its like a chicken and egg problem - Since more business applications are demanding the high level language skills, more people are learning them. Which again is giving fuel to business users to select high level languages since more resources became available.

what is my opinion
  • Is C++ better than other high level languages - Hell yes.
  • Is C++ the best programming language - From performance perse, yes. But from a language features perse, I think C# is ahead of others.
  • Will I choose C++ for my next project - Give me a project to create 3D UI and/or low level audio video codecs and I will choose C++. Give me a device to write firmware for and I will choose C++. But if someone wants me to develop an application for a mobile device or desktop which should be backed by an API backend hosted on cloud - I will not choose C++.
And now just ask, How much demand is there for 3d UI/multimedia apps/device firmware compared to server backed apps hosted on cloud. And here you have the answer.

What could be done

Software is driven by business and its not the other way round. So whats good for business should be chosen without any bias(read love) for any programming language. Having said that, if we want C++ to be back in the game, we need to have more web/app frameworks for C++ and perhaps find a vendor that will push hard for C++ usage.
GeneralMy vote of 5 Pin
Sharjith20-Jan-16 22:05
professionalSharjith20-Jan-16 22:05 
QuestionUh... Clearly you haven't paying attention to Microsoft... Pin
TheWerewolf14-Jan-16 13:26
TheWerewolf14-Jan-16 13:26 
GeneralRe: Uh... Clearly you haven't paying attention to Microsoft... Pin
vickoza15-Jan-16 10:03
vickoza15-Jan-16 10:03 
QuestionChart question Pin
rwolcott14-Jan-16 11:16
rwolcott14-Jan-16 11:16 
AnswerRe: Chart question Pin
Martin Hansing14-Jan-16 20:31
Martin Hansing14-Jan-16 20:31 
GeneralA few mistake in the article Pin
vickoza14-Jan-16 8:34
vickoza14-Jan-16 8:34 
GeneralRe: A few mistake in the article Pin
Rahul Rajat Singh5-Feb-16 1:13
professionalRahul Rajat Singh5-Feb-16 1:13 
QuestionThe Future of C++ is "Uncertain"? Pin
koothkeeper14-Jan-16 7:40
professionalkoothkeeper14-Jan-16 7:40 
AnswerRe: The Future of C++ is "Uncertain"? Pin
BrainlessLabs.com29-Jun-16 1:36
BrainlessLabs.com29-Jun-16 1:36 
GeneralWhere would C# and Java be without C++... Pin
liahona14-Jan-16 7:40
liahona14-Jan-16 7:40 
GeneralRe: Where would C# and Java be without C++... Pin
Cristian Amarie10-Feb-16 23:22
Cristian Amarie10-Feb-16 23:22 
GeneralRe: Where would C# and Java be without C++... Pin
liahona11-Feb-16 5:48
liahona11-Feb-16 5:48 
GeneralRe: Where would C# and Java be without C++... Pin
Cristian Amarie14-Feb-16 1:53
Cristian Amarie14-Feb-16 1:53 
QuestionEver heard of system programming? PinPopular
Charles Owen14-Jan-16 7:13
Charles Owen14-Jan-16 7:13 
AnswerRe: Ever heard of system programming? Pin
koothkeeper14-Jan-16 7:29
professionalkoothkeeper14-Jan-16 7:29 
QuestionMy vote of 5 Pin
steveb14-Jan-16 6:39
mvesteveb14-Jan-16 6:39 
SuggestionSuggestion Pin
Afzaal Ahmad Zeeshan13-Jan-16 1:46
professionalAfzaal Ahmad Zeeshan13-Jan-16 1:46 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.