We will all have to eat humble-pie when we realize that JS is being used to write:
and a myriad of libraries, frameworks, rendering engines, and compiling languages,
... because it is better.
Seriously, please... hear me out.
Do not shoot the messenger.
Ask Microsoft why they are building Windows 8 with JS as a first class citizen. Or Mozilla's new mobile OS, or IBM's Rivertrail, PhoneGap, ExtJS, or WebGL.
Would any of these companies or projects have been successful if the
experts did not find something better in implementation?
The answer is... They did. We did. So the theme here should be clear: there is a
But, better is subjective: so we must drill-down and compare. What is better?
It started with AJAX... and it has not stopped.
This is a really big deal and worth knowing.
In JS this is the callback pattern.
It turns out, using callbacks can enable a non-blocking server: Node.js ~ about 8 lines of code.
setTimeout() is a callback. Single-threaded asynchronous processing.
-Java and C have classes and interface, but are called object-oriented.
-Having objects-only is a nice thing for flexibility, because members and methods are fully dynamic at runtime.
-Prototypal inheritance is not scary. Some experts describe it as an object-packpack.
-JS is friendly on errors.
-Code can mix together to result in Composite-Components, without much effort, or knowledge of... 'interfaces', 'abstraction', 'inheritance', 'encapsulation', 'polymorphism'. Good things, but like Nike, in JS; you just do it.
With JSON, objects can be transferred front-to-back, back-to-front. No XML data translations. JSON is clearly simple.
Low learning curve.
It is possible to cut and paste extremely complex code, then step-debug it into existence. I hear a colleague ... 'noobs'. But it is not just for noobs.
-It turns out that this is a really nice feature for Rapid Prototyping. And sites are popping up all over that leverage this design-in-browser thing, and more widely; runtime-prototyping. Checkout JSFiddle and CodePen, also MicroJS. GitHub.
Like Transformers, with JS, there is more than meets the eye.
It is a big deal.
In Java - check out Nashorn.
In C++ - check out Emscripten, or ASM.
And there are many more.
The big surprise since the original writing of this answer was JS cross-compilation.
It turns out that many languages can be compiled to JS.
And the community is encouraging that... CoffeeScript, Dart, etc.
This is not my specific area of expertise, but it is going on in big ways.
Simply put, we just don't know how the dynamism of JS is going to hash out yet.