IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

La syntaxe de JavaScript est-elle adaptée aux caractéristiques du langage ? Et est-ce la faute de Java ? [Débat]


Sujet :

JavaScript

  1. #1
    Expert éminent sénior

    Inscrit en
    juillet 2009
    Messages
    3 407
    Détails du profil
    Informations forums :
    Inscription : juillet 2009
    Messages : 3 407
    Points : 148 792
    Points
    148 792
    Par défaut La syntaxe de JavaScript est-elle adaptée aux caractéristiques du langage ? Et est-ce la faute de Java ?
    La syntaxe JavaScript est-elle adaptée aux caractéristiques du langage ?
    Non, répond le créateur du tout nouveau CoffeeScript, qui lui reproche de venir de Java


    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 ?

  2. #2
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2006
    Messages : 1 106
    Points : 1 347
    Points
    1 347
    Par défaut
    "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.

  3. #3
    Inactif  
    Inscrit en
    novembre 2008
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : novembre 2008
    Messages : 255
    Points : 262
    Points
    262
    Par défaut
    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.

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2008
    Messages : 23 647
    Points : 91 423
    Points
    91 423
    Billets dans le blog
    20
    Par défaut
    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é...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    février 2009
    Messages
    6 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : février 2009
    Messages : 6 387
    Points : 23 533
    Points
    23 533
    Billets dans le blog
    124
    Par défaut
    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 !

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  6. #6
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    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.

    ...pour les linguistes et les curieux >>> générateur de phrases aléatoires

    __________________

  7. #7
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    juillet 2004
    Messages
    4 185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : juillet 2004
    Messages : 4 185
    Points : 9 093
    Points
    9 093
    Par défaut
    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 - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # Document Model
    dc.model.Document: dc.Model.extend({
     
      constructor: attributes => this.base(attributes)
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  8. #8
    Membre éclairé

    Profil pro
    Inscrit en
    février 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2010
    Messages : 119
    Points : 777
    Points
    777
    Par défaut
    Pour en savoir plus lisez les cours et tutoriels Javascript et la FAQ javascript.

  9. #9
    Membre à l'essai
    Inscrit en
    février 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : février 2010
    Messages : 17
    Points : 17
    Points
    17
    Par défaut
    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.

  10. #10
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    juillet 2004
    Messages
    4 185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : juillet 2004
    Messages : 4 185
    Points : 9 093
    Points
    9 093
    Par défaut
    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

Discussions similaires

  1. Réponses: 24
    Dernier message: 25/03/2010, 09h58
  2. Réponses: 2
    Dernier message: 15/01/2010, 18h52
  3. Réponses: 2
    Dernier message: 15/01/2010, 18h52
  4. Réponses: 2
    Dernier message: 15/01/2010, 18h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo