In our company (an IT services company), we have noticed that C++ is popular only in cases of legacy maintenance projects.
Most new development projects (non-embedded ofcourse) are moving in the direction of embracing either J2EE or .NET . .NET seems to be quite popular.
Not many customers seem to be interested in the new Windows MFC libraries which provide features similar to the .NET classes.
In such a context, how will I be able to convince my bosses to take notice of C++ 0x. I as an individual am interested and want to propogate C++ 0x among other people in this company - but if I cannot profess a business value - not many people will be interested and nor will I be encouraged.
Can you please comment on what you see as advantages of C++ 0x and how important its features will be (I suppose with the concept of lambdas, it would help develop libraries for supporting parallel programming - this could be 1 case right ?)
Thanks for the post. I can give you a few advantages/disadvantages of using C/C++, but as they say in the classics “your mileage may vary”, “free advice is worth exactly what you pay for it” and “one man’s meat is another man’s poison” (apologies to any vegetarians reading this).
Firstly, let me start by saying that a major reason given to me by many of our customers for using C/C++ is portability (which is to some degree is a function of its standardization.) Hard to imagine any other language you find in as many places as C/C++ and many of our customers target multiple platforms. Other customers often talk about performance and memory footprint requirements too, you have fine grained control over both of these with C++ (sometimes too fine grained for sure) but when you really need every bit of memory or every CPU cycle, C/C++ is an often selected choice.
Of course, like any programming language it has downsides too, many customers say for productivity and safety a managed language, such as C#, is superior. Managed languages can also provide a better basis for some programming techniques, for example I would imagine implementing a “transactional memory model” in a managed language/environment would be simpler.
Then there are other issues less language specific but that play a part. For example, some APIs may come only native or managed. Often you can get to them from either platform but may loss advantages, such as productivity, safety, performance in the process.
I have always like to say that I have never meet a programming language that I have not learned from, some show me what to do, other may show me what not to do for sure – but I firmly believe that the more programming languages you know the better you write code.
I am not sure I have provided a business justification in any sense here. I would imagine any good boss will want to know about language advances (as these are part of their “tools of the trade”) but this may still not mean that a particular language is correct for their circumstances.