Entries:
Comments:
Posts:

Loading User Information from Channel 9

Something went wrong getting user information from Channel 9

Latest Achievement:

Loading User Information from MSDN

Something went wrong getting user information from MSDN

Visual Studio Achievements

Latest Achievement:

Loading Visual Studio Achievements

Something went wrong getting the Visual Studio Achievements

Craig Symonds and Mohsen Agsen: C++ Renaissance

Download

Right click “Save as…”

When you think about all the code executing in the world at any given time, there's a good chance you're thinking about a lot of code written in C/C++ (aka native code). As Mohsen Agsen mentions so astutely in this impromptu and candid conversation, C++ can be thought of as the dark matter of the developer universe: there is so much of it all around us, hiding in the computational shadows, powering so much of what we take for granted, technologically.

C++ is currently undergoing a renaissance. This means that, by definition, the language, compilers and compositional tooling are evolving and coalescing into a state that maximizes native developer efficiency, productivity, and creativity across hardware and software domains (PCs, mobile devices, embedded systems, operating systems, user applications, services, etc). C++ is a powerful "systems" programming language, but it's more than that. It's object oriented, but it's more than that. At Microsoft, most of our flagship products are written in C++ (and C, like the Windows kernel...). As somebody with a keen interest in programming languages and software engineering, generally, I wanted to get some answers to broad questions concerning the language that consistently ranks near the top of the most widely used general purpose programming languages in the world. Who better to talk to than some key technical leaders driving Microsoft's Visual C++ business?

Mohsen Agsen is a Microsoft Technical Fellow and veteran C++ developer who runs the VC++ engineering team. Craig Symonds is the Director of Program Management for VC++ and a long time Microsoft dev tools veteran. Both Mohsen and Craig have been at the company for many years and have a ton of industry experience. I paid them a visit to see what’s on their minds these days regarding the native developer community, C++, Visual Studio, and more. As you will learn, Microsoft and Visual Studio, specifically, are re-doubling efforts to take part in the native code renaissance. Accordingly, you may see advances in our native tooling that the team thinks of as “C++ first” -> VC++ will extend its capabilities on a faster pace than it has ever done so in the past, at times surpassing the other VS languages/runtimes, in specific scenarios. This is exciting and a long time coming, but of course it's more passion than promise at this point. There is no specific news here, just perspectives and insights among some very bright people driving Microsoft's C++ efforts. I really enjoyed the conversation with Craig and Mohsen and hope to chat with them again in the near future.

Links into specific conversation points (video skimming):

Introductions
State of the union for C++ from Microsoft's perspective
C++ as both a low level and high level programming language
C++ as object oriented, but OO is a capability, not a requirement
Garbage collection in C++. Why not?
C++ portability
Visual Studio C++ integration and parity with the other languages/runtimes in VS and C++ first


Here’s to the C++ Renaissance.

Tune in. Enjoy.

Tags:

Follow the Discussion

  • YannickYannick

    Awesome video, I think the C++ community is gonna love it!
    Thank you Charles!

  • Great Video,

    Thank you so much Charles for moving the spot light onto C++

    As a C++ developer my favorate secret feature is having portable code! Currently I have code that binds to OS specific UI platforms:
    1.Windows with WPF and PInvoke
    2.Mac and IPhone with Cocoa and Objective C++
    3.Linux with Java and JNI C++

    The purist in me would love to see a solution for WP7 and Silverlight? What are the chances? Currently this is only avaliable using webservices...

     

  • Good stuff!  As part of the "dark matter", we have definitely been feeling neglected in recent years, so I am very glad to see the recent trend of turning more focus back on C++.  VS2010 is a memory pig, but it is a huge improvement for C++ dev.  Sounds like there will be a lot to look forward to in the next year.

  • felix9felix9 the cat that walked by itself

    Mmmm... Mary Jo once said that the 'Jupiter' thing is related to native code and C++, and the Windows Ribbon Framework already uses Xaml in native development, maybe we'll see a new WPF-like framework for C++ developers, finally replacing MFC, heheh. Hopefully we can find some good stuff in the Silverlight for Windows Embedded in WinEC7 maybe ?

    but the first thing I want is Intellisense for C++/CLI which I am using in a daily basis. and except that, VS2010 is very lovely for C++ native coding now. Smiley

  • Ben HansonBen Hanson

    As I understand it, you can get around the circular reference problem with reference counting pointers by the use of weak_ptr. I hope Modern C++ starts to appear in Microsoft libraries. There is a yawning gap between C++98/C with classes and Modern C++.

  • freeflyfreefly

    I am just waiting for the things to come...

  • I can't wait to see some of the great things to come in C++! (The c++0x standard would really be nice... come on c++ committee.. hurry up Smiley )

  • Fantastic video! Thanks guys, keep it coming!

    The Natives are pleased Wink

  • fefefefe

    all that C-hate was really unnecessary ...

  • CharlesCharles Welcome Change

    @fefe: C-hate? What do you mean? We love C Smiley In fact, C is everywhere inside our products, especially in Windows...

    Bjarne Stroustrup invented C++ to extend C's formidable capabilities with modern abstractions (classes, strong static types, generics, etc). As Mohsen mentioned, it's amazing how C++ has added language abstractions, yet not at any perceivable cost to performance. Truly exceptional!

    As Bjarne states: "C++ is a direct descendant of C that retains almost all of C as a subset. C++ provides stronger type checking than C and directly supports a wider range of programming styles than C. C++ is "a better C" in the sense that it supports the styles of programming done using C with better type checking and more notational support (without loss of efficiency). In the same sense, ANSI C is a better C  than K&R C. In addition, C++ supports data abstraction, object-oriented  programming, and generic programming"

    There is no hate for C here. Only love!
    C

  • fefefefe

    @Charles: so where is the C99 support in the MS compiler? :P

  • NevadaDaveNevadaDave

    I can only encurage MS to keep up the support for native code.
    In my industry (Casino Gaming) .NET is not approved.
    We see all sort of wonderfull technology released in .Net but are unable to use any of it.
    We would really like the type of technology for cloud connectivity in WCF for native code & indenity support.

  • sivasiva

    Great video, keep it comming. Excited to hear about MS future plans for c++  

  • @felix9: "WPF-like framework for C++ developers" eww!
  • Alejandro SegoviaAlejandro Segovia

    Excellent video! It's great to see the spotlight moving back to C++ a little.
    Like it was stated in the video, managed and native tools are complementary to one another and C++ is a very important language that can be found on lots of products and tools and it's great to learn about Microsoft's views on the language and future plans.
    Will be looking forward to the next video!

  • I have used MFC/ATL to some extent in the past. Granted it is not the easiest of the technologies, it was challenging to develop in these frameworks. VC++ 6 was a great IDE for the times. Thereafter VC++ seems to have taken a back seat. MFC is showing its age and ATL is too complicated for a lot of new people coming on board. But there was no investments in these fields from MS and so I had to embrace .NET What amazes me is that Apple has successfully created an awesome platform using Objective C (ugly language) and has made some Java programmers to grudgingly switch to Objective C to hop onto the Apps bandwagon. How come MS has not been able to do this? Granted Objective-C and C++ is not apples to apples comparison. But my take is that if platform & tools (also some form of a channel to monetize your IP) were compelling enough, Developers would build rich apps irrespective of the language. Everything supported in .NET does not have to be supported in C++ (Managed C++ was an effort that did not create anything significant). I hope to see some revival of VC++ in its own right - not as another language for the .NET platform.

  • James GregurichJames Gregurich

    IMO, MS needs to get rid of the virtual machine. I see no point to the extra complication of dealing with that virtual machine rather than just compiling the language to the native hardware. Apple has shown that you don't need a VM to offer a rich development environment with RAD capability. ObjC even has garbage collection if that floats ones boat. You can integrate mac/iOS specific objc code with cross-platform C++ very easily and without much of a performance penalty since there no VM/native barrier to cross.

  • petkepetke

    Dont worry, its okay to hate C. We know better today.
    Also I wonder what that last quote was about. (from memory) "hope im not giving anything away.. but dont be surprised if C plus plus gets designer tools first". I wonder if that has anything to do with Nokia going all in with mobile windows7. I cant imagine nokia using any other language than c plus plus. So maybe new tools are expected there. Please correct me if anyone knows better.

  • tretre

    @Charles:C++ was invented because multi-threading was 'too hard'.

  • CharlesCharles Welcome Change

    @tre: And to add more generally useful higher level modern abstractions to C...

    C

  • just-aa-coderjust-aa-​coder

    Even though all money maker MS software is made in C++ (OS, Office, server stuff, accounting stuff, games, etc) MS is not innovating in C++ tools area since VC++ 6 (more then 10 years). Remember Borland C++ ? If not, go find old book and wonder. What libs MS offers in C++ area? MFC, ATL, COM -technologies 15 years old! Why? Cose C++ is cross platform and it's not suited monopolistic vision of their MBA overlords.Their strategy is to enslave their customers and partners.
    They are Rockefellers of information era!

  • Diego DagumDiegum Diegum

    Thank you all guys for these constructive comments!! We are not commenting yet about several of your questions but there are evidently lots of things happening around C++. As Mohsen and Craig said, we'll start telling you what to expect in the months to come. In the meantime, keep watching these videos as we are making more, subscribe our weekly newsletter: The Visual C++ Weekly (http://paper.li/visualc/news), read our blog (http://blogs.msdn.com/visualc) and keep in touch!

  • Craig LongmanCraig Longman

    If you're truly serious about it, then you need to bring things like ATL Server and WTL back into the "fold" so-to-speak.  Having left Win32 C++ circa VS v6 and only coming back to v9, I totally missed the ATL Server part.  But I happened across it recently and was amazed at what it provided. I couldn't believe it was simply left to languish, presumably because C# was a better "corporate direction" for web services, et al.
    MFC has it's place, but the ATL/ATLS/WTL really should be brought back in a given their rightful status.  As you were saying about layers, MFC is the way to start, but when you want something closer to the iron, you move to ATL.
     
        CraigL

  • Dinesh SharmaDinesh Sharma

    This is cool. We are Dark matter. This makes us feel proud. Thanks Microsoft for this Renaissance

  • TwainTwain

    First of all, thanks for the awesome video and the glimpse at Microsoft’s thinking on C++.  Two suggestions from this developer are (1) please consider modernizing the OLE DB Consumer Templates API for C++ based database applications and (2) let’s get some of this “C++ renaissance” injected into the Windows Phone 7 team – I have many vertical engineering applications written for the Windows Mobile platform that I cannot afford to rewrite in C# but would like to move to WP7 as C++ apps.
     
    I resonated with @Craig Longman who recommended a re-emphasis on ATL and WTL -- I’ve used both technologies for years, even when they appeared to be abandoned by Microsoft.  I wonder if looking at the source for the Hilo project offers a glimpse into a modified GUI framework that’s not quite WTL but maybe more.
     
    Finally, I know this isn’t a Visual Studio focused video, but if you’re looking for inputs, the C++ approach to GUIs with Resource IDs, Resource View, etc. is archaic and almost collapses under its weight for large projects.  I strongly urge Microsoft to overhaul this part of Visual Studio. 

  • Mahfuzur RahmanMahfuzur Rahman

    Why all developer can't follow only C++.
    Or,
    I think there should be only one language that will support everything.

  • @Andrew Webber FX: Hi Andrew,

     

    I have a question regarding your post - you mention: 

     

       1.Windows with WPF and PInvoke

     

    Do you do your WPF work with C#/.NET and make PInvoke calls with C++ to the OS ?  If not, I'd love to hear about how I can leverage WPF from C++.  I was under the impression that this was possible, but not supported and that the WPF designer was not available to C++ via VS 2010.

     

    Thanks,

     

    Scott

  • ArnelArnel

    Since C++ is currently undergoing renaissance, this is a good news for C++ programmers because the power and flexibility of this language would be extended as expected and as mentioned, Visual C++ will be expanding its capabilities. Well, I hope that Microsoft would produce versions of Visual C++ that would on all versions of Windows starting Windows 95. Other compiler vendors still support older Windows version and one example is the Open Watcom C/C++.
    If C++ would evolve, one of the nice features that I wish to be added is the ability to do smart linking similar to Delphi and most Pascal compilers. Because smart linking would generate much smaller statically linked executables which of course require less memory space. Dynamic linking your application would require dependencies to be included every time you need to deploy it.
    Dynamically linked executables seem to be small but the bloat is actually hidden in the required DLLs needed by the application to be deployed. Statically linked executables doesn't require any runtime libraries and this avoids DLL hell.
    If smart linking feature would be added to linkers shipped with C++ compilers, then most developers won't be forced to do dynamic linking in order to create smaller applications which would actually require huge runtime libraries.
    Also, there is performance penalty in calling routines from DLLs compared to those already embedded in the application.
    For these reasons, I prefer static linking instead of dynamic and adding smart linking feature is a must aside from new optimizing capabilities.

  • J. C.J. C.

    If you look at the entire sequence of events for Microsoft, from, say, late 1980's until now, it sorta-kinda makes sense that we are where we are today. The beginning of all the C++ vs COM vs .NET vs C#, vs yada was initially driven Microsoft's desire to solve the x-N SDK problem, where they would be forced to provide SDK bindings to the developer community for every single language they supported. Imagine that someone at Microsoft develops ultra-cool application that can creating 3D ray-tracing objects on the screen. In the 1980's, the C programmers would want it. The Pascal programmers would want it. The Visual Basic programmers would want it. And the FORTRAN programmers would want it. So microsoft would have to provide .LIB files for all these languages. It was a nightmare. Don Box, etc..comes up with the IDE of COM, where the 3D ray-tracing thingie from Microsoft would exist not for N languages, but for just 1: COM. Then, if a language wanted to use it, they'd have do a COM-like operation to get to it. [For C programmers, it's a call to CoCreateInstance().]. Ok, fine, now Microsoft can save huge amounts of money, but the code is a bit of a mess, and seemly unending as it spreads out like an oozing goo that has no bounds, forcing the programmers to do a kind of run-time evaluation of what COM features the 3D thingy provides and which it does not. It was a mess. After trying various things to make it less messy (ATL, for example), Microsoft says: screw it. Let's just make a new language that binds well with this messy way of coding. Heck, let's make several. Furthermore, let's make the new languages very similar to those that already exist. We'll add garbage collection so that programmers can abuse polymorphism like crack. This was great for Microsoft. Code bloated. Dell & HP sold more and more power to reduce effects of bloat. Programming piglets reveled in the idea of sloppy engineering, where foresight (required if you are a C++ programmer) was cast to the wind. After all, in an interpreted environment, you can always ask, "Intepreter, tell me if my code is crappy. If yes, stop. If not continue." Then, when answer is "yes", customer calls, programmer fixes, push out new code over net, continue. Revenue at Microsoft skyrocketed. But something weird started happening around 2008-2009. Companies wised up. They notice their programmers spending days over memory management issues in interpreted languages like C#. So they said, "Wait a minute...I thought the whole point of .NET was that it would eliminate the problems encountered in C++!" Now, not only do I have memory management problems, but I also have a bunch of engineers who are predisposed to thinking that lack of foresight in engineering is OK. This has to stop. Today, Microsoft is (very smartly IMO) recognizing that tech managers everywhere are wising up, and saying, "Hmm...we'd better retract some of the fiction, at least a bit of it, before some other company comes up behind us and retracts it for us." That's why C++ will see a rebirth - because Fred Brooks is right. There is no silver bullet, and as far as bullets go, C++ is, and will be for a long time, the best bullet around, all things considered.

  • JackJack

    Wow listening to the ramblings of 65 year old C++ programmers is depressing.

    Do you have any clue about the "big picture" in software dev?

    I can tell you that C++ would provide absolutely zero benefit for 95% of the code that I write (same for most .NET devs - millions of them). In fact quite the opposite. C++ is just object-oriented assembly language. Yes you can build wonderful abstractions but at the end of the day its OO-ASM.

    The thought of going back to messing around with header files, includes, the crude tools, pointers, libs, bad errors... ewww. Makes me shudder.

    I spent 5 years doing C++ and I dont miss it one bit. It crude and appeals to minds that are more interested in bit twiddling than solving business problems. You either have to be autistic or ignorant to choose C++ as your "hammer".

    Please explain how C++ will be a more suitable language for projects that currently use .NET?

    Is it because Apple has managed to build great things using their crude idiosyncratic Objective-C "look how smooth the iOS apps run and how sexy Apple are" we must imitate them??

    Guess what? Its not the failure of the CLR that has meant that .NET apps run craply. Its because of the crap GUI frameworks we have been given to work with that are convoluted, poorly implemented, and just plain suck at performance.

    How about solving that problem - fix the .NET UI frameworks, instead of "doing a HTML5" and encouraging us all to run back to a crude OO-ASM (just because we might make apps as cool as Apple).

    /rant

  • George BirbilisGeorge Birbilis

    no wonder the software world is full of bugs - lots of it is due to C++ baggage from C

Remove this comment

Remove this thread

close

Comments Closed

Comments have been closed since this content was published more than 30 days ago, but if you'd like to continue the conversation, please create a new thread in our Forums,
or Contact Us and let us know.