Embracing JavaScript as a Mature Language
September 13, 2010
When I first encountered Javascript, things were a bit different than they are now. Frameworks like MooTools and jQuery didn’t exist, nor did excellent debugging tools like Firebug. Back then Netscape and IE 5.5 dominated the landscape, and I was still writing in the code tab of Microsoft FrontPage.
Perhaps unsurprisingly, my early attempts at effects scripting with Javascript were messy endeavors. Many nights were spent in front of the computer scratching my head trying to debug a few lines of code. Although it often took me the long way to achieve simple results, it taught me important lessons about patience and starting small / debugging frequently.
Eventually my frustrations were assuaged with easy syntax brought about first with MooTools, then with jQuery. Debugging became a breeze with Firefox / Firebug. Since then I’ve built a number of effects based and asynchronous Javascript applications in my professional career, thoroughly enjoying the benefits of event-driven application architecture.
Though my interactions with Javascript have become much easier over the years, they’ve also in a very important sense become more relegated and simplified. In practice Javascript has become merely a tool for visual effects and asynchronous data - and even then the heavy lifting of data manipulation is handled by the server-side language.
Now that functional programming paradigms are becoming increasingly popular, classic Javascript is enjoying a revival of sorts. The low entry level of ECMA syntax, functional paradigms, and the incredibly fast V8 engine for server-side JS are opening different avenues for programming in Javascript.
Look no further than popular No-SQL databases like CouchDB, which allow Javascript both for content retrieval via custom map and reduce functions as well as content serving to HTML pages. Not to mention NodeJS, which enables massively parallel and efficient event-driven applications all built in Javascript.
The first step to harnessing Javascript in these new ways is to re-embrace Javascript as a complete and mature language. Years of using limited parts of Javascript as aesthetic flare has personally led to atrophy of the other parts of the language. Before diving headfirst into Javascript, it’s important to (re)learn the conceptual strengths and weaknesses of the Javascript language.