CoffeeScript, dulce sintaxis para JavaScript +

Por Boris Barroso

Seguro de que la sintaxis de JavaScript a muchos les parece arida y muchas veces un poco arcaica, esta fue influenciada por lenguajes como Java o C++ en su época, pero actualmente hay una solución que hara que el escribir JavaScript sea mucho mas agradable y simple CoffeeScript.
CoffeeScript tiene una sintaxis inspirada en Ruby y Python que permite que los scripts sean mas fáciles de leer y escribir, en el sitio Web de este nuevo lenguaje existe una buena variedad de ejemplos que nos permitiran probar y revisar como funciona. CoffeeScript compila todo el código con extensión .coffee en JavaScript, actualmente ya esta cerca a una versión estable (0.9.1) y según lei esta es la versión de Release candidate que no tendra mas modificaciones hasta llegar a la versión 1.

Como usarlo

Es muy simple usar CoffeeScript, se puede instalar la versión que usa node.js para compilar los archivos .coffee a javascript o tambien se puede directamente en el browser. Para poder instalarlo con node.js es necesario tener el administrador de paquetes para node.js npm y simplemente hacer

sudo npm install coffee-script

una ves instalado el mismo es muy simple poder probarlo, iniciamos la consola ejecuatando coffee,  si desean que cada ves que hagan modificaciones a sus scripts de coffee se compile el javascript deben correr

coffee -w -c dir

Donde dir es un directorio en el cual se almacena los archivos .coffee que despues son compilados a javascript .js, esto nos permite realizar cambios en los archivos .coffee y cada ves que salvamos se compila a javascript.

En caso de que deseen utlizar CoffeeScript en el browser simplemente hay que descargar de su repositorio de http://github.com/jashkenas/coffee-script y despues se incluye el archivo coffee-script.js

Les doy algunos ejemplos de como se crear una función y como genera el javascript

# cuadrado
cuadrado = (x)->
  x * x

# factorial
fac = (x)->
  if x > 0
    x * fac(x -1)
  else
    1

Y genera:

(function() {
  var cuadrado, fac;
  cuadrado = function(x) {
    return x * x;
  };
  fac = function(x) {
    return x > 0 ? x * fac(x - 1) : 1;
  };
})();

En caso de que deseen hacer programación con objectos

class Animal
  constructor:(@patas, @cola)->

class Perro extends Animal
  constructor:(@nombre)->
    super 4, true
  ladrar: ->
    "gua gua"

Y genera

(function() {
  var Animal, Perro, cuadrado, fac;
  var __extends = function(child, parent) {
    var ctor = function(){};
    ctor.prototype = parent.prototype;
    child.prototype = new ctor();
    child.prototype.constructor = child;
    if (typeof parent.extended === "function") parent.extended(child);
    child.__superClass__ = parent.prototype;
  };
  Animal = function(_a, _b) {
    this.cola = _b;
    this.patas = _a;
    return this;
  };
  Perro = function(_a) {
    this.nombre = _a;
    Perro.__superClass__.constructor.call(this, 4, true);
    return this;
  };
  __extends(Perro, Animal);
  Perro.prototype.ladrar = function() {
    return "gua gua";
  };
})();

Para la gente que usa VIM como editor pueden encontrar en este proyecto http://github.com/kchmck/vim-coffee-script un modulo para poder editar los script .coffee

Finalmente una apreciación personal seria de que en un futuro el lenguaje que reinara en el browser y en el servidor será JavaScript, proyectos como node.js que actualmente tiene muy buena aceptación a nivel de hostings y CoffeeScript hacen que el camino sea mas fácil.

2 comentarios en “CoffeeScript, dulce sintaxis para JavaScript”

  1. hola..disculpa mi ignorancia..pero he escuchado mucho sobre node.js, veo que tambien lo mencionas y realmente no se que es y cuales son sus virtudes, podrias darme una pista?…gracias

  2. Hola Andrew te comento a grandes rasgos de que se trata, node.js permite realizar programación del lado del servidor utilizando Javascript, utilizando para esto muy bajos recursos, sabemos que el lenguaje javascript es del lado del cliente y que normalmente utilizamos php, asp.net o el Magico Rails para el lado del servidor, te paso la url del proyecto para que lo mires un poco mas a profundidad: http://nodejs.org/

    Saludos.

Su comentario