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 :

Les virgules bloquent Twitter sur Opera


Sujet :

JavaScript

  1. #1
    Responsable .NET

    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : janvier 2007
    Messages : 4 570
    Points : 252 332
    Points
    252 332
    Billets dans le blog
    118
    Par défaut Les virgules bloquent Twitter sur Opera
    Les virgules bloquent Twitter sur Opera
    est-il logique d’optimiser le code JavaScript en remplaçant point virgule par virgule ?

    Hallvord Steen un développeur de l’équipe en charge du navigateur Opera a récemment constaté que le site Twitter ne fonctionnait pas avec la version finale d’Opera 12.

    Le problème serait dû à une erreur lors de la compilation du code JavaScript par le compilateur du navigateur.

    Après investigation, Steen s’est rendu compte que le compilateur devait analyser un énorme fichier de près de 4 129 653 caractères. Mais, le problème ne serait pas au niveau de la taille du fichier ou du nombre de caractères, mais plutôt dû au fait que les virgules soient utilisées en lieu et place des points virgules, rendant pratiquement les 4 millions de caractères comme une seule instruction JavaScript.

    Il s’avère pourtant que l’analyseur de code d’Opera dispose d’une limite pour une instruction JavaScript. Ce qui entraine l’échec de la compilation, et ne permet pas de ce fait à Twitter de s’afficher normalement.

    L’utilisation de la virgule à la place du point virgule présente-t-elle un avantage, ou permet–elle d’optimiser le code JavaScript ? Steen, pour sa part, n’encourage pas le recours à cette syntaxe. « La virgule présente des inconvénients comme la génération d’un code beaucoup plus difficile à compiler par plusieurs compilateurs JavaScript actuels » note Steen.

    Cependant, les sites s’orientent de plus en plus vers cette syntaxe. « J’ai vu quelques sites utiliser des virgules à la place des points virgules dans leur code JavaScript récemment. Pourquoi cette mode, ça me dépasse », regrette Steen.

    Un correctif est néanmoins disponible pour Opera, permettant de résoudre ce problème avant que cela ne soit réglé dans le compilateur JavaScript du navigateur. Le correctif permet juste d’ajouter un point virgule dans le script avant que la limite ne soit atteinte.

    Utiliser le correctif


    Source : Blog Hallvord Steen


    Et vous ?

    Qu’en pensez-vous ? Est-ce une façon d’optimiser le code JavaScript ? Si oui, est-elle logique ?
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2010
    Messages : 553
    Points : 2 737
    Points
    2 737
    Par défaut
    une virgule comme fin d'instruction javascript...?
    je suis pas un as de ce langage mais j'ai jamais entendu parler de ça...

    j'ai toujours lu que cette fin d'instruction était facultative, mais qu'on pouvait la signifier sous forme d'un point-virgule, pas d'une virgule.

    une façon d'optimiser le code?
    là encore je vois pas ce que peut apporter une virgule par rapport à un point virgule...

    j'ai hâte de lire les avis des experts

  3. #3
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Inscrit en
    avril 2002
    Messages
    4 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : avril 2002
    Messages : 4 313
    Points : 13 062
    Points
    13 062
    Par défaut
    Qu'une seule chose à dire:

  4. #4
    Membre confirmé Avatar de kohsaka
    Homme Profil pro
    Intégrateur HTML / Developpeur .NET
    Inscrit en
    janvier 2007
    Messages
    383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur HTML / Developpeur .NET

    Informations forums :
    Inscription : janvier 2007
    Messages : 383
    Points : 467
    Points
    467
    Par défaut
    Hipster programming ... si vraiment c'est juste une question de mode, c'est complètement débile.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    avril 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2012
    Messages : 26
    Points : 49
    Points
    49
    Par défaut
    débile...

    Un semblant d'explication que j'ai pu voir sur le blog opera: http://blog.vjeux.com/2011/javascrip...mma-trick.html

    Ceci-dit, ça n'excuse pas vraiment une "ligne" instruction de 1048 virgules...

  6. #6
    Membre actif Avatar de CapFlow
    Homme Profil pro
    Étudiant
    Inscrit en
    octobre 2011
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : octobre 2011
    Messages : 72
    Points : 219
    Points
    219
    Par défaut
    Comment des professionnels, d'un grand réseau social, Twitter, peuvent utiliser des virgules à la place des points-virgules ? J'espère que ça vient plutôt du minifieur, car c'est débile comme vous le dites.

  7. #7
    Membre habitué Avatar de happyboon
    Homme Profil pro
    Étudiant
    Inscrit en
    janvier 2012
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : janvier 2012
    Messages : 192
    Points : 166
    Points
    166
    Par défaut
    tout d'abord je voudrais savoir quels sont les avantages de remplacer le point virgule par la virgule pour la simplification ou l'optimisation du code.
    Si c'est pour la forme ou la mode excusez moi mais c'est débile!

  8. #8
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    mars 2012
    Messages
    1 969
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : mars 2012
    Messages : 1 969
    Points : 3 257
    Points
    3 257
    Par défaut
    Ils veulent ressembler au Perl, qui permet de définir ses propres délimiteurs de langage, et voilà le résultat: un code illisible
    Si la réponse vous a aidé, pensez à cliquer sur +1

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    janvier 2005
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2005
    Messages : 1
    Points : 17
    Points
    17
    Par défaut
    Steen s’est rendu compte que le compilateur devait analyser un énorme fichier de près de 4 129 653 caractères.
    4 Mo ? Y'a un fichier Javascript de 4 Mo sur Twitter ? :o

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    décembre 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2010
    Messages : 39
    Points : 59
    Points
    59
    Par défaut
    la virgule est un opérateur javascript, toutes les sorties sauf la dernière sont ignorées, ainsi
    var temp = 9,8;
    console.log(temp);
    écrira 8.
    Ce n'est pas une mode, c'est bel et bien une manière d'optimiser le code. Certains compilateurs executent le code plus vite, comme certaines sorties sont ignorées, mais on peut voir que ça en fait planter d'autres.

  11. #11
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2008
    Messages
    2 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : avril 2008
    Messages : 2 208
    Points : 8 313
    Points
    8 313
    Billets dans le blog
    51
    Par défaut
    C'est le principe de la minification pousser à l’extrême. Je doute que l'optimisation soit d'une performance époustouflante.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    février 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : février 2011
    Messages : 7
    Points : 28
    Points
    28
    Par défaut Une seule réponse vraie
    NON... ce n'est pas logique...

  13. #13
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    novembre 2002
    Messages
    8 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2002
    Messages : 8 311
    Points : 26 927
    Points
    26 927
    Par défaut
    j'ignorais que JS acceptait la virgule comme séparateur d'instruction.

    ce n'est pas très documenté mais manifestement ça fonctionne sur tous les navigateurs, de ce fait on peut difficilement reprocher à des programmeurs de l'utiliser.

    maintenant 4Mo de JS pour twitter c'est impressionnant et sans doute superflux.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  14. #14
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Inscrit en
    avril 2002
    Messages
    4 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : avril 2002
    Messages : 4 313
    Points : 13 062
    Points
    13 062
    Par défaut
    La virgule n'est pas un séparateur d'instruction mais un opérateur dans une expression comme l'explique poringkiller. Ça fait en effet partie de la spécification du langage. C'est un héritage de C, C++ et la plupart des langages qui ont une syntaxe qui en dérive.

    Du coup des petits malins qui ne voient pas la différence ce sont dit que ça pouvait être une bonne idée de remplacer violemment ";" par ",". Mais bon avoir une seule instruction de 4Mo, faut pas s'étonner que l'interpréteur ait du mal à le digérer.

  15. #15
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    novembre 2002
    Messages
    8 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2002
    Messages : 8 311
    Points : 26 927
    Points
    26 927
    Par défaut
    Citation Envoyé par Uther Voir le message
    La virgule n'est pas un séparateur d'instruction mais un opérateur dans une expression comme l'explique poringkiller...
    un opérateur fait une opération non ? quelle est l'opération "," ?
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  16. #16
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Inscrit en
    avril 2002
    Messages
    4 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : avril 2002
    Messages : 4 313
    Points : 13 062
    Points
    13 062
    Par défaut
    L'opération "," consiste à retourner la valeur du dernier opérande.

    Par exemple : i = 6 + (1, 4) / 2; assigera 8 à la variable "i". L'opération 1, 4 retourne 4.

    Pour te convaincre que c'est bien un opérateur regarde le tableau de précédence des opérateurs. Il est vrai cependant que cet opérateur a une utilité douteuse qui fait que peu de gens connaissent son existante.

  17. #17
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    novembre 2002
    Messages
    8 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2002
    Messages : 8 311
    Points : 26 927
    Points
    26 927
    Par défaut
    au temps pour moi
    http://en.wikipedia.org/wiki/Comma_operator

    il n'en reste pas moins que c'est donc d'un usage valide...il me reste l'interrogation sur la taille du JS
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  18. #18
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

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

    Informations forums :
    Inscription : janvier 2012
    Messages : 23
    Points : 107
    Points
    107
    Par défaut
    Je ne connais pas JavaScript, mais est ce que ça ne peut pas être une sorte d'obfuscation du code afin de compliquer la tâche de personnes souhaitant analyser le code JS de Twitter ?

  19. #19
    Membre éprouvé
    Profil pro
    Inscrit en
    juillet 2010
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : juillet 2010
    Messages : 657
    Points : 1 237
    Points
    1 237
    Par défaut
    Attention à ne pas confondre optimisation et minification .

    La minification en soit ne rend pas l’exécution du code plus rapide ( à part le parsing du fichier peut être , et encore , ce n'est même pas sur ). En tout cas , elle ne rend pas un algo plus efficient c'est clair.

    Maintenant , des compilateurs tels que le closure compiler modifient carrément la logique du code , et transforme certaines boucles par exemple en des boucles soit disant plus "optimisées".

  20. #20
    Membre expert Avatar de air-dex
    Homme Profil pro
    Inscrit en
    août 2010
    Messages
    1 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : août 2010
    Messages : 1 630
    Points : 3 685
    Points
    3 685
    Par défaut
    Trop d'optimisations tue l'optimisation.

    Au moins ils testent encore Opera. Eux. N'est-ce pas Google ?
    "Ils ne savaient pas que c'était impossible alors ils l'ont fait." Mark Twain

    Mon client Twitter Qt cross-platform Windows et Linux. (en cours de développement).

Discussions similaires

  1. Les virgules bloquent Twitter sur Opera
    Par Hinault Romaric dans le forum Actualités
    Réponses: 43
    Dernier message: 25/07/2012, 10h57
  2. Réponses: 1
    Dernier message: 02/11/2011, 02h12
  3. [JavaScript] Petit script pour afficher les tweets de Twitter sur votre site
    Par Immobilis dans le forum Contribuez
    Réponses: 0
    Dernier message: 20/08/2011, 19h24
  4. afficher les commentaire de twitter sur mon blog
    Par hammachat dans le forum ASP.NET
    Réponses: 0
    Dernier message: 28/01/2011, 11h24
  5. Trier les nombres d'une variable sur les virgules
    Par Emotion dans le forum Langage
    Réponses: 2
    Dernier message: 27/09/2007, 15h18

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