If you have used any decent java or .net IDE you can see the abundance of features that they provide that either do not exist in c/c++ IDEs or exist in a much more limited form.
I am thinking about features like:
- Code Completion
- Syntax Errors (and compilation errors with no need to compile)
- Refactoring
- Debugging (the amount of information that the debugger can show you about objects)
- Code exploration and analysis (viewing type hierarchies, who calls this function etc…)
What is the main feature of managed languages that enables them to provide this (most would say) superior support in tooling?
C++ is an extremely difficult language to parse. For the parsers that do successfully process it (compilers), they are way too slow and not flexible enough to support IDE-style code support. Unlike in a compiler, in an IDE, the parser has to be very fast and be able to process syntactically incorrect code. Until now, no one’s taken the time to do it because the people with skills required to do so are focused purely on actual compilers.
Visual Studio 2010 has a revamped C++ IntelliSense engine. It took them many, many years to get it done but its massively improved.