My post on why I enjoy Javascript was reposted yesterday, and fueled some discussion on Hacker News on whether Javascript was worthy of the praise I was dishing. In particular, I received a comment that I was just a “blub developer“: overly fixated on my favorite language/platform, unable to see the advantages of superior tools and glorifying its weaknesses as irrelevant or even desireable.
To that charge, I’m probably somewhat guilty. Hell, I admitted I was biased from the onset.
There’s a larger point here, though, beyond the scrabble of static typing and object orientation and (lack of) standard libraries. As Javascript has emerged as the language for the web, and anyone who wants to build a website today has to deal with the language. Every single piece of technology I can think of that lays itself on top of JS – from the Closure compiler to GWT to Coffeescript to Ember.js to YUI – do not completely abstract away the limitations and faults inherent to the language. We’re stuck with the crappy parts.
But who cares? The proliferation of software has never been about the best piece of technology, and in fact, is laden with a history of ugly but successful pieces of engineering. Just on languages alone, the recent Hacker News polls on favorite/hated programming languages confirm a strong hatred of the likes of PHP, Java, and Visual Basic; that said, these languages got a ton of shit done for a lot of people. For a huge segment of the developer community, their usefulness outweighed their ugliness.
When that ugliness takes over the world and becomes the de facto standard for a platform, hell, it should be an event worth celebrating on account of its rarity alone. I can’t think of something as monopolistic as Javascript for the browser (maybe C for embedded devices?), but there are plenty of examples of language-dominant libraries/frameworks: STL, jQuery1, and Rails have obviously hit the right note for a majority of developers of their respective languages. Even as people find fault with the implementations and philosophies, I find the fact that they were able to popularize and evangelize their technology to be their truly important and endearing quality.
So yea, Javascript will never be a beautiful language surprising you with its elegance2, grace, and charm3. It is a workhorse of a language that you’ll have to wrestle into submission.
And it produces results.