DaveP said:
I think so. The number one greatest thing about XCode is that it is free. That can be an enormous advantage for just individual programmers that like to fool around with stuff. But the .NET 2005 IDE blows away XCode in my opinion.
I earn my living coding in both. The VS IDE (pre 2005) was ridiculously buggy, and would crash several times/day on me. VS 2005 it is only marginally buggy and often goes a full week without crashing.
The .NET development environment is rich, and actually kind of fun to code in, but it by no means all that perfect. For one, you are really running in a kind of VM (not unlike Java) and despite what you hear, there is a definite performance hit for that. Also, if you are trying to mix-and-match managed and unmanaged code you are in for a lot of head-scratching, canoodling, and highstepping around things that are outright bugs in my opinon.
Also, despite what you hear, C# is the only outright native .NET language. C++, VB, etc, while they can produce .NET runtime code, all feel like a bolt-on. In fact, prior to VS2005, the C++ syntax for producing managed code was so horrific that only the masochistic or terminally unfortunate would ever actually use it. (I was in the latter camp).
.NET is a great rapid prototype-driven development environment. I used to use VB a lot to slap together a prototype, and then use C++ to code the real thing. That was how most Microsoft programmers worked. Now, however, I can prototype in C# and simply build off the prototype to produce the final product. And the graphical development environment is extensible like nobodies business - it is easier than it has ever been to produce sophisticated UI widgets that ANYBODY can use in their product.
A lot of the .NET code originally produced by Microsoft was thin wrappers around Win32 APIs. In some cases this was a good thing, and in other cases a bad thing, but .NET 1.x was often slow an buggy - and most people doing anything sophisticated ended up looking for ways to get at the underlying Win32 world where they knew how to get things done. However, that is changing, and changing fast - Microsoft has figured out how to get the .NET runtime into their database, and on devices both large and small. And now more and more frameworks they are producing are native .NET.
For the 1990s, the NeXT environment was absolutely top dog. But it stood still while Microsoft did not. Hopefully Obj-C 2.0 is the start of Apple realizing that they also need a top-notch development environment as well. Garbage-collection is a start - and will help everyone (not just newbies) if it is done well (and done in a way the non-gc'd code and gc'd code can interact cleanly). But more important are the frameworks themselves - Apple needs to keep producing "Core" frameworks that are compelling - easy to use - and integrate seamlessly into their development environment. They need to beef up their interoperability frameworks as well - XML, SOAP, CORBA and Web services, are all necessary realities to enterprise developers, and they need to be easier to work with. They also need to make it dirt simple to produce UI controls that are my own, but become part of my development environment by getting added to the interface builder palette automagically.