C++ a "real" .NET language?

Wil asks a good quesiton on the "C++ vs. C#" blog thread...

 

"To what extent will MS now support VC++ as a "real" .Net language, instead as just a tool for interop with legacy COM code? I note that the forthcoming Visual Studio 2005 Toolkit for Office (or whatever it's called) that is intended for programming using Word and Excel will allow you to use only C# and VB.Net. In spite of MS's hype that all CLI languages are equal (just like Sun's "Write once, run anywhere!" nonsense), some languages are in fact far more equal than others. I was hoping that would change with the introduction of C++/CLI, but I'm still looking for evidence of that. "

 

I think it's important to distinguish the various .NET languages from their various capabilities with Visual Studio or VSTO product features. The new C++/CLI syntax is every bit as "real" a .NET language as C#, VB, or any of the many third party languages. Heck, VC++ 2005 even supports compiling almost all non-managed C++ language features to MSIL using the /clr:pure switch (of course, the result won't be verifiable code if you're using pointers and such, but it will be IL). We've tried to carry C++'s tradition as the "systems programming" language into the .NET world while still ensuring C++/CLI provides a practical foundation for general purpose .NET development. The VSTO features to which Wil refers are really language-specific integrations between C#/VB and Office. Because support for each language requires additional work, the VSTO team chose to target the most common use cases for this release, which are C# and VB. Hopefully this isn't cause for concern; it's just a matter of prioritizing based on customer demand. I guarantee if the C++ community expressed outrage over being left out of VSTO wizards, you'd see C++/CLI integration in a future release. :) This isn't that uncommon, by the way; C++ also doesn't support WebForms development because we don't see that as a huge usage scenario for C++ as compared to C# or VB.NET. Conversely, in VC++ we focused on things like IJW interop because it is among the higher priority features for our customer base.