Many languages compile down to a hardware
AssemblyLanguage. Some languages can be compiled to
JavaByteCode.
Interpreters written in
JavaScript have been created for some languages. Those languages can all, therefore, run on anything that runs
JavaScript -- including most current
WebBrowsers.
See
http://www.is-research.de/info/vmlanguages/category/javascript-language/ for a very much longer list.
There is also
AviBryant 's
ClamatoSmalltalk, a
SmallTalk dialect with a (compiled into)
JavaScript implementation.
Mozilla's
JavaScript engine,
RhinoInterpreter, uses
ByteCode as well, but it's only stored internally. A JS implementation of an alternate language could probably achieve better performance by translating the source language code into
JavaScript, and then compiling it to
ByteCode using eval().
Sadly, this is a case of
AbstractionInversion.
JavaScript is a high-level scripting language, one of the least efficient to run (see how it places in the shootout). A lower-level intermediate language would certainly be a more desireable target.
JavaScript is all we got (in the browser, at least).
True. Unless you run a JavaApplet (ugh).
These programs are nice if you want to do some programming on a platform that doesn't have any good development tools, but does have a browser, such as a phone or PDA.
See also:
AjaxSmalltalk,
IotaAndJot,
AbstractionInversion