CoffeeScript a un défaut impardonnable, l'absence de mot-clé "let" ou "var" pour une définition de variable locale, qui fait qu'il ne permet pas de masquer localement des variables existantes. Ça force un programmeur travaillant dans un bloc à être conscient de toutes les variables déjà présent dans le contexte, ce qui pose des problèmes de maintenabilité; par exemple, il est risqué par exemple de copier/coller un bout de code qui change des variables, on risque en le déplaçant de changer la sémantique de l'ensemble du programme et donc d'introduire des bugs.
Le reste des changements sont raisonnables, c'est principalement du sucre syntaxique par dessus JS (donc sans aucune influence sur la sémantique des programmes). Ils auraient dû se cantonner à du sucre, au lieu de jouer avec la sémantique. Même si c'est un problème qui n'est pas toujours gênant en pratique (si on se force à éviter les portées imbriquées), ça reste un problème fondamental pour un langage de programmation, un peu du même genre que choisir la liaison dynamique plutôt que lexicale par erreur. J'espérais que ce genre d'erreur était derrière nous.
[^] # Re: CoffeeScript
Posté par gasche . En réponse à la dépêche Dart va‐t‐il remplacer JavaScript comme langage dans les navigateurs ?. Évalué à 5.
CoffeeScript a un défaut impardonnable, l'absence de mot-clé "let" ou "var" pour une définition de variable locale, qui fait qu'il ne permet pas de masquer localement des variables existantes. Ça force un programmeur travaillant dans un bloc à être conscient de toutes les variables déjà présent dans le contexte, ce qui pose des problèmes de maintenabilité; par exemple, il est risqué par exemple de copier/coller un bout de code qui change des variables, on risque en le déplaçant de changer la sémantique de l'ensemble du programme et donc d'introduire des bugs.
Le reste des changements sont raisonnables, c'est principalement du sucre syntaxique par dessus JS (donc sans aucune influence sur la sémantique des programmes). Ils auraient dû se cantonner à du sucre, au lieu de jouer avec la sémantique. Même si c'est un problème qui n'est pas toujours gênant en pratique (si on se force à éviter les portées imbriquées), ça reste un problème fondamental pour un langage de programmation, un peu du même genre que choisir la liaison dynamique plutôt que lexicale par erreur. J'espérais que ce genre d'erreur était derrière nous.