# CoffeeScript

CoffeeScript es un lenguaje de programación que se compila a JavaScript. El lenguaje añade azúcar sintáctico inspirado en Ruby, Python y Haskell para mejorar la brevedad y la legibilidad de JavaScript, y añade características más sofisticadas, como la comprensión de listas y la coincidencia de patrones. CoffeeScript compila previsiblemente a JavaScript y los programas se pueden escribir por lo general en 1/3 menos de líneas de código sin ningún efecto en el rendimiento ni en el tiempo de ejecución. A partir del 16 de marzo de 2011, CoffeeScript ha estado en la lista de los proyectos más visitados en GitHub, y al 27 de julio de 2012 es el undécimo lenguaje más popular en GitHub.
El lenguaje tiene un seguimiento relativamente grande por parte de la comunidad Ruby. El soporte a CoffeeScript está incluido en Ruby on Rails desde su versión 3.1. Además, Brendan Eich ha hecho referencia a CoffeeScript como una influencia en sus pensamientos sobre el futuro de JavaScript.

## Historia

El 13 de diciembre de 2009, Jeremy Ashkenas hizo el primer Git commit de CoffeeScript con el comentario: "commit inicial del lenguaje misterioso." El compilador fue escrito en Ruby. El 24 de diciembre, hizo el primer lanzamiento etiquetados y documentados, 0.1.0. El 21 de febrero de 2010, que publicó la versión 0.5, que sustituyó al compilador de Ruby con uno escrito en CoffeeScript puro. En ese momento el proyecto atrajo a varios otros colaboradores en GitHub , y estaba recibiendo más de 300 visitas a la página por día. El 24 de diciembre de 2010, Ashkenas anunció el lanzamiento de estable 1.0.0 en Hacker News, el sitio donde se anunció el proyecto por primera vez.

## Sintaxis

Muchas sentencias de JavaScript se pueden utilizar como expresiones en CoffeeScript, por ejemplo if, switch y for. Estas declaraciones de control también tienen versiones de Postfix. Un principio general es que muchos de los paréntesis son innecesarios y se pueden omitir ya que la sangría puede ser utilizada en lugar de la llaves para denotar bloques de código, las llamadas a funciones son implícitas (los paréntesis necesarios para una llamada a una función en JavaScript se puede quitar), los literales de objetos son a menudo detectados automáticamente, y así sucesivamente.

## Ejemplos

Un fragmento de código JavaScript común con la biblioteca jQuery es
O incluso sólo
En CoffeeScript, la palabra clave function se sustituirá por el símbolo ->, y la sangría se utilizará en lugar de las llaves, como en otros lenguajes "fuera de regla" como Python y Haskell. Además, generalmente cualquier paréntesis se puede omitir. De este modo, el equivalente CoffeeScript del fragmento anterior es
O
O simplemente

## Compilación

El compilador CoffeeScript se ha escrito en CoffeeScript desde la versión 0.5 y está disponible como una utilidad de Node.js, sin embargo, el núcleo del compilador no se basa en Node.js y se puede ejecutar como cualquier JavaScript. Una alternativa a la utilidad de Node.js es el Coffee Maven Plugin, un plugin para el popular sistema de construcción Apache Maven. El complemento utiliza el motor de JavaScript Rhino, que está escrito en Java.
Su sitio oficial tiene una sección llamada «Try CoffeeScript» en la barra de menús, haciendo clic en él se abre una ventana modal en la que los usuarios pueden introducir código CoffeeScript, ver la salida en JavaScript, y ejecutarlo directamente en el navegador. El sitio js2coffee ofrece traducción bi-direccional.