>>15
I still think it's great fun for small-to-medium sized webapps.
Your idea of fun is very different from mine, then :P
As for VMs:
Multi-language interoperability if the languages are built on the same VM.
This was possible with real code decades ago. Ever heard of object linking?
Platform for API experimentation with (initially, anyway) no backcompat concerns.
I don't really see this as an advantage; you can always build new APIs for existing platforms. For example, MFC was built on Win32.
Additional "sandbox" infrastructure. Another layer of isolation can only be a good thing.
I agree, this is good, but not it gets in the way if you want high performance applications. Interpreted code and virtual machines is great for web applications, scripts, and other stuff, but not for 85% of the software you have in your hard disk right now.
Ability to define a low level assembly language without creating a corresponding hardware architecture.
This is fun, but useless. I think many of us (including myself) created his/her toy virtual machine one day, but you shouldn't be writing applications for others on your plaything.
And, with C# in particular, a sneaky means to introduce modern language features (whose absence language snobs like >>10 always bemoan) to the unwashed masses while maintaining a comfortable, familiar development environment.
This doesn't have anything to do with virtual machines. You could just as easily write a real compiler for C# or any langauge supporting these features.