Developpez.com

Plus de 14 000 cours et tutoriels en informatique professionnelle à consulter, à télécharger ou à visionner en vidéo.

CoffeeScript propose une nouvelle syntaxe pour JavaScript
L'actuelle viendrait de Java et ne serait plus adaptée au langage

Le , par Gordon Fowler, Expert éminent sénior
Le créateur de CoffeeScript, qu'il qualifie lui-même de "JavaScript pas fantaisiste", n'y va pas par quatre chemins : la syntaxe de JavaScript n'est pas adaptée. Elle est laide et en plus, elle vient de Java.

Nombreux sont effectivement ceux qui considèrent JavaScript comme un langage raffiné mais mal servi (l'un des plus connus étant Douglas Crockford, auteur de "JavaScript : the good parts" traduit en français par "JavaScript : gardez le meilleur").

Pour y remédier, Jeremy Ashkenas a donc eu l'idée de lancer un projet open-source baptisé CoffeeScript. Encore à ses balbutiements, il s'agit d'une variation de JavaScript avec une syntaxe qui reflèterait mieux ses caractéristiques.

"L'idée de base c'est de dire que le noyau JavaScript ainsi que son modèle orienté objet ou fonctionnel sont vraiment très bons, mais que tout ça est caché derrière une syntaxe qui vient de Java, principalement. Le problème qui en découle c'est que cette syntaxe ne reflète pas les concepts profonds du langage" sous entendu : la syntaxe de JavaScript n'est pas aussi élégante et aussi utile que ses concepts.

Les développeurs Java apprécieront...

Avec un compilateur en Ruby, CoffeeScript n'apporte pas de méthode ou d'objet particuliers mais il compile directement en pur JavaScript.

Il offre également des tableaux de compréhension similaire à ceux de Python et fait des déclarations JavaScript viables.

Son créateur assure que son objectif est aussi de rendre JavaScript plus simple et plus sûr : "avec CoffeeScript, vous ne pouvez plus accidentellement créer une variable. Cette fonctionnalité amène plus de sureté au langage", affirme-t-il.

Même si le projet n'est pas suffisamment avancé pour déployer des applications, la version actuelle permet de le tester en développement Web ou pour des développements coté-serveur par exemple.

CoffeeScript 0.2.0 est disponible sur GitHub
http://github.com/jashkenas/coffee-script

De quoi remettre au coeur des préoccupations les bonnes pratiques JavaScript - qui serait plutôt mal loti dans ce domaine.
http://www.developpez.net/forums/d74...es-javascript/

Pardon... "était" mal loti ?

Source : Le site de Douglas Crockford
http://www.crockford.com/

Lire aussi

Microsoft abandonne AJAX pour Silverlight dans ses nouvelles Bing Maps : un coup de grâce avant l'heure pour le HTML 5 ?
Firefox va-t-il disparaître au profit de Chrome ? comme l'affirme une étude pour qui le recul d'Internet Explorer est aussi très exagéré
La pré-alpha d'Opera 10.5 est maintenant disponible, avec un nouveau moteur de JavaScript

Le pire bout de code que vous ayez vu : Qui l'a fait ? Pourquoi ? Pourquoi était-il si horrible ?

Les rubriques Développement Web, Java et JavaScript (news, tutos, forums) de Developpez.com

Et vous ?

Pensez-vous que la syntaxe de JavaScript soit laide et peu adaptée ? Quels éléments aimeriez-vous voir modifier ou disparaitre ?
Et pensez-vous que ces défauts viennent de Java ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de DoubleU DoubleU - Membre expérimenté https://www.developpez.com
le 15/01/2010 à 17:31
"L'idée de base c'est de dire que le noyau JavaScript ainsi que son modèle orienté objet ou fonctionnel sont vraiment très bons, mais que tout ça est caché derrière une syntaxe qui vient de Java, principalement. Le problème qui en découle c'est que cette syntaxe ne reflète pas les concepts profonds du langage"

Mouais, encore un type qui essaie de se faire sa pub a pas cher.

CoffeeScript permet juste en gros de passer d'une syntaxe java-like (et encore...), à une syntaxe ruby-like. J'ai du mal à voir l'intérêt pratique de la chose. D'ailleurs, en parcourant la doc de CoffeeScript, on ne trouve rien de plus que ce que peut apporter un framework comme prototype.

Si la seule plus-value de son langage est de "ne plus accidentellement créer une variable. Cette fonctionnalité amène plus de sureté au langage", il se donne bien de la peine pour pas grand chose. Il suffit de mettre un "var" devant le nom de la variable la première fois qu'on l'utilise. Une nouveauté en somme...

Pensez-vous que la syntaxe de JavaScript soit laide et peu adaptée ? Quels éléments aimeriez-vous voir modifier ou disparaitre ?

Entre coffeescript et javascript, je prefère de loin la syntaxe de javascript. L'indentation pour marquer les blocs, très peu pour moi surtout quand on s'est mangé des syntaxe error en python pour 2 espaces au lieu d'un tab...

Et pensez-vous que ces défauts viennent de Java ?

Outre historique, le lien entre java et javascript est vraiment ténu. Ca serait malhonnête d'accuser l'un pour les travers de l'autre.
Avatar de Aquaa Aquaa - Inactif https://www.developpez.com
le 15/01/2010 à 17:52
Citation Envoyé par DoubleU  Voir le message
Outre historique, le lien entre java et javascript est vraiment ténu. Ca serait malhonnête d'accuser l'un pour les travers de l'autre.

T'es sérieux la dessus ?

Elle est laide et en plus, elle vient de Java

Je dirais plutôt inspiré de java et que réellement elle ne ressemble en rien à java, et c'est vrai qu'elle laide.
Sérieusement j'attendais que quelqu'un fasse un pas la dessus et c'est fait.
Avatar de Bovino Bovino - Rédacteur https://www.developpez.com
le 15/01/2010 à 19:09
Concernant la syntaxe JavaScript, l'argument de Douglas Crockford et d'autres (argumentation à laquelle j'adhère du reste) est que JavaScript est un beau langage mais mal né, à l'époque de la guerre des navigateurs et sans standardisation. D'où des syntaxes évoluant au fur et à mesure des versions, des implémentations différentes selon les navigateurs et une quasi impossibilité d'épurer tout cela puisque JavaScript est compilé directement sur le poste client et qu'il est nécessaire d'assurer une rétro compatibilité...
Avatar de danielhagnoul danielhagnoul - Rédacteur https://www.developpez.com
le 15/01/2010 à 19:21
Citation Envoyé par Bovino  Voir le message
... des syntaxes évoluant au fur et à mesure des versions, des implémentations différentes selon les navigateurs et une quasi impossibilité d'épurer tout cela ...

Totalement d'accord, c'est pourquoi je vous recommande l'usage d'une « bibliothèque » (framework) et plus particulièrement jQuery 1.4 !
Avatar de RomainVALERI RomainVALERI - Expert confirmé https://www.developpez.com
le 16/01/2010 à 14:08
Citation Envoyé par DoubleU  Voir le message
Mouais, encore un type qui essaie de se faire sa pub a pas cher.

Il y a effectivement comme un parfum de buzz ^^

Mais de nouvelles ramifications dans l'arbre des langages sont toujours un apport, jamais une perte. Laissons CoffeScript mûrir un peu et c'est l'épreuve du feu (en clair : l'usage) qui sera réellement décisive.

Mais bon, cela dit, je ne la trouve pas si laide la syntaxe de js... c'est plutot le bordel de ses multiples implémentations qui pose des problèmes.
Avatar de sekaijin sekaijin - Expert éminent https://www.developpez.com
le 20/01/2010 à 10:14
mouais je ne vois pas vraiment ce qu'apporte CoffeeScript

ça ne change pas vraiment le langage.
lorsqu'on utilise une bonne lib comme jQuery ou ExtJs franchement la syntaxe de js ...

et CoffeeScript n'apporte rien de plus l'écriture de classe est quasi identique à celle qu'on a dans ExtJs
Code : Sélectionner tout
1
2
3
4
# Document Model 
dc.model.Document: dc.Model.extend({ 
  
  constructor: attributes => this.base(attributes)
et
Code : Sélectionner tout
1
2
3
4
5
6
Ext.app.FormController = function(cfg) { 
    Ext.app.FormController.superclass.constructor.call(this); 
} 
 
Ext.extend(Ext.app.FormController, Ext.app.AbstractController, { 
}
Ok c'est une syntaxe à la ruby

dans le genre qui ne ma pas convaincu pour d'autres raison on a eu droit à
http://fr.wikipedia.org/wiki/Objective-J
http://cappuccino.org/learn/

objective-j est au javascript ce qu'objective-c est au C c'est à dire une langage dynamique à objet orienté classe dans la lignée de smalltalk

il ne ma pas convaincu car la seule lib qui l'accompagne est une lib type cocoa qui ne propose rien d'autre qu'un look à la MacOS
c'est très bien sur MacOS mais moi j'ai besoin de m'adapter à l'entreprise pour laquelle je travaille et là les composant de Cappuccino ne sont pas facile facile à adapter il y aurait un couche de "skin" pourquoi pas.

reste que le language est très bien fait. mais à part porter une approche classe à la place d'une approche prototype ...

donc pour moi rien de neuf dans cette affaire
A+JYT
Avatar de jpvincent jpvincent - Membre éclairé https://www.developpez.com
le 04/02/2010 à 21:02
Pour en savoir plus lisez les cours et tutoriels Javascript et la FAQ javascript.
Avatar de tomcruz tomcruz - Membre à l'essai https://www.developpez.com
le 26/02/2010 à 15:59
J'ai quand même l'impression que ça s'adresse principalement à ceux qui sont familiers avec la syntaxe de type python. Personnellement je ne vois pas trop où est-ce que la syntaxe Java est mauvaise. Enfin je ne vois pas de quelle partie de la syntaxe Java on parle.
En javascript on utilise des fonctions anonymes, on définit des objets via JSON, ça n'est pas vraiment de la syntaxe Java. Oui le langage utilise des accolades pour définir les blocs, ce qui n'est pas si mal. J'ai fait un peu de Python et même si le principe de définir les blocs par indentation est sympa, ça me parait comme le dit DoubleU un bon moyen de produire des erreurs de syntaxe sans un IDE adapté.

Je n'ai pas lu tout ce qu'a écrit Crockford, mais j'ai plutôt l'impression que les erreurs de jeunesse dont il parle se situe plus dans le typeof bizarre, le fait que les points-virgules soient ajoutés à la volée par le compilateur et certains comportements inattendus au niveau du scoping. CoffeeScript apporte une solution à certains de ces problèmes (on a plus du tout de points-virgules... pourquoi pas) mais ça implique d'apprendre une toute nouvelle syntaxe si on est pas familier avec.
Tout ce qu'il propose me parait plus ou moins inclus dans les différents frameworks existants. Du coup je pense que si CoffeeScript peut avoir un succès certain parmi ceux qui sont familiers avec ce type de langage, il ne motive pas non plus de l'apprendre quand on est habitué à la syntaxe du C (oups pardon du Java).

Pensez-vous que la syntaxe de JavaScript soit laide et peu adaptée ? Quels éléments aimeriez-vous voir modifier ou disparaitre ?

Laide c'est une question de goût Je ne la trouve pas si mal adaptée. Le problème est qu'effectivement quand on lit Javascript on s'attend à voir des int, des classes, des interfaces et des extends, alors que l'héritage se fait par prototypage ce qui n'a rien à voir. Mais tous les frameworks js ont une manière ou une autre de rendre ces notions plus intelligibles.

Et pensez-vous que ces défauts viennent de Java ?

Java ne permet pas d'omettre les points-virgules, il oblige à bien déclarer les variables ainsi que leur type et ne permet pas de déclarer tout et n'importe quoi en global... Je trouve vraiment que ça n'a rien à voir.
Avatar de sekaijin sekaijin - Expert éminent https://www.developpez.com
le 27/02/2010 à 21:15
mais c'est peut être qu'on se trompe simplement de nom car depuis qu'il a été normalisé il s'appelle
ECMAScript

je maintient qu'un langage à base de classe n'est pas ce qu'il y a de mieux pour du scripting.

il est vrai qu'aujourd'hui ECMAScript à dépassé la limite du simple scripting de page web

dans ce cadre là peut être que la POO à base de prototype peut sembler inadapté et la POO à base de classe plus pertinente.

Mais pour faire des script la capacité à dynamiquement enrichir des objets sans avoir à en définir de nouveau à partir d'un classe est un énorme avantage.

je pense que beaucoup de critique vienne du fait que les profondeurs du langage ne sont pas maîtrisées.

je suis souvent étonné de voir la complexité de certains développements qui peuvent être réécrit de façon simple et efficace et souvent plus sure.

combien de fois j'ai vu des choses très compliqué pour construire un système d'objets utilisant des référence à des objets du DOM pour pouvoir ensuite les manipuler alors qu'il suffit simplement d'ajouter des méthodes directement sur les objet du DOM pour qu'il soient eux même porteur de leur sémantique.

enfin pour ce qui est des évolution de tout cet écho système HTML5 n'est plus une spécification d'une syntaxe et une sémantique de balisage mais une définition d'un DOM Supportant plusieurs sérialisation don une en XML que nous appelons par simple habitude HTML5 de même ECMAScript prend de plus en plus un tour d'un moteur d'exécution avec un ensembles de caractéristique internet supportant plusieurs syntaxe.

je ne pense pas que ce soit demain que nous verrons de nouveau langage en frontal d'ECMAScript mais le devenir du socle prends cette voie.

en aparté on commence juste maintenant à voir arriver de nouveau langages pour la plate-forme JAVA (n'utilisant pas du tout java) la machine virtuelle le permet au travers du ByteCode depuis longtemps mais il aura fallut tout ce temps pour que ça devienne une réalité balbutiante.

A+JYT
Offres d'emploi IT
Développeur Web FULL-STACK
VACALIANS GROUP - Languedoc Roussillon - SETE (34)
Développeur WEB PHP F/H
VACALIANS GROUP - Languedoc Roussillon - SETE (34)
RESPONSABLE WEB ANALYTICS F/H
VACALIANS GROUP - Languedoc Roussillon - SETE (34)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil