Close and Go BackBack to Viget

CoffeeScript for Ruby Bros

David Eisinger
David Eisinger, Senior Developer, August 06, 2010

Hello there, Ruby friend. You’ve perhaps heard of CoffeeScript, “JavaScript’s less ostentatious kid brother,” but it might as yet be unclear why you’d want to stray from Ruby’s loving embrace. Well, friend, I’ve been playing with it off-and-on for the past few months, and I’ve come to the following conclusion: CoffeeScript combines the simplicity of Javascript with the elegance of Ruby.

Syntax

Despite its compactness as a language, Javascript has always felt a bit noisy to me. Its excessive punctuation is pretty much the only thing it has in common with its namesake. CoffeeScript borrows from the syntaxes of Ruby and Python to create a sort of minimalist Javascript. From Python, we get significant whitespace and list comprehensions.

Otherwise, it’s all Ruby: semicolons and parentheses around function arguments are entirely optional. Like Ruby’s ||=, conditional assignment is handled with ?=. Conditionals can be inlined (something if something_else). And every statement has an implicit value, so return is unnecessary.

Functions

Both Javascript and Ruby support functional programming. Ruby offers numerous language features to make functional programming as concise as possible, the drawback being the sheer number of ways to define a function: at least six, by my count (def, do/end, { }, lambda, Proc.new, proc).

At the other extreme, Javascript offers but one way to define a function: the function keyword. It’s certainly simple, but especially in callback-oriented code, you wind up writing function one hell of a lot. CoffeeScript gives us the -> operator, combining the brevity of Ruby with the simplicity of Javascript:

thrice: (f) ->
  f()
  f()
  f()

thrice -> puts "OHAI"

Which translates to:

(function(){
  var thrice;
  thrice = function(f) {
    f();
    f();
    return f();
  };
  thrice(function() {
    return puts("OHAI");
  });
})();

I’ll tell you what that is: MONEY. Money in the BANK.

It’s Node

Though not dependent upon it, CoffeeScript is built to run on top of Node.js. This means you can take advantage of all the incredible work people are doing with Node, including the Express web framework, the Redis Node Client, and Connect, a middleware framework along the lines of Rack. What’s more, its integration with Node allows you to run CoffeeScript programs from the command line just like you would Ruby code.

CoffeeScript is an exciting technology, as both a standalone language and as a piece of a larger Node.js toolkit. Take a look at Defer to see what the language might soon be capable of, and if you’re participating in this year’s Node.js Knockout, watch out for the Rocketpants.

blog comments powered by Disqus

We're the Developers

at Viget Labs. We write about web development trends, tips, best practices, industry events, and our projects — all with an emphasis on Ruby on Rails.

Contact Us

Have any questions, comments, ideas, or secrets to share? Let us know.


How many hours in a day?

Sorry, you need to have Javascript enabled to use this form. (Don't blame us, blame the spammers!) If you'd like to contact us, please visit our Contact page.