Topics


Blogs


Forums


Samples


Media


Labs


Resources

 




DevCentral > Weblogs > Joe Pruitt - A Software Architect's take on Network Security
 Will 2008 be the year for C++?
posted on Wednesday, January 09, 2008 7:38 AM

CPPProgrammingLanguageBookCover I was trolling through my feeds this morning and saw the post "Developers Will Find C++ Applications Playing Surprisingly Strategic Role in 2008 with Multi-Core and SOA"

Oh Realy?

Not if Microsoft, Sun, IBM, BEA, Apache, or any other mainstream development platform vendor/org has anything to say about it.

We'll start with this:

While developers often think of developing new applications on Microsoft's .NET or a variety of Java platforms, C++ remains one of the most widely deployed development languages for mission critical applications.

Define "Mission Critical" here.  If they mean, legacy systems then I wouldn't disagree.  In my experiences with our large enterprise customers and partners, I have heard ZERO talk about development in C++ in current projects.  Our customers are working on cutting edge automation and dynamic service environments and if C++ was the "most widely deployed development language", you would think it would come up at least once.  The mix I see is roughly 60% Java, 30% .Net, and 10% other (php, ruby, python).  Maybe C++ falls into that other 10% category, but even if it is, that's hardly the "most widely deployed".

The reason for this is simple; C++ continues to be better for many use cases, and software developers want to be able to use the 'right tool for the job.'

Totally agree.  That's why I see .Net/Java accounting for 90% of all new development projects I see in the enterprise space.

In addition, C++ projects are the second most active projects on both Apache and SourceForge.

Hmmmm.  Taking a look at Apache's list of projects organized by language, C++ shows only ONE project.  That must be one heck of an active product to the 80+ java based projects listed there.  I wonder where they got their data from on that one?

Well, look on the bright side, if you are an organization looking at either enhancing an existing system (or building a new one) in C++, you'll only have a 3-12% premium on your developer costs:

C++ developers, themselves, can look at 2008 as a breakout year for their own careers as well. According to PayScale, a global online compensation research provider, the median salary for C++ developers is three to twelve percent higher than those of Java or .NET developers.

It took me a second reading of this article to realize the motivation behind it.  It's a press release for Rogue Wave.  No, not the the band that is #1 and #2 on Google Search.  It's the Rogue Wave that is "the leading provider of enterprise class C++ components and infrastructure".  Now it makes some sense...

It's worth pointing out that Microsoft's Parallel Computing Developer Center and IBM's Distributed Parallel Programming Environment for Java are there to help out with those stuck in the world of .Net and Java and want to catch a ride on the multi-core SOA train.

What do you all think?  Will 2008 really be the year for C++?  I'm having a hard time seeing it.  Who knows, maybe I should switch my focus and get that 12% pay increase B-).

-Joe



 
      

Feedback


1/10/2008 2:36 PM
Gravatar Joe:

Rogue Wave believes there a lot of great opportunities for C++ in 2008, more than in recent years, but we know that not everybody sees it this way. The reason we issued the press release was to challenge some of the conventions of how developers and architects perceive C++.

Enterprise applications do widely use Java and .NET, no question. Managed languages are the right tool for the job for a wide variety of applications. C++ however, (plus C and other native languages) continues a solid, and in many cases, growing presence in several areas:

- High performance: for applications that require low latency and/or low memory usage, a large number of architects are choosing C++ in favor of managed languages. These are common in Financial Services, Military and many other applications. An interesting recent example is the team from Carnegie Mellon that won $2mm in the DARPA Urban Challenge for building an intelligent robotic car. According to the project lead, "Everything we did was written in C++." (http://www.sdtimes.com/article/LatestNews-20071115-15.htmlhttp:/www.sdtimes.com/article/LatestNews-20071115-15.html)

- Embedded: For embedded and mobile devices, one of the fastest growing areas in computing, C++ is the language of choice over both Java and .NET. Lower memory, tighter power and heat limits and other requirements make C++ a natural choice for optimized application development. According to the Gartner Dataquest report 'User Survey Analysis: Embedded Software Development Tools and RTOS, North America, 2006', "For application development, C and C++ are the most popular development languages. Surprisingly, Java usage dropped in 2006." (Daya Nadamuni, 13 September 2008)

- Existing apps: And, of course there are billions of lines of existing mission critical applications built on C++ in enterprises around the world.

These are almost all mission critical, and many are also legacy. In my experience, many if not most mission critical applications are also legacy. My favorite quote on this: years ago, one of my dev managers once quipped that the definition of legacy is “anything that has gone into production…”

As far as the overall viability of the language, there are a few interesting points worth considering:

1. C++ developers are commanding strong salaries, in many cases higher than developers with Java and .NET. I don't know for sure, but I suspect it's a combination of C++ resurgence and a smaller number of C++ developers available.

2. Universities are starting to reconsider their move to teaching computer science students in Java. Many universities continue to teach in C++ so that students have a solid foundational understanding of how systems work. Some professors contend that teaching Java has contributed to a decline in computer science skills. (http://developers.slashdot.org/article.pl?sid=08/01/08/0348239)

3. The language has a vibrant (and broad) standards community and continues a solid evolution. The C++0X standards effort is creating the next version of the language. The proposed enhancements include modern concepts from Java and elsewhere, but still maintain what makes C++ unique and different. (http://en.wikipedia.org/wiki/C%2B%2B0x)

Although Java and .NET continue to have significant mindshare for mainstream applications, C++ is the language of choice for many architects in new development projects - probably more than most people think.


Patrick Leonard
VP, Engineering & Product Strategy
Rogue Wave Software
Patrick Leonard

1/20/2008 9:13 AM
Gravatar I would have doubted a resurgence in C++ as well, but I think the advent of multicore processors will make a difference. As more homes and offices have powerful multicore computers, it will become possible for individuals to run applications involving complex algorithms and computation functions -- simulations and models -- that previously could only be run on powerful workstations or servers in laboratories or universities.

The most effective languages for computation are C++, C, and Fortran; certainly most of today's computation libraries are written in these languages. If these libraries can be multithreaded, then they become viable for operation on the type of computers that will be everywhere in a few years.

I work on an open source project that has as its goal making it very easy to multithread C++ applications: Threading Building Blocks (its home is at http://ThreadingBuildingBlocks.org). TBB is a C++ template library that abstracts threading details. Developers don't have to know anything about pthreads or windows threads, or managing thread pools, etc., because TBB takes care of all that. The developers do have to know how to develop thread-safe underlying code.

You may ask: who wants to run a bunch of algorithms on a desktop computer? Well, game developers and users are one example. How about doctors who could have access to medical simulations and models that are currently available only in hospital data centers? How about everyday investors, who would be thrilled to be able to run analyses of the markets in order to have the type of capability to spot opportunities that today are available only in Wall Street algorithmic trading boutiques?

One thing that has been proven in the past is that software will quickly advance to take advantage of available computing hardware resources. Once everyone has an 8 or 16 processor core system in their home office, applications that utilize that processing power will emerge, and people will want those applications.

But back to the main point of your post: will 2008 be the year for C++? I think as algorithms and simulations become more mainstream, C++ will indeed see a resurgence. It will be a specialized resurgence, in my view, where C++ is used as the core multithreaded language for these emerging math simulation libraries -- but a resurgence nonetheless.
Kevin Farnham

1/23/2008 3:48 AM
Gravatar I have to agree with Kevin - C++ is more effective for computational problems and applications that require very high performance.

With regard to Kevin's other point about multi-threading due to multi-core and eventually many-core processors - this will certainly change the way developers work. White C++ multi-threading is better than Java, this is just not going to be good enough.

Kevin's Threading Building Blocks project looks interesting. It's worthwhile looking at Software Pipelines (http://www.softwarepipelines.org/) , which is at a higher level of abstraction than writing treading code.



PJ Murray

7/29/2009 8:36 PM
Gravatar In the fact now vb .Net is the favorite programming language, especially for noobs, easy to understand language.
Jennifer
 Leave Feedback
Title  
Name  
Email
Url
Comments   
Please add 2 and 5 and type the answer here: