Jump to content

C++ in 2008?

Joe Pruit posted a blog responding to some thoughts from Rogue Wave on C++ in 2008. We know that not everybody sees C++ in the same way we do, but we issued the press release was to challenge some of the conventions of how developers and architects perceive C++. Joe’s comments are worth reading, and are also worth responding to.

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++.”
    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.
    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.

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.

Del.icio.us   |   Technorati   |   Digg   |   Slashdot

One Response to “C++ in 2008?”

  1. Nathaniel Christen Says:

    One underappreciated C++ strength is the detail and flexibility of its type system. Even with the new generics in Java and C#, C++ templates are more powerful. With or without templates, C++ forces you to think about the structure and semantics of types, which is I think a healthy discipline in an era when data originating from applications written in many different programming languages and environments must interoperate. While XML, SQL, JSON, etc., have their uses, the mere existence of standardized structures for transmitting data is not akin to true data transparency, since algorithms need to be rolled out to to encode and decode data into and out of XML et. al. (and LINQ or any platform-specific object-transfer system are not really “transparent” for obvious reasons). The fact that fully automatic algorithms for translating C++ objects to or from an XML stream — and reconstituting them in another language, say — do not exist, demonstrates that XML is not a “real” data transmission language. As far as I can tell, interesting theoretical work on generic programming, “type theory”, etc., is almost exclusively done in or about C++ relative to other mainstream languages. Good research is done in or about Haskell, Lisp (specifically Common Lisp Object System), etc., but C++ is really the only place where sophisticated generic programming research meets real-world, robust applications, IMO.

Leave a Reply