false == false renvoie true
ok je sors []
false == false renvoie true
ok je sors []
Le WAT c'est de la dérision. On peut s'en servir pour s'amuser et se distraire ou pour critiquer un langage mais jamais de manière sérieuse. C'est comme dire que l'Homme est totalement inadapté à la vie terrestre parcequ'il ne cours pas vite, a froids ou des coups de soleils s'il n'est pas couvert, doit manger beaucoup de vitamine parce qu'il ne sais pas les fabriquer et que dire des 16 ans nécessaire a le rendre adulte.
Plus qu'une critique d'un langage, il s'agit de s'amuser des cas non prévus par le langage, si simple pour l'humain mais que le programme (Compilateur) ne comprends pas. Si javascript est critiqué c'est surtout qu'il permet d'écrire un tas d'erreur sans s'en rendre compte. Jamais javascript ne sort d'erreur (Ou si rarement). On peut déclarer un variable dans une fonction et s'en servir dans une autre... Pour moi javascript a un sens dans la mesure ou c'est aberrations permettent d'améliorer ses performances et d'éviter aux pages web de se planter même si une partie des scripts n'est pas chargé. Ainsi si une variable n'existe pas on la considère tout de même définie et ne connaissant pas le type de cette variable il peut y avoir qq souci mais cela ne devrait rien bloquer... Sauf au niveau du DOM (getElementbyId("NaN").
Ah non justement. Les fonctions sont les seuls objets définissant un scope particulier donc si une variable est déclarée (avec le mot clé var) dans une fonction, elle n'est pas utilisable dans une autre fonction hors scope. C'est précisément lorsqu'elle n'est pas déclarée (sans le mot clé var) qu'elle devient implicitement globale et est donc accessible dans tout le script.On peut déclarer un variable dans une fonction et s'en servir dans une autre...
Le javascript n'échappe pas aux bonnes pratiques et y en a une qui dit que les variables globales c'est le mal (dans 99% des cas).
_skip, non, ce n'est pas tout à fait ce que je disais.
Dans ta notation var x = function() {}, tu crées une fonction anonyme que tu affectes à une variable, ce qui n'est pas tout à fait la même chose que de définir une fonction nommée (function x(){}), mais c'est un autre aspect, ce dont je parlais, c'est de toujours déclarer ses variables avec le mot clé var :
que ce soit à l'intérieur d'une fonction ou non.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 var foo = 'bar'; var toto = 42;
@Bovino
Ok, excuse-moi je me suis embrouillé.
@abriotde, tout à fait.
Je pense que plus que les autres langage le javascript mérite surement qu'on s'y attarde pour apprendre à l'utiliser correctement.
Absolument car même si l'on décide d'utiliser CoffeeScript, TypeScript ou Dart pour le développement de la partie cliente de ses applications Web, JavaScript est un bon moyen d'aborder sans trop de peine, d'autres paradigmes tel que programmation orientée objet basée sur les prototypes ou programmation fonctionnelle. Se familiariser avec ces paradigmes --- même si l'on ne compte pas en faire usage --- permet de mieux comprendre le paradigme auquel l'on est habitué et, éventuellement, de mieux en cerner les limites.
J’avais déjà vu cette vidéo il y a quelques temps, mais ça me fait plaisir de la revoir
C’est intéressant de voir la réaction des gens, frustrés. Oui on aurait pu prendre d’autres langages en exemple (comme PHP tiens). En fait ça me fait peur, parce que ça montre à quel point les « programmeurs » d’aujourd’hui dérivent vers des langages mauvais. Cette vidéo montre bien pourquoi JavaScript est mauvais (et c’est un exemple parmi d’autres). Et voila ce qui est encore plus affolant :
Bien que le Java soit un langage qui m’horripile aussi, le fait qu’il fasse la distinction entre 1 et 1.0 vient de son typage fort. Et selon ce certain Mike, c’est « tout bonnement débile » ? Mais dans quel monde vit-il celui-là ? Le typage fort a l’avantage de bien faire la distinction entre les types. Peut-être qu’un programmeur JS ne le sait pas, mais entre comparer deux nombres, et comparer deux strings, c’est un peu différent. Du coup, "87534" == 8534, ça peut paraître un peu louche. On ne sait pas vraiment ce qui se fait derrière, les perfs vont forcément être mauvaises, et ça peut être sujet de bugs obscures.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.
Savoir que 1 – par exemple en C++ – est un int et que 1.f est un float, ça fait une différence notable. On va pouvoir savoir combien d’octets prennent chaque type, quel est la précision, etc.
C’est marrant de voir les gens à fond dans le JS ou PHP débouler pour protéger leurs langages infâmes en essayant de faire passer des avantages de langages forts pour des inconvénients. Après ils se retrouvent à écrire des ORM en mettant des @Int @Double sur leur variables. Ce post me donne le sourire
Il semble qu'aucun langage ne trouve grâce à vos yeux à part, peut-être, C++...
Aaaaabsolument! On ne compare pas une chaîne et un nombre; si une chaîne contiennent effectivement un nombre, on la "parse" pour obtenir ce nombre. Un programmeur C++ ne le sait peut-être pas, mais en JavaScript l'opérateur == effectue une conversion de type, c'est pourquoi son usage n'est pas recommandé et qu'on lui préfère l'opérateur ===.
Si, comme je le pense, vous voulez parler des avantages du typage fort, il n'y a, à ma connaissance, aucune étude qui démontre clairement la supériorité d'un système de types (statique vs. dynamique, fort vs. faible) en terme de productivité et de nombre d'erreurs par ligne de code. En outre, si l'on veut parler de "bons" systèmes de types, je ne pense pas qu'il soit judicieux de brandire celui de C++ en exemple; celui de Haskell serait sans doute un meilleur choix.
JavaSript a des défauts et ils sont bien connus. Encore une fois, ces erreurs de conceptions n'en font pas si mauvais langage. Peut-être qu'un jour un autre langage le remplacera dans les navigateurs Web, mais pour l'heure, il est le seul qui soit supporté. A défaut d'avoir ce que l'on aime, apprenons à aimer ce que l'on a, car en prenant le temps de s'y arrêter un peu, on s'aperçoit que ce n'est pas si mal.
Entre typage dynamique et statique aucune idée.
Mais entre typage faible et fort, même si je n’ai pas d’étude sous le coude, il me semble évident que le typage fort va réduire les bugs car toute une classe de bug, plus ou moins grande selon la force du typage, sera éliminé durant la phase de compilation/vérification.
Oui c'est une honte ces réactions de frustrés venus défendre un langage !
Il vaut mieux des frustrés venus démontrer la supériorité glorieuse des langages ayant grâce à leurs yeux !
bref du coup c'est quoi les langages mauvais et quoi les langages bons ? et comment on en reconnait un si on en croise (parmi la longue liste de langage existant ?
Tout dépend du besoin. Le problème avec JS est qu’il est le seul. Du coup comme beaucoup l’ont déjà dit « on n’a pas le choix ». C’est aussi une des raisons pour laquelle les gens le défendent : « on n’a pas le choix, alors on s’y fait, et on finit avec un avis biaisé. Ouais c’est bof le JS. Ah ouais c’est pas trop mal. Hey le JS arrête c’est sympa. Attends ça déchire trop le JS ! VIVE*LE JS !! AAAAAH JS !! ». Le prototypage de JS est une bonne chose, mais je me souviens m’être fait la remarque plusieurs fois lorsque je bossais sur du JS pour une boite et lors d’une discussion avec le responsable technique de l’équipe web :
« — Tiens, utilise backbone.js et underscore.js, c’est génial !, me dit-il.
— Ok; voyons voir. Ah tiens, ça rajoute en fait des fonctionnalités que le langage n’a pas, et c’est laid en plus d’être redondant.
— Oui mais c’est le futur ! »
Depuis longtemps j’ai la sensation – c’est subjectif mais je sais que beaucoup partagent cet avis – que les développeurs JS vivent 20 ans en arrière. Donc non seulement c’est typé faible, mais en plus ça donne la sale sensation que tout est pluggué par dessus et que le langage est tellement faible qu’il a besoin d’une horde de développeurs pour lui apporter un foreach.
Pour le typage, entre static et dynamique, je ne pense pas qu’on puisse dire que l’un est meilleur que l’autre. En revanche pour faible / fort, c’est évident. Un compilateur n’est pas qu’un simple outil qui va traduire des tokens.
Et pour la remarque sur la « supériorité glorieuse des langages ayant grâce à mes yeux », je ne fais qu’exposer leurs avantages. Le C est un excellent langage mais j’ai préfère le C++ pour son typage, entre autre. Je préfère coder avec un langage de bas niveau car contrairement à 90% des développeurs d’aujourd’hui, savoir comment la mémoire est allouée et ne pas me manger une collection pendant une opération importante, ça me tient à cœur oui. J’ai fait un peu d’Haskell dernièrement, et bien que j’adore ce langage, son GC me pose problème. C’est sans doute une différence d’expertise après tout, je suis plutôt dans l’optimisation bas niveau et rendu temps réel (je vois déjà venir les mecs me dire qu’on peut faire du temps réel avec un GC – non, pas de manière optimale, non.). Donc j’anticipe vos réactions en disant que oui, le JS n’a pas vocation à ce genre d’utilisation. Ça ne l’empêche pas d’être particulièrement mal fichu et repoussant.
je te conseille de cree ton propre language si sa peut t'evité la frustration comme ca tu ne poura t'en prendre qu'a toi meme mais qui sait peut etre que tu crera le language ultime
c'est pas vers cette periode que le C a ete cree et meme bien avant il me sembleles développeurs JS vivent 20 ans en arrière.
Le C a plus de 40 ans… Qui plus est, on peut dire ceci d’un langage qui vieillit :
- il prend en maturité au fil des années; on finit avec un langage mature
- de part l’expérience de ce langage, les nouveautés apportées au fil des années par le biais de standards sont toujours de plus en plus pointilleuses et intéressantes
Donc c’est quoi ton argument ? Entre vivre avec un langage qui a plus de 40 ans, et qui est donc affûté, et vivre avec un langage comme si on en commençait le développement (comme il y a 20 ans), il y a une sacrée différence.
Il me semble à la lecture de ces lignes que le C est un langage que vous appréciez. Si c'est bien le cas, permettez-moi de vous poser une question.
Dans un précédent message vous disiez :
Ne trouvez-vous pas que cette phrase pourrait également décrire le C ? Si ce n'est pas le cas, je pense, mais cela n'est que mon avis, que vous n'en savez pas autant que vous le pensez.
Et cessez donc de dire "les développeurs JS" comme s'ils ne connaissaient rien d'autre. Développer en JavaScript est un impératif dès lors que l'on réalise la partie cliente d'une application Web, ce n'est pas un choix.
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...
Qu'on emploie de temps à autres du typage faible par facilité, je peux l'admettre... mais j'aurai tendance a considérer ce genre de déclarations comme une preuve indiscuttable d'incompétence !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.
déjà, systématiquement, ça n'est pas la même chose !
tout le monde s'est foutu de la gueule de jcvd mais il demeure que plein de programmeurs diplômés font régulièrement cette faute de sens sans même y prêter attention, voir même en le revendiquant.Envoyé par Jean-Claude Van Damme
et puis techniquement ça n'est pas le même chose non plus :
en mémoire, sur machine 32bits
1 est codé par 0x00 0x00 0x00 0x01
"1" est codé par 0x31, 0x00
1.0 est codé par 0x00 0x00 0x80 0x3F
Et on pourrait continuer longtemps.
Merveilleux ! Je plussoie et je note dans mes tablettes."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."
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager