I've mentioned before that Microsoft is working on WinC++, the successor to its Visual C++ tool, and seems to be tweaking its COM engine, as well. The Microsoft “Jupiter” UI library for Windows 8 about which I blogged earlier this year, seems to have something to do with “XAML plus native code.” C++ was one of the languages possibly slated to be supported by Jupiter, last I heard. I'm guessing we'll be hearing more about WinC++ at Microsoft's mid-September Build conference -- the same place where Microsoft is expected to (belatedly) share more about its .Net/Silverlight futures.
It's not all complete radio silence on the Microsoft programming-futures front, however. On June 9, Microsoft posted a new Channel 9 video entitled "Mohsen Agsen - C++ Today and Tomorrow" that includes some tidbits on Microsoft's thinking around next-generation C++.
(Agsen is a Microsoft Technical Fellow working in the Developer Division. He was heavily involved in the creation of COM+ and the related the Common Language Runtime, or CLR. And remember: There may be some new CLR-related goodies coming with Windows 8 if my early information on "RedHawk" -- which has been sighted in Windows 8 leaked builds -- comes to pass.)
As I'm not a programmer -- and don't attempt to play one on the Internet -- I asked Kate Gregory, a partner in Gregory Consulting Limited and C++ Most Valuable Professional (MVP) for some help deciphering the latest Agsen video interview. I asked her a few questions via e-mail and am sharing those answers here.
Gregory: I love that the C++ language is gaining capabilities. I love that the STL (Standard Template Library) is finally becoming mainstream for C++ devs, who historically have been very afraid of it. And I love the support both language changes and STL emphasis are getting not just from the C++ team, but from all of Microsoft.
Speculating about why is irresistible, but there are lots of perfectly good reasons that have been said out loud over and over again and don’t require any guessing. Native C++ gives you great performance, and great control over performance. Native C++ gives you interop to old code, to the operating system, to managed code through COM interop, and so on. Native C++ lets you use new features without waiting for someone to write a wrapper library or update a framework. The Parallel Patterns Library (PPL) for native C++ is AMAZINGLY simple to use, and combined with lambdas is super readable. (There’s a demo of that in my Tech Ed talk on Modern Native C++ development on Channel 9.")
A huge number of developers out there in the world already use C++ as their language of choice. Tony Goodhew gave some numbers in his Channel 9 talk, http://channel9.msdn.com/Blogs/Charles/Tony-Goodhew-VC-Developer-Communication-Questions-and-Answers . The sheer volume of C++ apps and C++ developers (and the youth of those developers) is surprising. We thought it was dwindling – it isn’t. So why shouldn’t Microsoft pay attention? Some people have been telling them to for years.
Update No. 1: The Register has a good interview with Microsoft's chief C++ standards man, Herb Sutter. From that piece:
"One factor that's helped C++ is its performance: as a native language, C++ talks to the CPU without going through an interpreter, unlike Java or even Microsoft's .NET, so it's generally considered fast – and performance is vital on devices such as tablets and smartphones.
"According to Google, C++ is the fastest runtime language when compared to Java, Scala, and Go, although it does require more extensive tuning and more expertise to achieve such results."
Update No. 2: AMD is talking up C++, as well. Check out this C++ mention re: the AMD Fusion conference this week (via reader @tekmaven):
"To get full performance out of mainstream hardware, high-performance code needs to harness, not only multi-core CPUs, but also GPUs (whether discrete cards or integrated in the processor) and other compute accelerators to achieve orders-of-magnitude speed-up for data parallel algorithms. How can you as a C++ developer fully utilize all that heterogeneous hardware from your Visual Studio environment? How can your code benefit from this tremendous performance boost without sacrificing your developer productivity or the portability of your solution? The answers will be presented in this session that introduces a new technology from Microsoft. and more expertise to achieve such results."