Wednesday, October 21, 2009

Visual Studio 2010: Review/First Impressions for C++

I downloaded Visual Studio 2010 Ultimate Beta 2 and installed it on a system with Core 2 Duo 3GHz, Windows 7 RC, and 4GB RAM. Here are my first impressions.

First, the scope of this product is huge. There are so many features, it's like counting the stars in the sky (If you live in the city and can't see any stars, take a look at the Hubble Deep Field to see what I mean.) Once upon a time, you could classify a Visual Studio user as C#/VB/C++, with maybe some database work thrown in. Now we have XAML, Azure, SOAP, SharePoint, IIS, HTML, XML, and much more. The audience that this product caters to is diverse and far-reaching.

I'll limit my discussion to the C++ features, since I primarily do development in C++, MFC and ATL. The "gold standard" for developing in those technologies was Visual C++ 6.0 (VC6), which ran far better on a Pentium II 350 than Visual Studio 2008 ever did on a Core 2 Duo running ten times faster. VC6 was built by and for C++ development, and it was a pleasure to use. I didn't drop VC6 until I was finally forced to use VS2005 to support Vista.

So here are my first impressions:
  • VS2010 is much, much faster than VS2008. Opening the Server pane is now instant, instead of ten seconds or more of thrashing. Everyone was worried about the performance of the UI with the WPF rewrite. Everything I see related to performance is thumbs up.
  • Multiple core parallel compiles are now the default, instead of a hidden teaser like they were in VS2008.
  • The C++ editor is finally able to parse TODO and HACK tags in comments. The C# editor has been able to do this since VS2005.
  • The Help system works. Finally! The Help system last worked properly in VC6. Since VS2003, the help system has been bloated, insanely slow, and almost random in results that it returned. "Help 3.0" in VS2010 returns answers almost instantly. The help system is implemented as an http server running on the local system. When I search on Windows SDK calls, I actually get the result I want instead of useless Sharepoint, .Net and DDK results. This alone makes VS2010 worth the price of admission.
  • Help pages have been reformatted and are far more legible. However, it's not clear what will happen to the Community Content from VS2008.
  • The UI has some cosmetic changes, but the toolbars are basically unchanged. This is a relief after prior releases rearranged everything.
  • Many user interface stupidities have been fixed, like the resource browser closing every time you opened a resource for editing.
  • The resource editor allows you to put in an alpha-blended mockup for reference when editing dialogs. Cool.
  • The resource editor is still lame. Still no in-place editing of text.
  • The dialog editor has problems with locking up for ten seconds at a time. Hopefully this is just a Beta problem. Also, there is no context menu when right-clicking design elements.
  • Trying to search Help for #pragma still doesn't work.
  • New language constructs, like lambda functions and auto declarations, make functional programming much easier.
I haven't been able to test the size of generated code yet. I'm still trying to get my main projects to compile. There are breaking changes in STL, attributed ATL, and the build system that are causing me some rework.

I'm excited to try:

  • The Parallel Patterns Library (PPL). This will be a huge step forward in making use of multiple cores in C++. I've used the .Net Task Parallel Library in C# and was very impressed - it has some fantastic ideas behind its development.
  • The unit testing features, which appear to have been expanded since VS2008.
  • The "Basic" install of Team Foundation Server, which should let mere mortals use TFS without having the overhead of specialized servers.
  • Numerous other goodies that I'm still discovering.
The other piece of good news is the VS2010 Beta 2 is supposed to have a Go Live license, so you can ship code that it produces. Since the final release won't be until at least March, this makes it easier to start using new features.

5 comments:

  1. Thanks for the exciting news! I guess I now have a reason to buy a faster PC. The only key thing you did not mention is C++ intellisense which worked 50% of time in 2005-2008. BTW, forget about MFC and try Qt (new licensing scheme).

    ReplyDelete
  2. I switched to Whole Tomato Visual Assist several years ago, so the Intellisense issues have been a non-issue for me.

    ReplyDelete
  3. I was trying to use Concurrency Runtime in my Printer Driver and getting many compilation errors and linker errors. From My first observation it looks like some conflict with the DDK/WDK. Do you know any such limitations of Concurrency Runtime usage with DDK/WDK?

    ReplyDelete
  4. What do you think about using visual studio for 3d programming ? 3d engine modelling and other game programming ?

    sam

    ReplyDelete
  5. Anonymous,

    Your question is kind of like asking "What do you think of using a wrench to repair a car?" It's not even a question, it's a fundamental assertion. Visual Studio is the premiere development environment for C++/C#/VB.net/etc. for Microsoft Windows. If you are using any of those languages for 3D development, then by all means, use Visual Studio. Unity is a great tool for 3D development, but even that requires C#.

    ReplyDelete