<%= tlal %> Qu'est-ce qui n'allait pas avec Coffeescript? La meta-programmation, il faut le "vendre" aux autres, une nouvelle étape de compilation intermédiaire sans fournir les avantages de Cappuccino, la sensation que c'est un peu instable.
Le commentaire le mieux classé de [la question suivante](http://news.ycombinator.com/item?id=2053956) posée sur HackerNews mentionnait [CoffeeScript][cf].
Je me suis décidé à créer mon propre framework MVC minimal pour client javascript.[^1]
[cf]: http://coffeescript.org
[^1]: Je sais que ce n'est certainement ni la meilleure ni la plus productive des décisions. Mais j'aime bien fabriquer les choses pour savoir comment tout fonctionne dans le détail.
J'ai fini une première version de mon framework MVC en javascript et j'ai appris l'existence de CoffeeScript. Merci à git, j'ai immédiatement créé une nouvelle branche dans le seul but d'essayer CoffeeScript.
Voici mon expérience :
1. J'ai dû installer `node.js` et utiliser `npm` simplement pour utiliser CoffeeScript. Ce n'était pas très difficile, mais pas aussi facile que ce que j'aurai aimé.
2. Les fichier javascript existants ne sont pas compatible avec coffee.
3. Il n'y a pas script pour aider à transformer les anciens fichiers javascripts en fichier coffee. Du coups j'ai dû faire ça manuellement.
L'option `--watch` de coffee était très utile pour debugger cette transformation.
Cependant, il m'a fallu écrire mon propre script pour que tous mes fichiers soient _watchés_ dans tous les sous-répertoires.
4. Quelque chose à laquelle je n'avais pas pensé. J'ai fait un peu de meta-programmation en javascript en utilisant `eval`. Mais pour que celà fonctionne correctement, il faut que la chaîne de caractère que je passe à `eval` soit codée en javascript et pas en coffee. C'est un peu comme écrire dans deux langages différents au même endroit. Ça ne me parraissait vraiment pas agréable.
## Conclusion
Avantages :
- Code plus lisible : CoffeeScript résoud la majorité des problèmes de syntaxes de javascript
- Concision : j'ai gagné 14% de lignes, 22% de mots et 14% de caractères.
Inconvénients :
- Ajout d'une nouvelle étape de compilation avant de pouvoir vérifier le comportement de mon site
- Facilité d'utilisation : il m'a fallu créer un script pour gérer la génératio automatique des fichiers
- Il faut apprendre un autre langage proche de ruby
- La meta-programmation devient une expérience désagréable
- Je dois convaincre les personnes travaillant avec moi :
- d'installer `node.js`, `npm` et CoffeeScript ;
- de se souvenir de lancer un script à chaque session de codage ;