C9::GoingNative Live: Kate Gregory and Steve Teixeira - Modern C++, AMP, Casablanca, C++ Renaissance

Play C9::GoingNative Live: Kate Gregory and Steve Teixeira - Modern C++, AMP, Casablanca, C++ Renaissance

The Discussion

  • User profile image
    Lars Kemmann

    From my point of view, there are now two main reasons left that keep me from "going native" with my software (Herb Sutter is right on with this):

    1. Components.  .NET is, as Juval Lowy likes to say, the "component-oriented framework" that superseded COM.  In C++, today, there would be a huge barrier to cross (at least that's the impression I get) if I wanted to support third-party extensions (and I *have* to).

    2. Libraries.  The asynchrony/concurrency work from MS is fantastic, but more often I need to do "basic" - and standardized! - things like XML, JSON, HTTP, TCP/IP, etc.  (Oh, and C++ XAML would be nice to have on Win7 as well. Smiley )

    For those of us who are in a situation like this, what would you recommend?  Keep working in .NET (or Ruby, or whatever) for another year or two and start (re-)learning C++ on the side?  Or try to make the switch now?  If the latter, then could you provide some guidance for how to deal with these issues?  Maybe create a "living" document that provides C++ equivalents/recommendations for each of the classes available in the .NET Framework?  That would be a great MVP-esque contribution Wink

  • User profile image

    Hi Lars,

    On your first question, WinRT will be at least part of the answer for you. You will increasingly see component and library vendors (including us) publish their goods at WinRT components (or, at least, with WinRT wrappers). WinRT is good for these component/library scenarios because it is:

    1. High-performance because it's native (it's basically modern COM).
    2. Equally accessible from C++, .NET, and JavaScript
    3. The ABI is rich enough to represent a modern, well-factored, composable library in all of the above languages (classes, interfaces, generics, exception model, etc.)

    This will result in more components/libraries available in all languages, including C++, because vendors can spend more time writing the code that matters and less time trying to target or tune to a particular programming language audience.

    I said "at least part of the answer" earlier because WinRT handles the case of running on Windows 8 really well, but it doesn't solve the problem more generally down-level or cross-platform for C++. For this, there are some efforts just getting underway to improve the collection of standard (both de jure and de facto) C++ libraries, which Herb originally motivated in his talk at the GoingNative conference and has been leading since then.

    As to your second question, you should check out Casablanca at https://msdn.microsoft.com/en-us/devlabs/casablanca.aspx. I think you'll find it includes much of what you're looking for, and we're taking on this work in a way that we expect to be palatable to both cross-platform implementations as well as eventual standardization of all or parts.

    I hope that helps.


  • User profile image
    Andrew McDonald

    Could you make the mouse cursor disappear in full-screen mode? It's annoying when embedded web videos don't do that.

  • User profile image

    Hi Steve,

    Thank to you and Kate for this great talk!! 

    I understand that we can use either Win32 and WinRT. Has WinRT been developed using Win32?

Add Your 2 Cents