Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

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

Le , par Cedric Chevalier

0PARTAGES

12  3 
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 ?

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de Elepole
Membre éprouvé https://www.developpez.com
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 ?
30  3 
Avatar de anykeyh
Membre confirmé https://www.developpez.com
Le 20/06/2013 à 10:29
Citation Envoyé par Bovino Voir le message
Code : Sélectionner tout
if (now != now2) { alert('WAT... ;_;?') }
Euh... fail...

Dans quel langage une instance d'un objet est égale à une autre instance ???
c#, c++, ruby, python, tout les langages qui reimplementent les opérateurs. Et optionnellement une grande partie des langages de scripts modernes.

D'ailleurs date1 > date2 fonctionne, va comprendre ils ont implémenté les opérateurs less_than, greater_than mais pas equals. Dans ce cas autant rien implémenter, non? ;-)
14  1 
Avatar de DevTroglodyte
Membre extrêmement actif https://www.developpez.com
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 !"
16  4 
Avatar de Lyche
Expert confirmé https://www.developpez.com
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).
15  6 
Avatar de SylvainPV
Rédacteur/Modérateur https://www.developpez.com
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
10  1 
Avatar de Bovino
Rédacteur https://www.developpez.com
Le 20/06/2013 à 10:05
getz85, malheureusement, les exemples que je vois sur la première page ne démontrent qu'une chose : ceux qui les postent ne connaissent pas JavaScript...

Si je prends l'exemple
Code : Sélectionner tout
"Why am I a " + typeof + ""; // "Why am I a number"
typeof étant un opérateur, ce qui suit doit être l'opérande et + "" est un opérande valide puisque le + en préfixe est un opérateur de transtypage en nombre, donc une chaine vide transtypée en nombre (console.log(+"") donne 0 et typeof 0 est bien un number. Il n'y a rien là de spectaculaire et tout cela est parfaitement décrit par ECMA262.

Bref, qu'on aime ou qu'on aime pas le typage dynamique, c'est un fait que JavaScript est un langage à typage dynamique et il faut le prendre en compte. Le corollaire, c'est que toute opération doit retourner un résultat et que si les paramètres de l'opération sont incompatibles, il faut les transtyper selon des règles. Or ces règles existent et il n'y a pas de surprise avec JavaScript si l'on connait ces règles.
10  1 
Avatar de Soobook
Membre habitué https://www.developpez.com
Le 27/06/2013 à 7:38
1 - Est-il vraiment légitime de comparer des langages?

Je trouve que ces discussions sur les langages, toujours les mêmes, sont rarement intéressantes.
Chacun défend ses préférences, habitudes et compétences, et indirectement (mais légitimement) les centaines d'heures de boulot qu'il lui aura fallu pour les acquérir.

Invariablement, on retombe sur les comparaisons Java / C++ / Python... Sérieusement, qu'est-ce que ces langages ont à voir avec JS dans son utilisation principale (partie client d'une appli web)?

Je m'étonne de plus que l'on s'arrête toujours au langage en lui même : développeur web, je fais peu de PHP, mais énormément de Symfony 2, je fais peu de Javascript, mais beaucoup de jQuery...
Ce que j'essaye de dire c'est que les langages ont leurs avantages et inconvénients, certes. Mais au quotidien, à moins d'être masochiste, n'utilise-t-on pas des framework qui structurent le développement, font gagner du temps, nous évitent de réinventer des roues ovales, et compensent certaines lacunes des langages?

Pour la majorité des profils, c'est cette "surcouche" qui devrait être discutée, plutôt que le langage lui même.

2 - Pour revenir à JavaScript...

J'aime particulièrement la phrase de je ne sais plus qui : "Javascript est la pornstar des langages de développement : souple, puissant, tu lui fais faire ce que tu veux, et ça peut finir bien crade."

Plus un produit est permissif, plus il faire l'effort d'apprendre les bonnes pratiques afin de produire un code propre. C'est tout.
De plus, comme le dit ptah35, dans certains secteurs JS n'est tout simplement pas une options.

Nos débats devraient donc porter sur comment utiliser proprement et intelligemment JS, plutôt que sur sa légitimité.

3 - ... de quel JavaScript parlez-vous?

Ben ouais, JS permet de faire du code serveur (Node.js), des bases de données (NeDB), des applications client complètes (Sencha ExtJS), de la manipulation du DOM (jQuery, Bootstrap), plein de trucs qui servent à rien mais sont marrants, et j'en passe. C'est pas la même chose quand même. Faudrait peut-être préciser.

4 - Pour conclure :

A condition de respecter les bonnes pratiques et d'utiliser les outils adéquats, JS me semble être un merveilleux moyen de fournir à nos utilisateur des interfaces riches, confortables visuellement et ergonomiques.

D'expérience, je sais que ces derniers points sont essentiels pour trouver un accueil favorable auprès des utilisateurs.

C'est bien de développer, on aime ça et tout, mais on fait pas ça que pour la beauté du code. A la clef il y a quand même un outils qui devra servir quotidiennement à des gens. C'est un point que les professionnel de l'informatique oublient trop souvent.

Je peux vous dire que JS a transcendé la partie visuelle des mes appli et que rien que pour ça, je le garde : ça me fait gagner des sous parce que les gens sont content de les utiliser.

[EDIT] En relisant ce post je me rend compte qu'il y a plein de fautes. Ayant la flemme de corriger, je m'excuse auprès des lecteurs...
9  0 
Avatar de laerne
Membre éprouvé https://www.developpez.com
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 : Sélectionner tout
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.
10  2 
Avatar de abrillant
Membre actif https://www.developpez.com
Le 21/06/2013 à 11:33
implicites, il faut pas s'attendre à quelque chose de logique. Ce type d'opération sont à éviter, il en est de même pour tout langage dans les priorités des opérateurs, si on utilise pas les parenthèses, on laisse le parseur faire l'évaluation lui même des groupes, * et / ayant une priorité plus grande sur - et +...

Par exemple par rapport à ce qui a été dit

"1" + "2" = "12"
car le plus est un opérateur de concaténation pour les chaînes

"1" - "2" = -1
car le moins est un opérateur pour les nombres, l'analyseur convertit "1" en 1 et "2" en 2. Ce qui est assez logique.

Par contre ce qui l'est moins, c'est d'avoir ce type de séquence dans son code, preuve qu'il y a surtout un problème dans la maîtrise du langage.

Bref, on peut faire dire n'importe quoi en zoomant sur des faux problèmes d'écriture qui ne concernent pas vraiment un développement "normal".

7  0 
Avatar de Kaamo
Membre émérite https://www.developpez.com
Le 19/06/2013 à 19:05
Douglas Crocke
Douglas Crockford, plutôt ....

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 ?
Personnellement j'appelle ça apprendre pour mieux connaitre son langage et ainsi être un meilleur expert technique.

Et il ne faut pas oublier non plus que Javascript a été créé en 10 jours. Microsoft a répliqué l'original (avec ses bugs) puis tout a été standardisé. Maintenant le mal est fait. Changer le coeur du langage viendrait à casser des bouts de code partout sur le web. Ça aurait un effet dévastateur. Mais la prochaine verison du langage approche et devrait régler plusieurs soucis sur la "catégorisation" de données.
7  1