Hace tiempo que tenía ganas de echarle un ojo, y al final he sacado un rato para hacer una pequeña prueba con Coffeescript.

Para quien no lo conozca, Coffeescript es un lenguaje que compila a Javascript. Nos permite escribir código Javascript más rápido, más intuitivo y con menos líneas.

Para probarlo, he escrito en Javascript el sistema de movimiento de un personaje en lo que sería un cutre-juego en dos dimensiones, con sus sprites de movimiento y todo, y luego he migrado el código a Coffeescript. Tenéis todo ese código aquí: https://github.com/CarlosRdrz/coffeescript-test

Para hacerlo he utilizado Windows 8 y Sublime Text 2. No me apetecía estar cambiando de SO cada vez que quisiera escribir un poco de Javascript, así que me he dado una vuelta por Google y he encontrado varios tutoriales rápidos para poner a funcionar Coffeescript en Windows sin marearse demasiado.

El mejor tutorial que he encontrado es este: http://kevinpelgrims.com/blog/2011/12/28/building-coffeescript-with-sublime-on-windows

Básicamente, hay que instalar Node.JS desde su página oficial, luego abrir una consola, colocarnos en la carpeta de NodeJS y instalar Coffeescript con NPM (que es el gestor de paquetes de NodeJS).

Respecto a las características de Coffeescript, hay algunas que me gustan especialmente:

  • Se parece bastante a Ruby en cuanto a la sintaxis. Esto nos permite ejecutar estructuras de control al final de sentencias, usar las estructuras “unless”, usar el famoso #{} en cadenas, pasar parámetros a funciones sin usar paréntesis y usar funciones del tipo “variable?”.
  • Aporta mucho “azúcar sintáctico” a la hora de crear objetos para aplicar POO en Javascript con la palabra clave “class”, lo que no sé si es una decisión muy acertada, ya que en realidad el concepto de Clase en Javascript no existe.
  • Ahorras lineas. El código que escribes en Coffeescript normalmente compila a un código Javascript más extenso. Hay casos en los que con una linea de Coffeescript dices lo mismo que con 10 lineas de Javascript, y de una forma mucho más expresiva.

Respecto a aspectos que no me gustan tanto, solo se me ocurren estos:

  • Debugear una aplicación no es tan fácil como me gustaría. Cuando estás ejecutando código los errores saltan en el Javascript compilado, sin ninguna referencia al código Coffeescript original. Por lo general llegar del Javascript compilado a Coffeescript no es muy complicado, pero sí puede ser algo engorroso.
  • Las funciones y los contenidos de los métodos se delimitan por su nivel de tabulación, y esto provoca que simplemente añadiendo un salto de linea o eliminado una tabulación la compilación a Javascript sea completamente diferente.

En el poco tiempo que lo he estado utilizando eso es lo que más me ha llamado la atención. Seguro que con el tiempo encuentro más cosas interesantes, pero por el momento me animo a resumir Coffeescript como una mejora de la expresividad de la sintaxis y un ahorro de lineas de código respecto a Javascript a costa de un debugeo algo mas tedioso.