Wednesday 9 May 2007

Is There a Future in C++ Development?

I've been a developer for some time and I may as well start this blog with something that's been interesting me for the last few weeks. My background is in C and C++ having come through university while it was still very popular and promoting it throughout my career in various positions. I now find myself in a position that is quite heavily involved in using C++ to solve business application problems on multiple platforms. Company direction here in recent years is aiming directly away from C and C++ for future projects, which is not surprising. The industry appears to be moving forwards with .NET and J2EE platforms with far greater intensity than C and C++. However having developed in all of these technologies before I find they all have their own particular advantage. So, does C++ have a role in today's Software Development future? A quick research into the matter finds many articles that point out that C++ is still very valuable and will be around for many years to come. Conversely if you browse developer forums the flame-wars that exist when discussing the future of C++ burn brightly with very few people sitting on the fence and quite a large majority opposing C++ and it's future as a language. Developers, in particular the vocal ones, appear to choose their language and defend it vigilantly in a similar fashion to gamers defending their chosen gaming platform. This of course makes sense, and both instance are for the same reason: Survival. Developers who have spent many years learning a particular language stake their career on the future of the language they follow in a similar fashion to the gamer who spends hundreds of dollars on their chosen gaming console. It is interesting to me that even after years of professional experience and learning that a Software Developer's attitude can be so easily compared to that of a pre-pubescent teenager squabbling over which gaming console is better. C++ maintains many arguable advantages over the other languages included in this article just as both .NET and Java maintain their own arguable advantages over C++ and each other. Once all the flames die down after arguing which one can do what better, what it all boils down to is that there is no task that you cannot do in any of the three environments. Some tasks will take longer in one language than the other, some tasks will run faster and more efficiently in one language over another, however in today's modern environment of computer power is this as important as it once was? So if the differentiation of each language and platform can be reduced to programmer preference and correct language for each implementation, does C++ have a future? Now I will express some more subjective opinion. I believe that it does, and a strong one. The one thing that C++ has going for it over the other languages, aside from the physical differences in syntax. That is that it compiles to native objects allowing you to control any aspect of the operating system that you like. Java and .NET allow you to use anything within their framework, but nothing more. This allows you a greater level of control making C++ far more effective for software that diverges from the operating system standards and requires performance levels far greater than regular business applications. This brings particular attention to games, for which C++ is well renowned already. It also makes C++ and appropriate choice for server applications with high processing volumes and large requirements for efficient processing and manipulation of data. So does C++ have a bright future? Only time will tell. These are just the opinions of a single developer who has grown his career with the language.