Skip to main content

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 like a path that can't be traversed. In order to evolve and move forward with JavaScript, the only way to do so is to transpile it that way you can still keep backwards compatibility, as well as, leverage new language features that make the language more productive in writing complex client-side web applications.

CoffeeScript is an amazing project that also encompasses a "roll your own language" feature. It essentially allows you to define your own programming language that will transpile to JavaScript by changing the tokenization settings and returning the abstract syntax tree.

As we move forward, I undoubtedly think that developers will finally be able to write applications in their favourite language whether it is C#, Python, Ruby, or Java and then have that code get transpiled to a target platform whether its for web (JavaScript), iOS (Objective-C), or Android (Java/C++). The main thing is that developers shouldn't have to relearn a new programming language in order to be productive -- They should be able to write it into their language of choice, the language they find the most fun. Additionally, one of CoffeeScript's initiatives is to be a compilation target so you could essentially write a language on top of CoffeeScript (so you go to the side from JavaScript to CoffeeScript, then go up from CoffeeScript to a more human readable language).

Jaime Bueza is a software engineer in Vancouver, British Columbia, Canada. He has developed web applications for Nintendo, Starbucks, Bacardi, Nike, Electronic Arts, Ritchie Brothers, Kiwi Collections, Cox Communications and Microsoft. When he's not developing useful software that constantly evolves with business requirements, he's writing open source software on github and creating tutorial videos for aspiring front-end developers.
Post a Comment

Popular posts from this blog

TextMate Tutorial: How to add a Strikethrough keybind to your Markdown bundle

Markdown is awesome for quickly generating Readme's on Github. After looking at other projects using the strike tag, I've decided to create a custom keybind for it in my TextMate Markdown bundle. Here's how:

1) Click the + sign on the bottom left and click New Command.
2) Paste this into the editbox and make sure you name your command "Strikethrough".

For the input field, select WORD in the drop down.
For the output field, select "insert as snippet".
As for the keybind, you can totally map it to whatever you're comfortable with but I chose Command-D as it is the same thing in Microsoft Word.

Cheers,
Jaime

World of Warcraft Ninjalist addon: version 0.1 coming along quite nicely

After toying around with more GUI related issues in World of Warcraft's API, I've decided to take a totally different direction. Originally when I architected this addon, I knew in my mind it would be a super simple Console application that a user could easily paste in a name and add it to the database; however, why stop there?

After discovering AceGUI, I can easily start developing UI components in no time! As of right now, I've got it saving data in between game sessions--the interesting part will come when I'll have to develop the web service that will parse the SavedVariable.lua, eliminate duplicate entries, as well as, do a huge merge between their copy and whats on the server's (per realm basis of course).

Here's a screen shot of the responses when adding new Ninjas to your list:
When a user clicks add after entering a name in the textbox, it'll go ahead and add that person to the ninjalist tagging the user's realm and current date/time. Someday, I…

Using Git Hooks: Prepare Commit Message to automatically prepend branch names on commit messages

When you're practicing branch by feature with distributed version control, typically you'll get assigned a ticket or issue and that ends up being your feature branch. Instead of always typing in the branch name in every commit, you can edit your Git hooks (specifically prepare-commit-msg).

Assuming that this is a brand new git repository:

mv .git/hooks/prepare-commit-msg.sample .git/hooks/prepare-commit-msg
vi .git/hooks/prepare-commit-msg

Edit the file by commenting out what was originally in the file and then add this:



Now, whenever you make a commit, it should show up like this in the log:



Since GitHub and Bitbucket both support Emojis inside commit messages, you can do something cute like this



Want more emojis? check out the Emoji Mardown Cheatsheet!