The JVM , CLR & LLVM represent code at a very low level. It's fine if all
we want to do is run the code but not if we want to maintain high level
abstractions at the level of the source language (or higher).
Almost certainly true! However, a more interesting question is will it work
for enough languages to be useful, even if the idea works only for a subset
of imperative languages that might still be useful (most people code in
imperative languages not prolog!)
Although S expressions are very powerful I'm not sure that they are right
for this. Ideally I'd like to include more information about the code and
what the "intent" is. I could be wrong here though.
A programming language with XML syntax could be the worst language ever to
manually write code in, however the point of using XML is as a pivot format
and to have a standard way to operate on chunks of code. The intent that
programmers will only see code in one of the supported languages never the
XML encoding (other than for debugging purposes that is).
In many ways I think this could be one of the most challenging aspects of
the project. There is a large overlap between the standard libraries of
many imperative languages but they all have their own approach and find a
way to map between them or abstract away the differences sounds like an
interesting problem to work on.