Interpreted languages have been byte compiled since the mid 1970's last I checked. So managed code is very much an interpreted language. Just like Basic was on the old TRS80 (by Microsoft no less).
Managed code is different though in terms of scope. As part of Microsoft's trusted computing initiative (Managed code concept is part of this), it's too tame all those nasty gotcha's caused by bad programing practice. This is why I am not thrilled with the idea. It removes the idea that programers can make stupid and often dangerous mistakes and makes people get a false sense of safety. In general I've found that buggy code comes from two sources lazyness and ignorance, primarily the from the former. This is because anyone who is ignorant can inform themselves at any time, those who don't bother are lazy.
All right political rhetoric aside it allows safer enterprise level coding. Oddly you might think this is a new idea. And to that I say, haha. No it's not at all. Microsoft marketing is busily reinventing what IBM and others have been offering for years, with a different name and more hype and glitz. I did mention virtualization, well Managed code IS virtualization. To look at it from a different perspective, it creates a virtual machine that the user can't screw up, this virtual machine is the ".NET" framework. They've obfuscated what they are doing by using different names for the same old 'stuff' repackaged. You can change your code at run time (managed code mode), this is an interpreted language. It has more 'powerful' capabilities but this is more a function of the ".NET" framework... or in unspun normal terms it's run time library.
What they've really changed is improved the backend compilor system to make it more flexible. Hence you can byte compile OR you can compile for 'native' code. If you byte compile the 'framework' must be with you (see star wars 'force'

). Obviously if you abstract the platform portability increases in that someone else has to have the framework on a different machine type to run it. This is a two edged sword however, because it does not mean it will actually be portable at all. (See the joke about the 'framework' be with you

).
.NET is fine for business oriented applications where speed is not needed.
However when scientific, embeded, real time, or performance sensitive needs outway the convience of an interpreted language combined with a clever compilor system and run time library, .NET is useless to even try using it.
The syntax is a real puzzler, I think it was MS just trying to create another standard. They do that often I've noticed. New standard's to prevent competition that is.
Cyb