CoffeeScript une r�ponse possible au champ min� qu�est JavaScript ?
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� :
Citation:
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):
Citation:
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 ?
:fleche: Qu�en pensez-vous ?
:fleche: Utilisez-vous CoffeeScript ou bien une autre variante de JS ? Avez-vous rencontr�s ces m�mes difficult�s ?
indentation : trop rigide, vraiment?
Ayant test� pas mal de langages diff�rents, y'a des choses r�currentes que j'ai du mal � comprendre : les accolades ouvrantes/fermantes.
Python a fait ce pari "de g�nie" de donner du sens � l'indentation : la courbe d'apprentissage est sans doute un peu plus ardu mais derri�re �a veut dire un gain en lisibilit� et de maintenance et �a, �a n'a pas de prix.
Dans la plupart des projets un minimum s�rieux dans d'autres langages, l'indentation est obligatoire et peux �tre un frein pour des nouvelles contributions : se faire refuser un pull request pour de l'indentation, c'est balo quand m�me.
L'histoire des go�ts et des couleurs : oui et non...
D'une part : peu de dev choisissent r�ellement leur langage et par cons�quent leur mani�re de coder (elles sont donc conditionn�s et souvent irrationnels).
De plus, il serait bon de pr�ter attention � des �tudes s�rieuses sur le fonctionnement de cerveaux vierges face des usages.
N'importe quel dev c'est contraint � de la gymnastique souvent
La raison de l'ascii art est irrecevable � mon sens : si tu as de l'ascii art, c'est forc�ment soit dans des commentaires soit dans un fichier statique externe.
Coffeescript est une surcouche d'une part (donc forc�ment bancal) et assume � moiti� ces choix d'autres part. Leur r�gle d'or d'�tre du javascript c'est du pur commercial : on pr�f�re �tre d�mago plut�t que d'assumer pleinement des choix radicaux tel que l'indentation!
Je dirais que coffeescript/livescript (� moindre mesure Dart) peuvent donner des bonnes id�es pour des nouvelles standardisation de l'ECMA ou autre mais reste peu utilisable en prod et vou� � dispara�tre t�t ou tard.