Lately, Microsoft (via Channel 9) has been talking about a “C++ Renaissance” within Microsoft, and in the industry as a whole. I’ve been listening to a bunch of the native code podcasts that C9 has been publishing that discuss native development, C++ 0X (recently ratified to be C++ 11), etc.
Today, I listened to a really good talk by Herb Sutter about “Why?”. Why is native development getting more focus. He presents a really good summary and overview of the past 30-40 years. His end conclusion is that we are exiting a decade where programmer productivity was king. We are now entering a time where performance per watt, performance per transistor, performance per dollar are king.
Herb says performance is king is the case at both ends of the spectrum and starting to become important in the middle too. At one end, there is the datacenter, where ~88% of the cost can be tied back to power / performance. At the other end is mobile devices where battery and CPU are both limited.
Coincidentally, the new C++ standard has been ratified, bringing with it a number of productivity enhancements that make native development feel much fresher and more productive. In the new standard are things like lambdas, the auto keyword, etc.
Also notable is the fact that of the 3 major mobile platforms (iOS, Android, and WP7), two of them have released native development toolkits (C / C++). iOS started as web only for apps, and introduced objective-C, which (from my limited understanding) is native already, but can interop with C libraries. Android also has a native SDK for developing with C / C+. We’ll see what WP7 offers, but I wouldn’t be surprised to see a native development kit coming soon. They have to do this if they want to stay competitive.
Managed languages aren’t going away, but… Native development seems poised to make a comeback, at least in terms of mind-share, if not in terms of true demand. It never went away, but kind of went “dark” for a decade.
What does this mean for us managed devs? I don’t know, but I feel a need / desire to get up to speed on native development. I won’t be good at it for a while, but recent advances in technology, standards, tooling, and an increase in the amount of information and focus are making it attractive again.
To stay on the forefront, I feel a need to understand how Native fits in the bigger picture. I plan to watch this trend and make sure that I’m ready for it!