Javascript is a necessary evil. Well, not exactly, but this is a belief held by some software engineers in various circles. The claims vary, but they attack the same basic underpinnings of the language:
As an interpreted, compiled-at-runtime, dynamic language, Javascript lacks even the ‘ability’ to execute operations at a speed that is commensurate with the machine and browser that is running it’s app.
True – it is not an assembly language. It was not intended as such. Nor did its origins intend it to be compiled to an intermediary language such as Java bytecode or .Net MSIL. That being said, it is the “Assembly Language for the Web”.
Optimization of Javascript is nothing new. There have been, and will continue to be, great strides made in things like module loading, compression, etc. However, none of these address performance at its core.
Enter ‘Web Assembly’ — the new binary format for the web. It is a charge led by Google, Microsoft, Mozilla and other key influencers. The binary format is in the form of an abstract syntax tree, and at first it will be a compilation target for high-performance application facets to be written in C and C++. The longer-term vision appears to include support for other languages.
Web Assembly will not replace Javascript. Instead, it will expand the application environment in which today’s Javascript-based apps run, and the possibilities are far reaching.
Written by Wes Reid