As part of my series of blog posts talking about VS 2010 and .NET FX 4, I want to focus on the work we are doing for the native developer as part of Visual C++.
In an earlier post, I mentioned how the Visual C++ team is investing heavily in enabling developers with large native applications to be successful on the Windows platform. As a part of that, we released the Visual C++ 2008 Feature Pack earlier this year. Visual Studio 2010 continues down this path by focusing on making native C++ developers more productive with significant enhancements to the overall IDE experience as well as improvements in the language and library space that further extend the power available to C++ developers.
Native C++ applications have been growing larger and more complex over the years. VS2010 makes C++ developers more productive by scaling better when working with larger codebases. One of the key areas where we are making significant improvements is IntelliSense. The IntelliSense engine, which powers the majority of the IDE features, received a major architectural overhaul with a sharp focus on eliminating inefficiencies that surface when dealing with large codebases. A prime example of this is that the IDE remains responsive even while editing source files in very large codebases. Source edits no longer trigger massive updates of the symbol database even with the most complex source dependencies. Visual C++ developers who often edit header files deep down in the include hierarchy or switch project configurations will notice the huge improvement in IDE responsiveness.
Another area where Visual C++ is scaling up is the build system. In VS2010, MSBuild will be the build system powering Visual C++ compilations. MSBuild provides significant customizability, extensibility and logging which are essential elements for large-scale and complex build environments. MSBuild’s logging features will make the expensive chore of tracking a project that keeps rebuilding a much simpler task. Also, the extensibility features will allow you to target different versions of the compiler from the VS2010 IDE as you can see in the images below.
The increased complexity of C++ applications place higher demand for tools and productivity. VS2010 comes with a new set of IDE productivity tools that make it easier to gain insight about complex codebases. IntelliSense and browsing functions have been overhauled not only to scale up but also to provide more accuracy and resilience. The new header dependency tool allows you to find out more details about your complex include hierarchy. The new Quick Search feature will make it a breeze to go to a specific symbol or file by simply typing a part of its name and pressing enter.
On the library and language front, one of the key focus areas for VS2010 is concurrency. VS2010 makes C++ developers more productive writing parallel code by introducing a new set of libraries and supporting new C++ language features. VS2010 introduces the Parallel Patterns Library (PPL) which provides a new abstraction for building responsive C++ applications that take full advantage of multi-core hardware. PPL enables an effective way of expressing parallelism and provides new asynchronous messaging APIs that allow you to increase application resilience and robustness. VS2010 comes with support for new language features from the upcoming C++0x standard, such as lambdas and the repurposed ‘auto’ keyword, which make writing code that uses the PPL cleaner and more maintainable. Finally, VS2010 delivers more support for developing great Windows applications using MFC by adding yet another set of great features to MFC that make it easier than ever to leverage the features in Windows Vista and in the upcoming Windows 7 release. With built-in support for restart manager, MFC applications can trivially add the ability to recover unsaved applications through unexpected application failures. Task dialog support allows MFC applications to develop richer user interfaces to replace wordy message boxes.
Over the years, we have heard a lot of C++ developers refer to the old days of Visual C++ 6.0 as the glory days of Visual C++ tools. Many of the comments reminisce about the snappy and productive IDE. With Visual C++ 2010, we strive to create a new benchmark for Visual C++ IDE productivity. We will couple this IDE with our superior support for the C++ language and significant improvements to the libraries.
You can always find more information about Visual C++ and interact directly with the team through their blog.
Namaste!
PingBack from http://blog.a-foton.ru/index.php/2008/11/21/c-enhancements-in-vs-2010/
Recently, Soma, Vice President for the Microsoft Developer Division, blogged about the enhancements of
Somasegar's WebLog : C++ enhancements in...
Will the /MP option be working? I don't have as much experience with it in VS 2008, but I do know that in VS 2005 it often results in corrupt PDB files. Too bad--everyone has multi-core machines now, and it speeds up builds a lot when it works.
We write cross-platform C++. So we want to have C++Ox concurrency, not a parallel library tied to Microsoft.
@JSM: Will the /MP option be working?
In VC2005, /MP was undocumented for the precise reason you mentioned. In VC2008, the compiler team did additional work on it, added it to the list of documented switches for CL and encouraged developers to use it. In VC2010, we are exposing this switch in the Property Pages as well and also allow you to control the number of cores you want /MP to use centrally from Tools/Options.
The same applies to MSBuild.. You guys should really work with the community as you do not even have the resources to compete with rather small Boost community, all of it is invested in .NET which has been obvious since 1997.
MFC, why is that hack still being developed.. Why wasn't WTL given a better chance? No scrap that even that is useless.. Heck, why not get MILCore to all OS-es and be done with it.
But, first of all, why not fix GDI+ page faults?
This all needs work and serious dedication guys, moving into parallel space is also way behind others and it again will be proprietary and comete against your major hardware provider.
That's all.. If you want to speed apps, fix GDI+ to be fully accelerated and without page faults. It will help that other thing called .NET too..
Majka
great news .... but way way way late.
al
"Over the years, we have heard a lot of C++ developers refer to the old days of Visual C++ 6.0 as the glory days of Visual C++ tools. Many of the comments reminisce about the snappy and productive IDE."
Soma this comment doesn't refer to only C++ it is a corner strone to a much more broader majority opinion of how pathetic Visual Studio is. Nothing in Visual Studio 2008 beats VB 6.0, C++ 6.0 and VFP 6.0 for application development. The focus of the 6.0 dev tool era was providing tools that made developers more productive. The VS era is about bloating technology with useless features, unwanted flash and unfinished frameworks. There is zero consideration or benchmark on the development communities productivity gain this bloat provides. This is worse then symbolism over substance, as the symbolic bloat of VS actually hinders our productivity.
Pathetically enough Microsoft still doesn't get it, as a big push in VS 2010 is too change the IDE to a WPF based technology, which you said couldn't be fully implemented for this release. No one mainstream is blogging or requesting an IDE change. Moreover with all bugs in Visual Studio and lack of a true data centric language this should last on your priority list. Instead the preceived "coolness" factor at "Microsoft" and your cheerleadering squad, makes this waste of time a priority. This can be equated to the VFP 6.0 class brower, that has way more functionality then the one found in VS but the VS one looks "cooler". That is all that is important right ?
This is what is wrong with Visual Studio nothing is finished, flash over functionality reigns and VS is in a constant chaotic state of suck! Attributes missing in the 6.0 development tools. What part of we WANT STABLE TOOLS THAT WORK is so hard to understand, who care about flash when the fundamental core of the development tool paradigm is flawed and a datacentric language is missing!
Microsoft has completely lost touch with everyone outside of their ivory seattle campus. Technology at Microsoft is about ego feeding and arrogance not about productivity!
Better Fix the annoying intellisense bugs.
U program doesnot compile, intellisense not working?? WTF
All this for little old me? ;)
PS: Wow... lots of hate here. Don't worry Soma, some developers still like DevDiv!
I'm surprised you're planning to have C++ lambdas already, IIRC G++ doesn't even have that working in their dev branch yet.
Actually, this is pretty much every (major) problem I have with VC++ at the moment looking like it will be resolved, so thanks!
C++ has stagnated as a language for quite some time and Microsoft treats it as a second class language. Visual Studio has been out for 5 or 6 years, each new release is worse then the prior. Do us all a favor go back to what worked and put the nail in Visual Studio/.NET'S coffin once and for all!
Wow, wow wait a minute. Is it really so bad??
I'm developing in Delphi/Pascal for more than 20 years. Recently we had to do some projects for Mobile, so I had to move to C++ (VS 2005) "native".
That is why I think my opinion will be without prejudice (except that I still prefer Delphi).
As a beginner in C/VC a have to say - it was very easy to start - everything was kind of familiar.
It is true that VS puts a lot of efforts in .Net, and this is true for all languages (in Delphi I still use v7, because all higher are .Net oriented). But you have enough tools to write/compile in C/C++.
I would suggest: learn from the good things from the rivals. Borland made a turn in Delhi 2007 toward "native" programing. You can do the same in VS2010.
P.S. I like VS2005. I don't know what was VS6, but I'm sure there is enough tools for C/C++ development.
If some one has NOT used Visual C+1.5/4/6.0 , he/ she DOES NOT know the beauty of Visual C++ . Visual C++ classwizard is one of the coolest tools I have ever used .
I am using Visual 2005/ Visual 2008, and its all focussed towards .NET ; recently I posted to MS Connect regarding the CWnd virtual functions related bug, and MS commented that they are trying hard to fix it.
Echoing on a blogger comments "Some Microsoft office guys have been hired for Visual Studio IDE".
With Jeff Prosise and Mike Blaszczak out , shall Visual C++ regain it old glory.
Microsoft ... please respect Visual C++ as a separate entity by itself.
No .NET stuff can ever fill the void , what Visual C++ can do to Windows Programming.
I don't quite recall the first version of MS compilers (when they were still called compilers) that I worked with, but I believe it was something like 2.x or 3.x, as the first major update was to version 4.2. And that was a real big step toward better productivity. I've witnessed some minor improvements over time until 6.x, then didn't work with it for some time.
2 years ago I switched to a new job, and again startet programming with MS build tools, this time MSVC 2003.NET. The first thing I was wondering about was the '.NET' in the name, since to my knowledge there was no .NET functionality involved in that department. At all. I was right, and neither do we use Java, VB or any of the other parts of that particular suite. Except, of course, C++.
Now I do not know about the more recent suites, but all the additional stuff we are not using at all is slowing us down notably! For one the 'built-in' .NET functionality is nagging us everytime we're doing something out of the normal build chain (edit-compile-link-run). And most annoying of all, both the intellisense suggestions and the online help are near useless as 99% of all results refer to C#, .NET, VB or yet another component, not C++. And that is true even if online help Index is filtered to only show Visual C++ results! The filter isn't working at all - searching for help is a PitA!
Maybe VS2005 or VS2008 are better than that, but I've never heard anyone stating such. And I'm desillusioned VS2010 will actually improve productivity for developers who just want to do C++ development, not all of the other useless (sorry just my personal PoV) stuff that is dragging us down!
Regarding Intellisense, I am using a very good addon to replace it, and even it's early versions (some 10 years back) already worked much better than any version of intellisense ever had. You'd be better advised to put more work in making the management of solutions and the build process itself more efficient, than improving putting stilts on a dead dinsosaur nobody ever wanted to ride in the first place.
I don't know if any of these things have been addressed in VS2005 or later, but what is most annoying me is:
1. Help Index not helping due tomixed-in .NET stuff
2. Intellisense providing lists full of .NET symbols or stuff from built-in libraries cluttering the suggestion lists to the point you cannot any longer find those symbols you're interested in (i. e. those you have defined yourself inside your solution)
3. No easy way to move source files of your solution to another directory (you can't even 'save as...', i. e. copy it)
4. Missing validity check for project and source file properties - e. g. why do you need to fully compile and link to get an error message telling you that certain settings exclude each other?
5. Cluttering of the global namespace with macros from MS libraries (windows, mfc), for instance the 'min' and 'max' macros. Considering that they do clash with the STL (try '#include <valarray>' for instance!) it is incredible these are #defined per default! As a rule of thumb, every macro has a potential to create very hard to pin down errors, wasting hours or days of valuable development time! If you want to improve pruductivity, kick out those annoying #defines! At least from the global namespace.