Skip to main content


Showing posts from July, 2011

JavaScript is the assembly language of the Web

In my last blog post, I outlined how clever developers are starting to use CoffeeScript as a way of moving forward with Harmony (JavaScript's newest spec that improves the lexicon to be more productive) without breaking current browser implementations of ECMAScript by leveraging transpiling techniques. Concordantly, there are other transpiling tools now for C# (JSIL) and Python (Skulpt). Furthermore, I've come to realize now that based on these initiatives, JavaScript is now the assembly language of the web platform. It is fundamentally and ultimately a compilation target.

ChromeOS is a Linux-based operating system but makes heavy use of their V8 JavaScript engine. Additionally, Mozilla has stepped up and announced that there are plans to create a web operating system to compete with Chrome OS and Windows 8. I've compiled a list of technologies that have indoctrinated the HTML5 family including WebGL, WebSockets, JavaScript, CSS, HTML:

Palm Pre: HTML/CSS/JavaScript with M…

CoffeeScript and the future of JavaScript

We're in an age where there are several ways of "transpiling" languages. If you're not familiar with transpiling, it essentially allows you to write in one programming language and have that converted into another programming language. Ultimately, the primary goals of writing code in higher level programming languages is to achieve productivity. A great example of this is CoffeeScript, Skulpt, and JSIL. CoffeeScript's initiative is to ensure the developer stays within the bounds of JavaScript's "good parts" and pushing forward a Ruby/Python-like syntax where we lose flower brackets({}) and "function" and we get extensive use of "->". Here's an example of writing a class in CoffeeScript:

This is the transpiled JavaScript:

One thing to note is that web browsers of today won't jump on board with upgrading their JavaScript engines to support newer versions of JavaScript (Harmony) due to backwards compatibility. This seems…