If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register or Login
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.

Hybrid View

[RESOLVED] C++ standardization and other issues.

First of all, a big thanks to the members of VC++ team for taking their time to chat with us and answer our questions. Also a big thanks for making a great product that VC++ is.

Now to my questions

1. C++ Standardization process. In the discussion following Dr Stroustrup's article on the next incarnation of C++ standard, http://www.artima.com/cppsource/cpp0x.html some of us were shocked to find out that the work on standardization is done more or less as a volunteer effort. This was given as an explanation for the lack of i.e. Unicode, XML, modules and other libraries and language features that we painfully miss in standard C++. Would it make sense that major compiler vendors (Microsoft being the most important, IMHO) put more resources into making the C++ standard more complete, similar to what VC++ team did with C (safe libraries)?

2. VC++ compilation times. While VC8 offers some exciting new features and optimizations, the compilation has become as slow as gcc. OK, not really compilation, but linking. Obviously, we can't expect compilation time of C++ code to match say C#, but I really can't explain why is it so slow compared to earlier versions, especially in Debug mode.

3. Standard conformance. We have heard many time that "export" is expensive to implement. Would it make more sense for VC++ front-end team to concentrate on C++/CLI, and for the native C++ purchase EDG front end?

4. STL speed. Many developers I know are astonished that the STL implementation that ships with VC++ is slower and slower with every new version. In one case, a developer managed to cut the run time of his application by almost 50% just by using STLPort instead of the Dinkumware library that comes with VC++2005 (if you understand Serbian check it on this link http://www.elitesecurity.org/tema/172799/1#1125074).

5. IDE issues (not sure if this is appropriate question for the VC++ group). Intellisense and code completion are pretty much broken, and the "Updating Intellisense" message that can freeze VS for several minutes is really frustrating. Would it be simpler and more effective to implement something like vim's Ctrl+P and Ctrl+N. In fact, I would love to see vim as a default editor for MSVS, but that opinion is probably not very popular among VS developers

6. Support for native libraries. Again, not sure if you are the right people to answer this. Do you know that Paul DiLascia until recently didn't know that ATL had a regexp class? I think that tells something about the coverage of native C++ libraries in MSDN documentation. Also, ATL Server was killed by the poor name choice, IMHO. Technically speaking it is a great library, and I have succesfully used it in the past to build a web service, but pretty much no-one knows about it, or what it is for.

After all this criticism, let me repeat once again that VC++ is a great product. These days I spend a lot of times with gcc, vim and gdb (oh horror!) and whenever I get back to VC++ it feels like I am back in 21st century after spending some time in dark ages. Well, except that vim rocks

Re: C++ standardization and other issues.

Hi Nemanja: that is a set of really good questions :-). I'll try to answer the ones that I have knowledge of and hopefully the rest of the team can jump in and fill-in the gaps :-)

1) Yes, the standardization of C++ is a purely voluntary process. I, along with Herb Sutter, are the Microsoft representatives on the ISO C++ Committee and we are all volunteers. But if you want a truely independent Standard this is the best way to do it. If any company was tasked with developing a library for the C++ Standard there would be a natural, and completely understandable, bias towards technologies that the tasked company supports. Have you had a look at Boost (www.boost.org)? Boost is an incredibly supportive development and proving ground for new C++ libraries - if you feel there should be a library for Unicode (warning: this one is a political minefield), XML, etc., this is probably the best place to start.

2) Are you compiling managed code? I build the Visual C++ compiler many times a day and I never find the link times a problem. I know there are issues with managed code and, yes, we are working on a solution.

3) Ah "export" - less said the better :-) I know the EDG guys well and I can tell you that they still bare the scares from implementing "export". There has got to be a better way to compile templates - problem is I am not certain that "export" is it.

4) STL performace - are we talking debug or retail? As you may be aware we get our STL implementation from Dinkumware and for Visual C++ 8.0 Bill Plauger added a *lot* of checking in debug mode. When we first picked up the new version (yes: we dogfood in Visual C++ :-)) it broke the compiler but it was all due to problems in our code (bad compiler: decrementing an iterator passed the start of a container) but we didn't see any performance related issues: though I know that there are a few. They were reported and confirmed on the C++ forums on MSDN. I'll try to track down the specific issues tomorrow (or someone from the libraries can jump in).

Re: C++ standardization and other issues.

Hi Jonathan.

Thanks a lot for your answers.

Originally Posted by joncaves

1) Yes, the standardization of C++ is a purely voluntary process. I, along with Herb Sutter, are the Microsoft representatives on the ISO C++ Committee and we are all volunteers. But if you want a truely independent Standard this is the best way to do it.

Now call me cynical, but I'd prefer big, greedy capitalist boys putting some money behind the effort. If you look at the competition (Java, C#), they are progressing much faster these days. Of course, a healthy dose of conservatism is good, but C++ is pretty much stagnant. 10+ years between the two versions of the Standard is way too long.

Originally Posted by joncaves

Have you had a look at Boost (www.boost.org)? Boost is an incredibly supportive development and proving ground for new C++ libraries - if you feel there should be a library for Unicode (warning: this one is a political minefield), XML, etc., this is probably the best place to start.

Sure I have. In fact, I wish I could submit a library to Boost myself, but can't find time to properly start it in my own time, let alone finish and test it. That's exactly why I would like people improving C++ on their paid time.

Besides, Boost covers the libraries only, not the language itself.

Originally Posted by joncaves

2) Are you compiling managed code? I build the Visual C++ compiler many times a day and I never find the link times a problem.

where some of us accuse gcc of being too slow, but it turns out that VC 8 is getting closer.

Originally Posted by joncaves

3) Ah "export" - less said the better :-) I know the EDG guys well and I can tell you that they still bare the scares from implementing "export". There has got to be a better way to compile templates - problem is I am not certain that "export" is it.

Well, it was my fault to mention "export". In fact, two-phase name lookup is more important, IMHO. I know some people that were really confused by the fact that their code compiles fine with VC++, but fails with gcc. Of course, they were looking for the problem on the wrong side