I can't agree with several things in your premis. First, managed languages aren't inherantly easier than unmanaged languages. You'll have to talk specifics to make a claim like that (for instance, I won't argue that C# is easier
than C++, but it's not really any easier than D or Eiffel). Not all unmanaged languages require you to do memory management. Heck, even in C/C++ there's garbage collectors you can use, and in C++ they actually plan on adding GC to the language spec.
Linux ships new OSes every quarter, basically, and that's with most of the code written in C/C++. Different model, yes, but the point is that the time frame of releases isn't all that relevant. I work on commercial applications written mostly in C/C++ that
ship new versions quarterly. Not all users are "wait until I can't wait any longer" types. In fact, I'd say the majority still aren't in this camp, though I'm guessing as much as you are.
Midori and Singularity haven't proven anything, other than you can use managed code in interesting places. Users aren't switching for many reasons, but none of them have anything to do with users not wanting to "upgrade". It's more along the lines of costs
vs. benefits analysis (the user's current investment in applications that won't run on Singularity, for instance, prevent them from doing more than checking it out). Also note that these are research projects and not commercial offerings. With out marketing,
MOST users don't even know they have the option to switch, and haven't made the cost/benefit analysis.
OK, my premise is this.
I have a just grabbed a copy of Practical Visual C++ 6
from my bookshelf. Were I to use this to create the commercial applications I've written, I still would not have finished the first one. I am a qualified native C++ developer by the way, but self taught managed C#. I find .NET much much easier, and not
having to deal with pointers, stack overflows and buffer overruns for me at least, makes C# "a walk in the park", compared with native C++. The IDE is much cleaner, re-factoring and a
framework, makes it lovely to work with. I have the utmost respect for native developers and think they
towards managed developers, because native coding is harder. Why to you think managed code has taken off the way it has - because it's just as hard as unmanaged?
would be easier to deal with if they had a rich IDE like VS and the resources put into it that the base class library has. Another flaw in your argument, is comparing domain specific languages with general purpose programming languages like C++ and
C#. Designing programs by contract well in general is done by people with some experience of programming, Spec# being the latest offering from Microsoft. A quick look at D has things like tuples (funtional programming) and Eiffel has a lot of features that
leave academics salivating. This is all well and good, but not as productive as a general purporse programming language like C#.NET.
Everything about .NET is based around productivity. I know of no single ISV developers, that have completed n-tier, multi user applications, with a sproc data access layer, utilising web services. It is possible to do this with native C++, Eiffel or D, but
it takes longer, and there is a wider scope for bugs. The trade off is performance, and having a bulky runtime beneath.
For a business with 500 users, a quarterly upgrade as you suggest with Linux is expensive and impracticable, unless there is an overwhelming reason to do as such. Microsoft have just spent $300 million on marketing Vista, can you imagine them launching a new
campaign every 13 weeks? You find that reasoning agreeable?