Theory: JavaScript is the best interpreted programming language in the world.
JavaScript is like water; viscous, powerful, ubiquitous and taken for granted. I’m certainly not alone in this feeling, as JavaScript is currently growing in popularity at an amazing pace. I admit that it’s not my favorite language and that it’s got its fair share of quirks, but the more I use JavaScript, the more I love it, and I would love to tell you why.
It’s viscous
JavaScript gives you enough rope to hang yourself, but tie that rope firmly to an orbiting satellite and you’ve got yourself a space elevator. While a programmer’s success with JavaScript is somewhat proportional to their willingness to embrace prototypal inheritance, JavaScript’s multi-paradigm design makes it conducive to creativity. When combined with JSON encoding and decoding, JavaScript becomes especially fluid in its ability to blur the lines between information markup and source code.
It’s powerful
An interpreted language is only as good as its interpreter. Modern browsers and web servers are now using interpreters that aggressively optimize the code they run, even to the extent of compiling JavaScript to native machine code on the fly. This process, called just-in-time compilation (JIT), makes it possible for interpreted languages to run at speeds nearing that of compiled languages like C. One of the most impressive examples of an interpreter that uses JIT is the V8 engine, which is used in Google Chrome and Node.js. This once exotic technique is now in every major browser including Mozilla Firefox (JägerMonkey), Apple Safari (Nitro) and even Internet Explorer (Chakra). The limits of what can be done with JavaScript are constantly expanding with support for technologies like web sockets, 3D rendering, video capture and audio processing already available and in the process of being standardized.
It’s ubiquitous
The number of devices capable of running this language is staggering. What’s more, nearly every one of these devices is connected to the greatest software distribution mechanism every invented, the Internet. “Write once, run everywhere”, the familiar promise behind Java, is actually true of JavaScript. It’s inside every web browser, powering smartphone apps, embedded in object databases, and even powers the Mac OS X dashboard. This diverse array is still growing rapidly, and the capabilities of these deployment targets are also improving at an amazing rate.
It’s taken for granted
While it’s easy to learn, and easily a language worth learning, very few people actually learn it. That is to say: many people use it, but very few people really understand it. As a result many developers only possess a superficial and often inaccurate understanding of if, how and why their program really works. Perhaps JavaScript’s seductively familiar syntax gives new users an early and false sense of mastery. I personally observe that most criticism of the language is a function of ignorance. This is evident when developers complain more about what a language is not than about what it is.
It’s worth your time
Whether you program to make a living or just hack for fun, JavaScript is a language that will open doors for you. It’s important to take the time to really learn it, but those who do will find themselves capable of expressing themselves efficiently and effectively. One of the best things about scripting languages is general is that they tend to be open-source friendly since programs are distributed as and executed from source code. In the case of JavaScript this has resulted in an amazing number of open source libraries, engines and utilities. All in all, JavaScript is a great language that everyone should know and know well.
Learn more
I highly recommend watching these videos to learn more about JavaScript:
- JavaScript: The Good Parts (Google Tech Talk) by Douglas Crockford
- Crockford on JavaScript (8-part series at YUI Theater) by Douglas Crockford
- The JavaScript Trilogy (3-part series at YUI Theater) by Douglas Crockford
- The Lazy Programmer’s Guide to Secure Computing by Marc Stiegler
- Speed Up Your JavaScript (Google Tech Talk) by Mike Walmsley
- jQuery Anti-Patterns for Performance by Paul Irish
- 10 Advanced jQuery performance tuning tips by Jon Raasch
- Learning to code like jQuery codes internally by Paul Irish
- More things to learn from jQuery’s internals by Paul Irish