CoffeeScript une r�ponse possible au champ min� qu�est JavaScript ?
Un blogueur explique pourquoi ce n�est pas le cas

Pourquoi CoffeeScript n�est pas la r�ponse ? � telle est la question pos�e dans le billet de blog de Jeff Walker, un d�veloppeur avec plusieurs ann�es d�exp�riences qui revient sur les plus et les moins de CoffeeScript.

Tout d�abord, CoffeeScript est un projet open source qui introduit une nouvelle syntaxe au langage JavaScript et qui apporte son lot de concepts nouveaux. L�autre m�rite de ce projet est d�crit dans ce qui suit : � La r�gle d�or de CoffeeScript se r�sume � : C�est juste du JavaScript. Cela veut dire qu�il y a �quivalent strict � chaque ligne de CoffeeScript. Par cons�quent, il n�y a pas autant de probl�mes d�interop�rabilit� du JavaScript qu�avec d�autres comme Dart �.

Forts de ces arguments, Jeff Walker a d�cid� d�utiliser cette variante de JS dans un nouveau projet, n�anmoins il semble que l�exp�rience n�a pas �t� concluante : � Cette exp�rience m�a amen� � ne pas utiliser CoffeeScript sur mon projet actuel �. Pourquoi donc ? Le blogueur s�explique sur la base de quelques points essentiels :

- Un code ambigu :
Sous CoffeeScript, les parenth�ses, les accolades et les virgules sont optionnels, remplac�s par des espaces blancs et de l�indentation, toutefois cela am�ne � certaines situations ambigus, en voici un exemple :
  • Le code suivant ne peut �tre compil� :

func 5, {

event: (e) ->

if e.something
36
else
45,
val: 10}
Il est n�cessaire de supprimer la virgule ou de la placer sur la ligne suivante devant val.

  • A + B revient � additionner A et B, alors que A +B est �quivalent � un appel de A avec comme argument +B


- Lisibilit� du code :
Sous CoffeeScript, tout est expression logique (une valeur de retour existe), or selon notre blogueur : � Le cerveau humain comprend facilement la logique sous forme de symboles �. Ainsi �valu� l�exemple ci-dessous reste complexe (tir� du tutoriel officiel sur les boucles):
foods = ['broccoli', 'spinach', 'chocolate']
eat food for food in foods when food isnt 'chocolate'
  • En premier lieu la d�claration de foods qui est effectu�e au milieu de cette expression n�apparait pas clairement comme une d�claration de variable.
  • De plus il n�est pas clair quelle est la valeur retourn�e � eat.
  • Enfin l�existence d�une condition n�est r�v�l�e qu�en dernier lieu.


- L�illusion de l�existence des classes :
Malgr� les demandes des d�veloppeurs, la notion de classe n�a pas vu le jour sous JavaScript. Sous CoffeeScript le pas a �t� franchi, mais les classes ne sont qu�une simple �mulation du concept, (cela est d� � la r�gle d�or de CoffeeScript). Cette situation m�ne � une plus grande confusion pour certains concepts de JS, en particulier le mot cl� This qui n�a pas la m�me signification que sous les langages OO.

Pour finir, il est important de noter que � CoffeeScript a commenc� � partir d�une position forte et une bonne approche philosophique vis-�-vis du champ min� qu�est Javascript �. De plus le blogueur signale qu�au quotidien cela diff�re : � En r�alit�, les questions que j'ai soulev�es en ce qui concerne CoffeeScript ne se rencontrent pas tous les jours �, m�me si � En fin de compte, elles sont suffisantes pour dire que nous avons besoin de quelque chose de mieux �.

Source : Blog de Jeff Walker
Et vous ?

Qu�en pensez-vous ?

Utilisez-vous CoffeeScript ou bien une autre variante de JS ? Avez-vous rencontr�s ces m�mes difficult�s ?