...
C++ Renaissance
AB: One of the terms frequently heard at the Build conference was "C++ Renaissance." I'd like to know what it means to you. And what is Microsoft doing differently in how it values C++?
HS: The C++ renaissance has two aspects. One is commenting on C++ resurgence across the industry. And, second, particularly at Microsoft, if you look at the short history of C++, it was really only in the decade that started in the mid-90s that people started getting interested in managed languages. Java came along. Then C# came along. And it was completely appropriate. Those languages are good and useful. They optimize for programmer productivity. And that's exactly the right thing to optimize for, if that's your primary cost. And during that decade we didn't do all that much exciting stuff, especially with user interfaces. We deployed across the industry a bunch of computers with nice windows that had WIMP windows, icons, menus, and pointers. And we called it good for a decade. And it was only in the last few years that we're starting to see with the iPhone, the touch interface, and augmented reality Kinect, especially that we're seeing a whole new kind of user interface. And, of course, all those features now require processing power. We're demanding that the computer do more for us. At the same time, because of the increasing issue of power consumption in mobile devices and in data centers, we're being asked to do more work with less hardware. That's where efficient languages get to be important again, just like they always have been in the history of our industry except for those 10 years.
AB: Managed languages still have their place, no?
HS: Managed languages are perfectly appropriate where your goal is to optimize programmer productivity above all else, even at the cost of performance
by having always available garbage collection that you can't turn off, always available metadata, always available JIT execution, and a virtual machine
whether you're actually using it or not, you bear the cost. But, you make the programmer so much more productive. Great. That's what you should optimize for if your biggest cost and constraint is programmer productivity. But more and more, at least part or all of your of your application needs to optimize for performance per dollar, or performance per watt, performance per transistor because you can only put so many of them in a device. And that's why C++ is the preeminent language, because it's the king of performance per dollar. That's why it's making a comeback.
AB: And what does that translate to at Microsoft?
HS: At Microsoft, the same kinds of forces have been at work. As you've seen with Windows 8, it's been public knowledge for the last few weeks, that Windows 8 is built around this nice, OO, class, and exception, interface-based API-based system in WinRT and it's all native code. And the reason for that is performance and efficiency. So we've really seen a resurgence of in C++ at Microsoft. And I think in this particular release I haven't counted, but I'll bet we shipped twice as many features in this release for native C++ developers, most of whose code can and should be written in standard C++, than in any two previous releases that I can think of. And that's reflective of the investment in C++-based technology.
...