JavaScript : la risée des langages de programmation ?
Un de ses fervents adeptes apporte un démenti

Le , par Cedric Chevalier, Chroniqueur Actualités
Prenez un langage de programmation et présentez un de ses aspects, qu'on pourrait juger vraiment "stupide", à un public composé de programmeurs, pour tout de suite provoquer le fou rire. Vous venez de réaliser un "WAT".

Bien qu'il soit possible de réaliser un WAT avec tous les langages de programmation, JavaScript est celui qui de loin reçoit le plus les honneurs de cette pratique. Par exemple, en JavaScript, l'addition d'un tableau vide à un autre tableau vide donne une chaîne de caractères vide. L'addition d'un objet (symbolisé par { }) à un autre donne en résultat NaN (Not a Number). Alors que l'addition d'un tableau vide à un objet ([ ]+ { }), donne un tableau de deux objets, l'inverse donne un résultat nul.

[ame="http://www.youtube.com/watch?v=kXEgk1Hdze0"]Vidéo YouTube[/ame]

Lassé du fait que JavaScript soit constamment mis sous les feux de la rampe, Mike James, programmeur JavaScript, a décidé de défendre son langage fétiche des assauts des programmeurs du WAT.

Pour lui, ces derniers sont tout simplement ignorants. « Les auteurs du WAT font preuve d'une expérience vraiment limitée de leurs compétences », constate celui-ci.

Il va même jusqu'à pointer directement du doigt Douglas Crockford, créateur du format JSON et ayant une très forte implication dans le développement de JavaScript, comme principal responsable de l'opprobre sur le langage. En effet, Douglas a publié un livre intitulé "JavaScript The Good Parts". Pour Mike, ce titre laisserait penser que JavaScript est tellement mauvais que les maigres points positifs qu'il comporte ont pu être regroupés dans le livre. Il affirme "En disant que JavaScript a quelques points positifs, Crocke a donné l'occasion aux autres programmeurs de dire qu'il est très mauvais".

JavaScript ne doit plus être constamment tourné en dérision. Mike démontre aussi que d'autres langages peuvent être utilisés pour le WAT, c'est notamment l'exemple de Java qu'il cite. Par exemple, pour lui, le fait que Java fasse la distinction entre 1 et 1.0 ou 1 et "1" est tout bonnement débile.

Mike conclut en disant que les langages de programmation fortement typés sont une façon d'aborder un problème, mais qu'il existe d'autres alternatives, à l'instar de JavaScript qui mérite d'être exploré et non tourné en ridicule sans arrêt.

Source : i-programmer

Et vous ?

Quel est l'aspect drôle que vous avez déjà rencontré avec votre langage de programmation qui pourrait être un WAT ?

Est-ce que les bizarreries de JavaScript exposées dans le WAT prouveraient qu'il est un langage de programmation auquel il faudrait accorder très peu d'intérêt ?

Quels regards portez-vous sur les WAT ?


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


 Poster une réponse

Avatar de Sunchaser Sunchaser
http://www.developpez.com
Expert Confirmé
le 19/06/2013 14:40
Bonjour,
Je me permets un petit avis perso, et je ne prétends pas être un expert en quoi que ce soit bien entendu:

Citation Envoyé par Cedric Chevalier  Voir le message

Bien qu'il soit possible de réaliser un WAT avec tout les langages de programmation, JavaScript est celui qui de loin reçoit le plus les honneurs de cette pratique. Par exemple, en JavaScript l'addition d'un tableau vide à un autre tableau vide donne une chaine de caractère vide. L'addition d'un objet ( symbolisé par { }) à un autre, donne en résultat NAN (Not a number). Alors que l'addition d'un tableau vide à un objet ([ ]+ { }), donne un tableau de deux objets, l'inverse donne un résultat nul.

Heu ... faut vraiment rien avoir a foutre d'autre dans sa vie. M'enfin si ca les amuse, ok, peut être, mais en quoi cela va-t-il faire avancer le schmilblick ?

Certes, il semble que ce langage ait des particularités "bizarres".
Maintenant, il m'apparait devenir (ou rester, ca dépends comment on voit les choses) incontournables, tant que "les trucs qui tournent dans un navigateur" sont nécessaires et que rien d'autre ne vient remplacer au sein même des navigateurs ce vieux JavaScript (reprenez-moi si je me trompe).
Donc, autant tenter de faire bien avec ce qu'il y a de bien dans ce langage (si, si, y en a).

Le problème, je le vois plutôt dans l'inconsistence des navigateurs, qui semblent tous vouloir continuer a faire leur petite sauce chacun dans leur coin en prétendant que leur "engine" est meilleure que celle du voisin, etc, etc ... et même si les choses se stabilisent surement (je prends des gants, car comme je le dis en entête, je ne suis pas un "expert" de ce milieu), elles ont existées et ont mené a des situtations que je qualifie d'ubuesque (telle fonctionnalité pas supportée chez untel, et magnifiquement executée chez un autre, et vice-versa).
Tant que tout ceci ne sera pas réglé, ils restent a mes yeux de vrais "fautifs".
Avatar de Darkzinus Darkzinus
http://www.developpez.com
Expert Confirmé Sénior
le 19/06/2013 14:44
Je plussoie le commentaire ci-dessus. Perdre du temps pour démontrer ce genre de choses ...
Avatar de Elepole Elepole
http://www.developpez.com
Membre émérite
le 19/06/2013 14:46
Citation Envoyé par Cedric Chevalier  Voir le message
Par exemple, pour lui le fait que Java fasse la distinction entre 1 et 1.0 ou 1 et "1"est tout bonnement débile.

Le typage fort est débile maintenant ?
Avatar de Lyche Lyche
http://www.developpez.com
Expert Confirmé Sénior
le 19/06/2013 15:07
Citation Envoyé par Elepole  Voir le message
Le typage fort est débile maintenant ?

voir l'autre topic ou on parle de javascript. La plupart des nouveaux dev se foutent du typage fort.
Une hérésie en provenance des premières versions de php et de javascript.

C'est une résultante immédiate de l'abandon de la connaissance des impacts par la sur-exploitation de framework (qui soit disant, gèrent les ressources pour nous).
Avatar de DevTroglodyte DevTroglodyte
http://www.developpez.com
Membre expérimenté
le 19/06/2013 15:08
Citation Envoyé par Elepole  Voir le message
Le typage fort est débile maintenant ?

Ca doit frustrer ceux qui n'ont pas l'habitude de l'utiliser ^^

("Comment ça je peux pas mettre des Torchons et des Serviettes dans la même List ? C'est inadmettable !")
Avatar de Voïvode Voïvode
http://www.developpez.com
Membre Expert
le 19/06/2013 18:26
Suis-je le seul à être choqué que JavaScript n'ait pas de classes ?

Edit : Et pour reprendre l'excellente formulation de Schouss plus loin dans cette discussion…
Citation Envoyé par Schouss  Voir le message
Le particularisme de la notion objet de Javascript est-il risible ?

Avatar de laerne laerne
http://www.developpez.com
Membre éprouvé
le 19/06/2013 18:42
Ah il y en a qui s'organise pour ça*? Moi ce qui m'a tué c'est quand j'ais voulu changé un moins en plus d'un collègue :
Code javascript :
1
2
"1"-"2" //donne -1 
"1"+"2" //donne "12"
Évidemment c'était des noms de variables, et rien ne suggérait que c'était des strings plutôt que de des nombres… Je crois que le problème vient plus du « flou contextuel » des notations bizarres que les notations bizarres elles-mêmes. On peut vivre avec des notations qui on des comportement différent. Par contre être incapable de dire quel va être le comportement sans regarder plusieurs centaines lignes en avant, c'est très pénible.

Alors oui ça se solutionne avec des convientions, mais comme dit plus haut, les conventions en javascripts ne sont pas bien établies.
Avatar de Farid63 Farid63
http://www.developpez.com
Membre Expert
le 19/06/2013 18:47
Citation Envoyé par Voïvode  Voir le message
Suis-je le seul à être choqué que JavaScript n'ait pas de classes ?

Oui. Le C n'en a pas non plus et pleins d'autres langages très utiles et très utilisés n'utilisent pas les classes.

Euh sinon j'ai testé en java 1 == 1.0 renvoie true, donc pas de distinction ici (à moins que j'interprète mal), sinon "1" est différent de 1, ça c'est logique.
Avatar de camus3 camus3
http://www.developpez.com
Membre Expert
le 19/06/2013 18:58
Suis-je le seul à être choqué que JavaScript n'ait pas de classes ?

javascript a des classes , pas au sens java mais ce sont des classes quand même , smalltalk ( dont java s'inspire ) n'a pas non plus de classes à la java.

une "classe" en Javascript c'est une fonction qui a un prototype auquel on assigne des membres.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var MaClasse = function(){ 
  // constructeur 
  this.prop = "ma propriété" 
} 
 
MaClasse.prototype.doSomething = function(){ // un membre }  
 
// héritage 
 
var MaSousClass = function(){ 
   MaClass.apply(this); // "super" 
} 
 
MaSousClass.prototype = new MaClass;
Avatar de SylvainPV SylvainPV
http://www.developpez.com
Expert Confirmé Sénior
le 19/06/2013 18:58
Citation Envoyé par Voïvode  Voir le message
Suis-je le seul à être choqué que JavaScript n'ait pas de classes ?

Les classes ne sont qu'un moyen parmi d'autres pour faire de la programmation objet. Mais le problème est que la majorité des gens faisant du Javascript ne savent pas utiliser les prototypes..

Citation Envoyé par camus3  Voir le message
javascript a des classes , pas au sens java mais ce sont des classes quand même , smalltalk ( dont java s'inspire ) n'a pas non plus de classes à la java.

appelle ça une classe si tu veux, mais je crois qu'il vaudrait mieux éviter de mélanger les notions et se contenter d'appeler ça un objet à prototype. Les gens ont déjà suffisamment de mal à faire la part des choses

Par exemple, pour lui, le fait que Java fasse la distinction entre 1 et 1.0 ou 1 et "1" est tout bonnement débile.

Ce n'est pas ce qu'a dit dit l'auteur, c'était de l'ironie
Lisez mieux l'article d'origine :
JavaScript does it differently and this doesn't mean its wrong any more than Java's strong typing is "wrong".

Personnellement je défends le choix du typage optionnel (comme Dart par exemple). Je trouve que le non-typage présente de nombreux avantages par rapport à la rigueur du typage fort. Par exemple pouvoir facilement manipuler des ensembles d'objets de différents types sans devoir forcément leur trouver un modèle commun. Dans les langages à typage fort, on ne permet pas à une instance d'être légèrement différente de son modèle, il faut absolument étendre le modèle pour prendre en compte toute différence possible. Ce qui donne parfois des modèles ou des hiérarchies de classes ridiculement complexes. Mais le non-typage en Javascript pose également des problèmes car on est jamais vraiment sûrs de la nature des objets avec lesquels on travaille. Bref, le typage optionnel me paraît être le meilleur compromis
Offres d'emploi IT
Développeur web php5
CDI
TREPIA - Ile de France - Paris (75000)
Parue le 24/09/2014
Développeur fullstack ruby on rails
CDI
Job4geek - Ile de France - Paris (75000)
Parue le 20/10/2014
Développeur Applications mobiles (H/F)
CDI
Aramis - Ile de France - Arcueil (94110)
Parue le 26/09/2014

Voir plus d'offres Voir la carte des offres IT
 
 
 
 
Partenaires

PlanetHoster
Ikoula