Justin James thinks there is still great potential for C++ developers to do quite nicely for themselves.
TechRepublic member Oleg F (an experienced C++ developer) asked for my thoughts on the "present and future" of C++. In addition, he wanted information on how C++ fits into the .NET universe, web development, and cloud computing. Below is my response.
I believe the days of C++ as a general purpose programming language are quickly ending for most developers. There are still lots of great uses for C++, particularly for OS-level work, low-level work (embedded devices, device drivers, etc), certain high-performance applications, and applications where the overhead of a system like .NET or Java would be too heavy (like an office suite). Some developers will continue to use C++ for applications that other, less complex languages can handle as well. But for the typical developer, C++ is a big headache for minimal gain.
The performance issues that most developers face are not the kinds of issues that moving to native code will resolve; once you take performance out of the equation, C++ is a fairly unattractive option for application development in most cases.
The handful of C++ developers that I’ve talked to say using C++ in the .NET managed environment is not particularly attractive to them; this takes away much of the opportunity to use it in a web development capacity, unless you want to use it in the CGI model. There are good things about CGI (less overhead, simple conceptual model) and bad things about CGI (your application has to be “aware” of many more low-level tasks). From what I’ve heard, under the .NET CLR, C++ loses its speed, as well as many of the things that make C++ useful.
This is not to say that C++ is going away any time soon. I see C++ joining the ranks of COBOL and FORTRAN as a legacy language with a massive installation base and a need for people to maintain/extend existing applications for more than 50 years. In addition, a number of new development projects will be started in it for a variety of reasons (familiarity, library support, tradition/habit, cultural, etc). I also suspect that it will pick up a reputation as a “dead” language (again, like COBOL), due more to a lack of buzz and hype than actual non-usage (also like COBOL).
I don’t want to make the future for C++ sound dismal; if anything, I think there is great potential for C++ developers to do quite nicely for themselves. If you’re a C++ developer, I suggest that you stick with the language. Are the things you’re working on flashy or get the same attention as web applications in the mainstream publications? No. But with the current salary structures, I feel that experienced C++ developers will see very nice pay cheques for some time. In addition, as the remaining C++ work is of higher difficulty and fewer people learn C++ (it isn’t taught as frequently in colleges these days), I expect C++ developers to have more job security and better compensation than .NET or Java developers over the long run.
While C++ in web development is not likely to become mainstream any time soon and desktop application development in C++ becomes less common, I think there is a lot of upside opportunity for C++ in certain aspects of cloud computing. For some projects (think of ones that are well suited to supercomputers), the cloud offers C++ developers a way to get the same benefits of grid computing but with much more flexibility. There is a lot of overlap between those projects and the kinds of projects for which developers regularly use C++. As a result, I think cloud computing will replace or supplement grids and supercomputers in many projects and will provide an excellent opportunity to see C++ used in new and innovative ways.
Keep in mind that much of this analysis is focused on the Windows world. From what I see, the *Nix development community is still very C/C++ orientated. C++ developers who are concerned about dwindling opportunities in Windows should definitely take a look at *Nix development.
I believe that C++ will slowly fade into the background, but it will neither die nor will it ever become unimportant. While most developers I know have never touched C++ in a real-world environment, many developers would benefit from learning it, if only to gain some appreciation of various languages, including Java, .NET and Ruby.
Disclosure: Justin James has a working arrangement with Microsoft to write an article for MSDN Magazine. He also has a contract with Spiceworks to write product buying guides.






1
Jan Seidl - 02/07/09
C++ is (IMHO) the most powerful language. It serves as base to most other languages and its the root of OO implementation. WIth everytihing going towards internet, portable languages gain space better than C++ that is environment specific but C++ would result in a greater speed because it would be compiled rather than interpreted.
In other hand, C++ is more mistake-prone because high level languages have some "conforts" in their coding manner so coders must be more graded to do secure work in C++ than others.
As you said, in UNIX development C and C++ are in top fuel and I think it will always be. There are C++ framework like Platinum, Reason (never used them) that may pump up C++ popularity.
[]s
» Report offensive content
2
Jesse - 18/07/09
You offer several good observations, but I am not sure I agree with some of your reasons. First, you sound as if you perceive the primary benefit of C++ as being performance. While there's a lot of truth to that, you don't highlight the fact that C++ also offers a staggering array of tools for abstraction /and/ performance, which I see as one of its true strengths in addition to the level of control you get. It's true that "with great power comes great responsibility", but most of the features in the language exist for very good (though often non-obvious) reasons.
C++0x will go a long way toward making some of the more "advanced" stuff much easier to use, but it's important for C++ developers to be sure they learn modern idioms. Shockingly, many-- okay, most (!)-- developers think of and use the language in ways that are around 15 or more years out of date with current practice.
C++ is a general-purpose programming language with a focus on systems programming. Tools focused on specific application domains will tend to have an edge there, but many of them derive their strengths primarily because of their libraries and platform support, not because of language features.
C++ is extremely powerful in terms of what the language lets you "say". The Windows and Unix worlds are important slices of the pie, but the pie is so big that nobody really knows what it's used for!
As you correctly observe, there's a lot of future potential for the language. I'm more optimistic than you are in terms of its future, in large part because I don't exactly see these languages "competing", for they're all indeed meant for different purposes.
Thanks for the thoughtful post!
» Report offensive content
3
Ivane Gegia - 20/07/09
I think that after QT is LGPL licensed, there is one more reason to use C++ for desktop(standalone or client) application.
Plus I think that we must not disrespect games market which is already big, fast growing and will continue to grow and the applications there mostly have <<Cpp + embedded scripting language>> model.
IMHO
» Report offensive content
4
KissMyAnthia - 25/07/09
dude!! its quite obvious you are an IT professional and not a programmer. C/C++ is optimal for operating system type development, device drivers are written in C(not C++) . C++ may not be used directly with web development but C++ components/dlls are very effective, optimal and they serve as the backbone of most large enterprise applications. as stated previously games programming = C/C++ , C/C++ is best described as "with great power comes great responsibility". when performance and speed is essential and next to assembly C/C++ comes next but understandably different languages are optimal for different technologies but no language will replace C/C++ unless all the real programmers in the would are abducted by aliens
» Report offensive content
5
MuANaser - 23/08/09
C++ will certainly not be COBOL. IMHO, It'll be the systems programming language as most systems have C++ at their core. So, system level works will have to done with C++. Its true that C++ jobs will be hard to get as business apps will be developed using something other than C++.
» Report offensive content
6
KK - 06/09/09
The author fail to understand that programming does not circle around web programming alone. I cannot picture C++ becoming legacy. I see it used for a specific purpose like C and assembly code. Games, video, compression, etc all need low level access while needing high level abstraction. This is where C++ is powerful.
» Report offensive content
7
igrg - 09/09/09
Use Boost and be happy (the jQuery of C++ world) and trust shall you to me because tis _the_ most powerful metaprogramming API that ever existed in C++. Ever! Way forward thy shall go!
» Report offensive content