More thoughts on what may be on tap for Microsoft's WinC++

Summary: Fires are continuing to blaze over how to interpret Microsoft's focus on HTML5 and JavaScript (but failure to mention .Net and Silverlight) in the Windows 8 context. Amid all the smoke, Microsoft quietly is setting the stage for one of its coming dev tools that could figure big in the Windows 8 timeframe.

Fires are continuing to blaze over how to interpret Microsoft's focus on HTML5 and JavaScript (but failure to mention .Net and Silverlight) in the Windows 8 context. Amid all the smoke, Microsoft quietly is setting the stage for one of its coming dev tools that could figure big in the Windows 8 timeframe.

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.

Foley: Agsen talked about JavaScript and C++ being similar, even though they are at opposite ends of the spectrum. I wonder if Microsoft is setting the stage to offer Windows 8 developers two paths: The JavaScipt/HTML5 path and the C++ path. Do you think I’m reading too much into this?

Gregory: Mohsen talked about JavaScript and C++ having some of the same goodies for different reasons. I’ve heard that before, and not just for C++. When lambdas were first added to C# that’s how they were explained to me. In say VB3 or C# 1 you write for the button click, here is the name of the function to call when someone clicks the button. And the function itself is somewhere else, maybe even in a different file completely.

In old school C Windows programming, you would write here is the function pointer to the function to call when someone clicks the button. And the actual code that runs on the click is in the function, far away from the definition of the button. But in JavaScript, you can do that, or you can say OnClick=”x=y;alert(“hello!”);” or whatever the code is that you wanted to execute when the button was clicked. And that’s a lambda.

The point in the video was that most things you want to do, if you wait long enough you can do them in any language there is. Because people see things and they like them and they want them in their other languages too. But the way you get them may be very different. C++ didn’t gain dynamic typing and the other underlying features of JavaScript that support the OnClick= thing. It gained a different feature, lambdas, that gave people a capability they want.

Foley: Charles Torres (from Channel 9) asked Agsen about language translation, and I felt Agsen sort of glossed over it. Do you think Microsoft could and should do a Silverlight-to-HTML translator (the way Adobe is doing a conversion tool for Flash to HTML?) Or maybe some other kind of translator? Gregory: Once you have capabilities in mainstream languages that people like from other languages, then you have the possibility to translate between them. But you also have the possibility to suggest to people they switch from one language to another. The two things go together. That doesn’t necessarily mean that the two languages work together. JavaScript and C++ really are incredibly different, in the kind of code you write and in the way they work. They are both mainstream languages. I think Mohsen was saying that some non-mainstream languages may lose their unique selling propositions as mainstream languages add features, and people will move to the mainstream language when they can. Foley: In the futures section of the video, Agsen noted that C++ is taking on more than in the past. He cited data, text processing and web services as examples. Any thoughts as to what this might mean in the Windows 8 timeframe?

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."

Topics: Microsoft, Software Development

About

Mary Jo has covered the tech industry for more than 25 years for a variety of publications and Web sites, and is a frequent guest on radio, TV and podcasts, speaking about all things Microsoft-related. She is the author of Microsoft 2.0: How Microsoft plans to stay relevant in the post-Gates era (John Wiley & Sons, 2008).

Kick off your day with ZDNet's daily email newsletter. It's the freshest tech news and opinion, served hot. Get it.

Talkback

39 comments
Log in or register to join the discussion
  • RE: More thoughts on what may be on tap for Microsoft's WinC

    Regardless of which development technology MS finally anoints as the one true path (at least until they change their mind again), all the FUD they are currently spreading among their most loyal supporters and evangelists (i.e. developers) is going to cost them this time. Probably big. I doubt very many developers are trying to convince their masters at this point to go/stick with MS platforms like they have always done in the past. Too bad. Demand for .NET developers is at an all time high right now, at least in my neck of the woods.
    Sir Name
    • RE: More thoughts on what may be on tap for Microsoft's WinC

      @Sir Name - where is Microsoft spreading FUD? Most of the debate thus far has been on the intertubes with lots of people getting very upset about Sinofsky's comment that tiles in the new (as yet, un-named) Win8 UI can be rendered using Javascript/HTML5. This is all noise from the echo chamber, not FUD that Microsoft is spreading.

      Microsoft is currently hard at work preparing the whole story that they'll be delivering at BUILD. I suggest waiting until then to hear what the <b>real</b> story is around the new Win8 UI, dev platform and which tools/technologies are applicable to which scenarios.
      bitcrazed
      • RE: More thoughts on what may be on tap for Microsoft's WinC

        @bitcrazed If what you say is true, then maybe Microsoft people should have kept their mouths shut until they had something coherent to say. Then they could not have been accused of spreading FUD.

        If you know so much about it, why weren't YOU the subject of the interview?
        sackbut
      • RE: More thoughts on what may be on tap for Microsoft's WinC

        @sackbut - because I no longer work there ;)

        Why should Microsoft not be able to begin preparing customers and partners for future products and yet others be allowed to do so (e.g. Apple's announcements regarding iOS5 & Lion)?

        The world of IT has been bleating for the last 12+ months about not hearing what Microsoft's tablet story is.

        Microsoft has (finally) given an early demo of said tablet story and gave some (very) high-level indicators as to its technical direction. And yet, some are still not happy.

        A little patience goes a long, LONG way.
        bitcrazed
    • RE: More thoughts on what may be on tap for Microsoft's WinC

      @Sir Name The majority of migration <a href="http://www.b-8.net/" title="sahinnparadisegelenekselramazancoskusu">sahinnparadisegelenekselramazancoskusu</a> issues exist because some version of a 3rd party <a href="http://www.yemektarifleriresimli.org/">Yemek Tarifleri Resimli</a> line-of-business application critical to operations is not <a href="http://www.bymadak.com/sahinnparadisegelenekselramazancoskusu.html">sahinnparadisegelenekselramazancoskusu</a> supported on any <a href="http://www.bymadak.com">Guncel Blog</a> other browser. A company can't upgrade off the version <a href="http://www.b-8.net/sahinnparadisegelenekselramazancoskusu.html">sahinnparadisegelenekselramazancoskusu</a> because they've modified it to hell, <a href="http://www.iffetsonbolumizle.in/" title="iffet son bolum izle">iffet son b?l?m izle</a> and the 3rd party that manufactured it has long moved ben 10 past that version.
      Many people don't understand how incredibly <a href="http://www.sahinnparadisegelenekselramazancoskusu.bymadak.com/sahinnparadisegelenekselramazancoskusu.html">sahinnparadisegelenekselramazancoskusu</a> widespread issue #3 is above and how difficult this issue is to resolve when you're talking about an application that is mission critical to a business. <a href="http://www.nod32keyserial.in" title="Nod32 serial">Nod32 serial</a>lar This is the singel greatest reason companies look at the issue and say, "Screw it. We'll live with the risk and run an N-3 version of the browser
      <a href="http://www.nod32keyserial.in" title="Nod32 serial">Nod32 serial</a>
      bymadak
  • RE: More thoughts on what may be on tap for Microsoft's WinC

    This is all non sense.
    The upcoming platform shift (ARM, x86, x64) has never been so good for managed code and the massive investments made by Microsoft in the last years is about to finally payback.
    It would be totally insane to turn away from managed code at this time considering they could finally offer a mature technology that would easily work (the same binary) on all the supported platforms.
    Will Microsoft offer an HTML5/script development solution for Windows 8? Yes, it is likely.
    Will Microsoft offer a managed development solution for Windows 8? Yes, most certainly. And it will probably be a new application model that will work on all form factors (phone included).
    This is the most competition damaging move to do, the most cost efficient one and also the more architecturally solid one.
    TheCyberKnight
    • RE: More thoughts on what may be on tap for Microsoft's WinC

      @TheCyberKnight All very good points and I think it boils down to this:
      1) If MS are going to say, well we tried a .NET runtime on small devices and you know what, we brick walled and the perf sucked, we HAVE to go back to C++ routes. That would be fine with me. I could understand that, re-train for that.
      2) if MS said, well some new flavour of C++ and it has some hitherto unknown virtue e.g. can run as uncompiled JQuery in the browser or compiled C++ on the platform, that might be fine with me too.
      3) but if neither were the case, it would simply be MS taking a spin on Apple's objective C for the sake of.
      But whatever the real reason(s), surely there needs to be communication and I need to be told now if I need to start learning another language or variant? Surely I need to make sure going forward that my dev time now truly is focused on making the best of the VS tools as they stand today?
      I find it quite extraordinary that MS should think it can afford to wait until BUILD to divulge this incredible step forward in coding for Windows.
      rmac_z
      • RE: More thoughts on what may be on tap for Microsoft's WinC

        Other reasons might be MS want to kill off 'native' Windows development and are only interested in folks connecting to Azure via HTML5 and JQuery. Or perhaps MS doesn't really know what it must provide in the tool space for new emerging devices.
        rmac_z
      • RE: More thoughts on what may be on tap for Microsoft's WinC

        @rmac_z - all fair points except ...

        1) WinPhone7's app platform is entirely built upon .NET "managed" code. Every WinPhon7 app, game and experience are entirely 100% managed code. C++ is certainly faster in some scenarios, but C# can be very, VERY quick too if one knows what one is doing.

        2) IE9 can compile and execute Javascript. Expect this capability to get significantly enhanced in IE10. The chances are good that compiled Javascript can perform at 75% or more of the perf of native C++ for 80% of cases.

        3) You clearly know nothing about Objective-C which was a (poorly received) attempt at meshing C with mid-80's concepts of software modules communication via message passing rather than method/function calls.

        Before you go too much further. Calm down. Your existing investment in Microsoft's platforms and technologies will not go to waste. Microsoft rarely abandons app platforms (heck, they STILL support VB6!) - all they're doing is adding Javascript & HTML5 to the story as a lightweight way to render dynamic content in tiles in the NewUI.
        bitcrazed
  • RE: More thoughts on what may be on tap for Microsoft's WinC

    C++ is fortran of 21st century. Template syntax is horrible. Standard libraries are a bunch of inconsistent crap collected over 40 years. UI libraries generally suck. COM and .NET interoperability is PITA plus in every VC++ version there is something new MS-specific that changes or disappears in the next version.
    VC++ should be used for things that it does best - code that needs performance. For everything else there are better tools.
    paul2011
  • RE: More thoughts on what may be on tap for Microsoft's WinC

    C++ is great...when you don't care about productivity. The cost of C++ development is far too much for these days, unless you're a massive money making machine like MSFT, or a developer that cannot afford not to use it due to performance considerations (games).

    no offense do c++ devs but you guys are the assembly coders of the 21st century. certainly needed but far too expensive to make economical sense.
    neonspark
  • Message has been deleted.

    Linux Geek
    • Fail troll

      @Linux Geek - you are just jealous you can't code in C# all day. It's a breeze.
      MSFTWorshipper
    • RE: More thoughts on what may be on tap for Microsoft's WinC

      @Linux Geek
      Proprietary C++ extensions suck and it really looks like a step-child with some weird features in visual studio.
      However I violently disagree with your thoughts on C#. Language, libraries and tools are awesome. Easy to use and pretty consistent.
      paul2011
      • Message has been deleted.

        Linux Geek
      • RE: More thoughts on what may be on tap for Microsoft's WinC

        @paul2011
        And you consider the GCC extensions to be any better?
        oldsysprog
      • RE: More thoughts on what may be on tap for Microsoft's WinC

        @paul2011
        Look at javalobby.com to see how much C# and .net sucks when compared to java? Looks like a joke to me. What other kind of opinion would you expect from site that is called "java lobby"? :)

        @oldsysprog
        I do not use GCC so I do not know about GCC extensions and do not care about them.
        paul2011
    • You're really not a programmer, are you?

      @Linux Geek C++ is a superset of C; there are a few keywords, some ways of structuring headers and interfaces, and then its all extensions. Managed code is no different in that respect, really - no different than working on top of MFC or any other development framework.<br><br>And anyone who compares Java unfavourably C#, with its LINQ and WCF capabilities, DEFINITELY isn't a programmer. Even hardcore Java folks are periodically envious of LINQ.
      Mac_PC_FenceSitter
  • Microsoft is drifting aimlessly

    I never understood their need to destroy existing infrastructure just to simply jump on the "next big thing".

    I'm a programmer by training (C), but fortunately I have not ever worked as a programmer for the past decade. This was a purposeful choice, and I'll offer this insight:

    The reason different languages exist (and existed historically) was because different programs require a different syntax and capability to attack a problem efficiently. Most people forget the converse is true as well: people think in different ways, and different languages suit different thinking styles.

    Microsoft is painting themselves into a corner. If the wide array of opportunity on Windows is removed, why would any young programmers even want to learn about the platform? For the first time since Win 95, Microsoft is starting to feel stale.
    croberts
  • Final Take

    I wonder what the odds are that: Jupiter will be a tool for OEMs; Azure, HTML5 and JQuery will be for devs; whatever else you like will be for 'legacy devices' e.g. .NET for PCs, but hey, mind how you go.
    rmac_z