Il y a l'histoire de Python aussi. Tout ce merdier pour finalement faire le language le plus bâtard du monde, venant du monde de Linux. Ils sont forts ces anti-Microsoft dans la connerie.
Il n'existe aucune façon de représenter les chiffres à virgule en machine de façon exacte. 0,1 + 0,2 donne 0,300....4 dans tous les langages. Du moins ceux répondant à la norme IEEE 754 de représentation des nombres à virgules en machine, nombres appelés flottants. Cette norme s'appuie sur l'écriture scientifique du nombre en base 2. Il faut se rappeler que le fait qu'un nombre aie une infinité de chiffres dépend de la base. Par exemple "un tiers " a une infinité de 3 après la virgule en base 10 : 0,333333.... En base 3 c'est simplement 0,1. De même 'un dixième' s'écrit simplement 0,1 en base 10 mais 0.0001100110011001100... avec 1100 qui se répète, en base 2. Pour stocker un nombre sur 32 ou 64 bits l'ordi est donc obligé de stocker des valeurs approchées . Puis la conversion en base 10 pour écriture à l'écran ne tombe plus juste. Voici d'autres résultats surprenants : (a + b) + c n'est pas toujours égal à a + ( b + c) a * (b + c) n'est pas toujours égal à a * b + a * c (log(a**n) / log(a)) n'est pas toujours égal à n
Exactement, même en Java tu obtiens la même chose, pour le coup, l'exemple dans la vidéo n' est pas significatif. Par contre additionner des number avec des strings, c'est une autre histoire 😁
Exact, j'ajouterai qu'il existe des langages pour le calcul formel qui permettent de palier à toutes les erreurs d'approximations/représentations qui s'accumulent dans les programmes écrits dans les majorité des langages. Par exemple Geogebra utilise giac/xcas pour éviter ces problèmes et bien d'autres. Giac, le moteur de calcul formel (qui donne bien "true" à 0.1 + 0.2 == 0.3) a été créé en parti dans le cadre d'un projet universitaire grenoblois
* 3 > 2 > 1 Pas certain, mais 3 > 2 est d'abord interprété, ce qui donne true Puis true > 1 = false parce que true équivaut à 1 * [] = [] Les tableaux sont considérés comme des objets en JS Et chaque objet étant unique, chaque tableau l'est aussi Mis à part ces bizarreries, avec suffisemment de recul j'aime bien ce langage Belle syntaxe, évolution régulière des standards, facilement modulable & extensible, full stack, prototypage rapide, pour les prijets sérieux y'a Typescript
Il n'y a rien de bizarre... il suffit de savoir que c'est un langage a typage dynamique... 10 + "1" donne 101 car le 10 de type Number est dynamiquement changer en type string... et le + en javascript entre deux chaînes de caractères sert à la concaténation tout simplement.... donc bizarre oui si on utilise pas l'outil pour ce qu'il est ....utilisez un tournevis pour enfoncer des clous et dites que ce marteau est bizarre.....
@@luffystars3841 tout ce qu'il a montré me paraît plutôt logique, et même plus qu'en java: > "string" == "string" //false et au final au vu de la base du language, c'est plutôt logique
Après vérification, ta théorie sur les comparaisons est complètement vraie puisque 3>2==0 donne false et 3>2==1 donne true, le booléen étant fondé sur true et false, mais aussi sur 1 et 0
Sympa cette histoire ! Alors il y a bien un lien entre Java et JavaScript, c'est juste un lien historique et pas un lien logiciel :) On en apprend tous les jours ! Merci.
ce que je trouve marrant c'est que Lars Bak s'est barré quand Sun micro system a été racheté par Oracle. C'est marrant si on connait l'histoire qu'il y a eu avec MySQL et MariaDB lorsqu'Oracle a pointé le bout de son nez. Décidément, y'a des développeurs qui n'aiment pas du tout travailler pour Oracle. Je me demande bien pourquoi ^^
Franchement mec n'hésite pas à étoffer tes vidéos, aller dans le technique etc c'est trop intéressant. La j'ai l'impression que tu limites pour des vidéos grand publique mais ces sujets méritent tellement plus. Gg quand même t'es un vrai crac comme on en fait plus.
Petit rappel utile pour la fin de l'histoire : c'est suite à la libération du code de Netscape qu'est né Mozilla qui deviendra plus tard Mozilla Firefox. Enjoy!
En effet,et c'est un gros deal, c'est le projet qui va porter l'open source avec GNU/Linux. Heureusement que Netscape a fini par ouvrir ses sources, sans cela Microsoft aurait bouffé le web et mis sous clefs ses standards
la reponse de python ma surppris 0.1+0.2 = 0.30000000000000004 !! pourtant un vrai langage de calcul scientifique...!!! Guindo nous dois des explication aussi
@@Manon-4096 Ouais mais ils ont créer une bibliothèque nommée "Decimal" avec la classe Decimal pour mettre en base 10 directement pour éviter cette erreur :p
Excellente cette vidéo ! Intéressant aussi de mentionner l'ECMA, puisque quelques années après avoir été développé (un peu à la va vite), JavaScript avait quand même été standardisé, donnant naissance à ECMAScript (si j'ai bien suivi) Et pour les personnes qui confondent Java et JavaScript, n'oubliez pas que "Java is to JavaScript what Car is to Carpet" 😉
Mais tu vises juste des cotes nuls pr dire que c'est un language bizzare genre ? 123 == '123' tu peux juste faire === ca va renvoyer faux, pour un array vide t'as pas besoin de mettre [] == [] tu peux juste faire [].length === 0 parce que sinon c'est quoi l'utilite de [] == [] et pr la virgule flottante c'est pas a cause de javascript c'est a cause de la facon dont le pc calcule ya ca sur python et dautre language aussi et il y'a toujours de la vix avec une fonction maths basique et pr le 3>2>1 c'est parce que 3>2 ca renvoie true ducoup ca devient true>1 ce qui est faux tu peux juste mettre 3>2 && 2>1... il y'a pratiquement solution pour tous, faut juste respecter la syntaxe et le fonctionnement du language
C'est impressionnant la quantité de bêtises racontées en seulement 30 secondes (sans parler du reste). • 0:07 : Tu demande une addition entre un nombre et un string, le langage étant en incapacité de le faire, il strigify les deux partis et les assemble avec un comportement tout à fait logique. • 0:12 : On voit tout de suite que tu ne sais pas utiliser un opérateur Javascript correctement. • 0:18 : Tu compares 2 objets qui POUR TOI sont identiques sauf que d'un point de vue machine, tu as 2 instance d'un Objet (ici un tableau) vide donc ayant 2 instances différentes, il te renvoie false. • 0:26 : Tu connais les arrondis ? Tu sais, le fameux 1/3 qui vaut 3.3333333333....................................................4 ? • 0:29 : "Et ce ne sont que 2 exemple parmi tannnnnnnt d'autres" : Tu es là pour assassiner un langage ou pour raconter l'histoire de celui-ci ? • 3:10 On ne "programme pas un navigateur" : Ça ne veut juste rien dire. • Toutes tes "petites anecdotes" (à 6:14 par exemple) sur le créateur de Javascript me font bien rire dans la mesure où elles ne relèvent que et uniquement de ton interprétation, à moins peut-être que tu as rencontré son créateur et que tu le côtoyais en 1995 ! • 6:30 A quel moment tu peux affirmer que ce langage, aussi minimaliste pouvait-il être à sa création, ai été créé en 10 jours ? Je suis en train de créer avec un ami un langage de programmation, nous avons commencé il y a 2 mois et il n'arrive toujours pas à la cheville de la première version du Javascript. Non pas parce qu'on n'avance pas mais uniquement parce que cela relève d'une complexité de compréhension juste... énorme. A noter que les ressources dont nous disposons aujourd'hui n'existaient pas en 1995 donc chapeau au créateur pour ce qu'il a créé. Tu ne peux pas affirmer qu'il a été créé et 10 jours et lui cracher dessus 3 secondes plus tard en citant tous les problèmes liés à la sécurité. D'autant plus que la notion de sécurité dans le web a énormément évolué et que les besoins de l'époque n'ont absolument rien à voir avec ceux de 1995. • 7:50 (à peut prêt) tu dis que même il n'y a pas si longtemps, il était compliqué d'avoir une bonne compatibilité entre les navigateurs : c'est effectivement vrai. Sauf que tu balance cette information juste après avoir mis en avant que le problème lié à la compatibilité avait pour cause : 2 langage différents. Ça fait extrêmement longtemps que le problème ne vient plus de ces deux langage puisque l'un a totalement été dégagé au profit de l'autre. Ici encore une fois, ton script est très mal agencé, mal organisé.. A moins que ta volonté de guillotiner le Javascript est réelle... Ce qui est amusant d'ailleurs c'est que tu ne montre quasiment aucun code en Javascript dans ta vidéo de fond... (au mieux on a vu du WebAssembler.. mais qui n'est toujours pas du Javascript..) Tout le discours que tu emplois est orienté pour dévaloriser, dénigrer le Javascript. Ce langage qui est omniprésent sur tous les supports, desktop, mobile, web, micro-logiciels embarqués (et j'en passe). Qui es-tu pour affirmer que le Javascript "est un langage claqué au sol" ? Es-tu son créateur ? Ta vidéo est mal montée, son storytelling aurait pu être sympa si tu ne racontais pas autant de bêtises à la minute. Dès le début, tu assassine le langage en citant des exemples qui POUR TOI ne sont pas logiques, TOI qui est un SYSTADMIN et non un DEVELOPPEUR. Ta vidéo est orientée, sans aucune impartialité, (presque) sans aucune recherche. Elle est décevante en comparaison de ton contenu habituel. Et c'est vraiment dommage parce que le concept, celui de raconter des histoires autours des langages est très intéressante.. s'il n'y avait pas cette orientation malsaine.
Wahh, je viens de perdre 5 min a lire un commentaire qui éclate un gars qui met a disposition une video gratuite et dont le titre est explicite ! Alors j'en prend 5, juste pour te dire d'aller ... essayer d'autres languages pour comprendre le sens de la video. Et les exemples cités ne sont pas faux... juste illogique de certains points de vue. Si il «strignifie» dans un sens pourquoi pas dans l'autre ? Un tableau = objet JS = instances ... sans rien demandé .. normal ? Tu sais ce que c'est un tableau en C ? Les perfs, la sécurité, compatibilité, .. sont toujours des problèmes actuels.. Faut avouer JS veut tout faire a ta place mais si tu ne connais pas le comportements de son «runtime» c'est très abstraits et illogique ! C'était juste pour faire un commentaire de plus pour cette excellente video. 😂
Super intéressant comme d'habitude mais très court, j'espère que tu approfondiras! Javascript a eu plusieurs vies, celle que tu as présenté qui introduit l'ère des incompatibilités entre les navigateurs, l'ère JQuery qui a permis de compenser ça... à sa manière, l'ère post ES6 qui a ouvert la porte à de gros projets grâce à l'arrivée des classes... Et depuis, NodeJS, le Typescript et tout ce qui permet aujourd'hui de faire du Fullstack uniforme et solide basé sur JS). Vidéo excellente par le contenu, l'humour et le montage, merci :)
La comparaison des 2 tableaux vides qui donnent false, c'est parce que tu compares 2 objets, et dans javascript les arrays sont des objets. Or, également les objets sont stockés (et donc également comparé) par référence dans la stack (plutôt heap, les objets sont stockés dans la heap en JS, la stack ne stock que la référence à l'adresse dans la heap), et vu qu'ils ont 2 références différentes car grossomodo tu déclares 2 tableaux différents, ils ne sont pas égaux pour JS. Il y a d'autres techniques pour comparer des tableaux en JS (notamment en détournant un peu via JSON.stringify..) J'ai remarqué seulement à la fin en écrivant que la vidéo date d'il y a 2 ans, mais maintenant que j'ai écrit ça, je vais quand même poster :D !
Beaucoup de comportements bizarres en JS viennent du fait qu'il n'est pas typé, et donc quand on fait des comparaisons entre données de types différents (ex : float vs string) le language fait des conversion à sa sauce, ce qui donne parfois des résultats bizarres.
0:25 Alors ça, c'est simplement parce qu'aucun de ces nombres en binaire ne sont finis (0.1=0.0001100110011... et 0.2=0.001100110011...), donc pour pouvoir les stocker, il faut le faire sous forme d'arrondis. Et forcement, après, quand on fait des calculs avec, il y a des erreurs. Beaucoup de langages on ce problème.
Le Js est certainement le langage de haut niveau le plus permissif qui existe. Possibilité de faire des opérations entre integer et string sans déclencher une erreur. Possibilité d'appeler une fonction sans l'avoir déclarée au préalable, le fameux hoisting. :) Netscape mon premier navigateur. Tu me rajeunis pas. Il y a 25 ans, je n'aurai pas misé un bouton de culotte sur le JS ^^. Aujourd'hui avec l'explosion du web, et surtout de Google c'est devenu un incontournable. Ceci dit il a sacrément évolué ^^. PS : dans ton titre une petite coquille. Langage s'écrit sans le "u" en bon françois :) . Sinon comme d'hab, gg à toi.
ça fait un an exactement que je fais du NodeJs / Javascript pour mon entreprise et du coup vidéo très intéressante du point de vue historique. J'avais fait beaucoup de C avant du coup les bizarreries j'en ai vu assez peu. Il faut juste penser à bien cast les variables dans le type souhaité quand on est pas sur plutôt que de tout laisser en automatique et avoir des surprises plus tard. (ou faire du typescript ça marche aussi) La gestion d'erreur via try catch est du coup un point essentiel dans le langage ça permet de gérer les bizarreries sans faire crash le programme. Le garbage collector existe maintenant, une fois qu'une variable n'a plus de référence ou qu'on sort du scope actuel la mémoire est libérée. Le language est très plaisant à utiliser (on fait beaucoups en codant peu) et surtout très facile à prendre en main pour des débutants, le plus important étant de ne pas coder en mode YOLO car le language est assez permissif.
J'ai fais un mois de Javascript, mais venant du C/C++, j'ai eu envie de m'émasculer avec les dents dés les premières lignes de code !! Je suis heureux de ne plus avoir besoin d'utiliser celui-ci, mais ceux qui utilisent ce langage, ont tout mon respect
Hey ça fait un moment que j'étais pas passé, c'est vraiment stylé comme vidéo, j'aime beaucoup le rythme et le format, il y a pleins d'infos sans ce que soit trop dur à encaisser! Tu t'es grave fait à RUclips c'est cool haha :)
Juste pour le [] == [] c est parce que javascript ne regarde pas le contenus des tableaux, chaque tableaux js a une addresse memoire qui correspond a l endroit ou il est stocké sur l ordinateur. Js compare ensuite si le tableau1 EST le tableau2, or les deux contienne les memes choses, mais ne sobt pas la meme entitée Exemple plus simple, si j ai deux sacs remplis de 3 oranges, je ne peux pas dire que ce sont les memes sacs, ce sont deux sacs differents qui contiennent les memes chose
Énorme malaise ce titre et les premières secondes. On sent bien le mec qui n'a d'expérience qu'avec très peu de langages. Absolument tous les points énoncés sont logiques et faut vraiment faire aucun effort pour ne pas les comprendre. Je crois que le pire de tous c'est quand tu parles de 0.1 + 0.2 != 0.3, c'est à se demander si t'as déjà utilisé des flottants une fois dans ta vie. Enfin de toute façon vu le titre j'imagine que le but de cette vidéo c'est juste de faire des clics avec du "sensationnel" auprès de débiles.
Bah quitte à être à contre courant, j'ai passé des bons moments avec javascript (sous angular 1/nodejs sur des grosses applications web) et justement son coté non typé. Ca m'a rarement fait défaut. Pour moi les langages objets sont fait pour prendre par la main et rassurer le développeur mais rallonge le temps de développement.
Magnifique , je visionnais la video sur ma télé je suis allé sur mon téléphone juste pour liker et commenter, tes vidéos sont tjr aussi passionnantes et cool a regarder ! Keep it up 👍🏽
Très intéressant, je m'était déjà renseigné un peu sur l'histoire de JS et j'ai bien aimé ta description ! Comme un pote qui te file ça entre deux anecdotes :) Un point d'amélioration selon moi : Les cuts en plein milieu des phrases m'ont pas mal écorché l'oreille niveau auditif ça m'a un peu gâché le plaisir d'écouter l'histoire. Plutôt essayer de refaire toute la phrase que de la couper / remonté ce qui casse ton flow de parole ( qui est cool pourtant ! ) Bonne continuation !
Du coup la suite m'intéresse alors je viens de m'abonner à ta newsletter. 👍 Après, on n'est pas obligé non plus d'utiliser ces bizarreries. Quand on est habitué à des langages plus rigoureux, n est aussi habitué à faire attention aux types des variables. 😉 En tout cas quand j'ai découvert Javascript, c'est la première chose qui m'a étonnée de pouvoir comparer des choux à des carottes! 😀
Les exemples que tu donnes, c'est juste parce que tu connais pas le langage, que tu comprends pas et que tu penses que c'est de la merde. 10 - '1' ça fait un cast implicite, donc ça fait 9. 10 + '1' par contre tu utilises l'opérateur de concaténation, donc ça cast 10 en string implicitement aussi. 3 > 2 > 1 c'est l'ordre d'interprétation, ce genre de code tu devrais jamais le faire en fait [] == [] tu compares pas les valeurs, mais les instances qui sont pas les même, c'est comme si tu faisais new Object() == new Object(), c'est deux instances différentes 0.1 + 0.2 c'est la gestion des chiffres à virgule, qui est pareil dans plein de langages mais qu'on te cache souvent mais c'est inhérent à la manière dont sont stockés les float
" 10 - '1' ça fait un cast implicite, donc ça fait 9. " c'est pas censé faire de cast de 1 , même si c'est effectivement le cas . "10 + '1' par contre tu utilises l'opérateur de concaténation, donc ça cast 10 en string implicitement aussi." c'est quand même illogique. pour le reste je suis d'accord
En ce qui concerne [] == [] => false, c'est normal. new Array() != new Array() parce que tu crées 2 instances (donc 2 adresses mémoires différentes ==> références différentes) ! Pour les autres bizarreries, ouais le JS est un langage à typage faible...... Mélanger les légumes et le dessert, ça ne peut que donner un plat inconsistant ;) Si le langage était mieux élaboré, il devrait remonter une exception !
Très bonne vidéo ! J'ai aimé le racontage d'histoire. En résumé, ce n'est pas des comportements "bizarres". Mais chaque moteur d'exécution à ses particularités. Par exemple En LUA, les tableaux commence à 1. En Python : False or "coacadmin" donne 'cocadmin' Ces comportements sont des contraintes spécifiques. Une bel anecdote (qui prouve que je suis vieux) la calculatrice Windows qui renvoyait 0.9999999 au lieu de 1 à certains calculs Haaaaa! Je sais pas quel mot tu as bloqué. Du coup, mon 1er comment passe pas. Haaaaaa! 🤣🤣🤣🤣
Excellente histoire! C’est cool de connaitre ce genre de chose! Mais du coup quelle est la version de javascript aujourd’hui? Il y a-t-il toujours une différence entre jscript et javascript? Qu’il y a-t-il dans edge, firefox ou chrome? Cela mériterai un autre episode :)
10 - '1' (un nombre moins une chaîne) n'a aucun sens, donc c'est interprété comme 10 - 1 = 9... Correct. 10 + '1' (un nombre plus une chaîne) n'a toujours aucun sens, et l'opération "+ chaîne" est une opération de concaténation, donc interprété comme "10" + "1" = "101"... Correct 3 > 2 > 1 enchaîne deux comparaisons booléenne : 3 > 2 = vrai... (pour rappel "vrai" = 1, "faux" = 0) donc 3 > 2 = true = 1 ... 1 > 1 = false... Correct. [] == [], tu compare deux objets dont on ne connaît rien (ni type ni contenu) qui sont à des adresses différentes... Ce sont donc deux objets différents, donc la comparaison ne peut être que fausse... Correct 0.1 + 0.2 donne un résultat en virgule flottante à la précision douteuse.... Comme dans tous les langages... Correct. Donc résumé : dans tes exemples, rien n'est pété, mis à part tes exemples. Tu n'est pas dév, mais un dév qui se poserait les mêmes questions que toi sur ces points, serait juste incompétent (et hélas il y en a énormément). Cela dit, je déteste JS, c'est un langage dégueulasse, mais tellement pratique.
Du coup t'as fais quoi ? C'est le problème avec ce genre de vidéo mensongère faîtes par des aigris qui veulent restreindre et décourager ceux qui veux être developpeur Javascript est très populaire et demandé pour travailler dans le dev front end et back end C'est un très bon langage, et très utiles pour le taff. Le mieux est d'apprendre front end et back end Et de ce que je vois on commence souvent par le front end qui permet de t'initialiser a la programmation Courage
2 + '1' == 21 car le + est considéré comme une concaténation 2 - '1' == 1 car le moins est une opération mathématique, c'est la seule chose possible ici [] == 0 car [] c'est un tableau vide, qui n'est pas nul (c'est pourquoi vous pouvez faire "if (tableauVide)") "" == 0 c'est un peu la même histoire, et c'est pourquoi [] == ""
Très intéressant ! De nos jours, que l'on souhaite ou non Javascript est devenu incontournable dans le Web. Avec tous les frameworks (react js, vue js, angular) basés sur Javascript c'est devenu un incontournable
Mdr comment l'affichage le merveilleux typage de JS dès la 1re seconde xd J'avais lu un article qui retraçait l'histoire de JS et you know what? J'en n'avais rien retenu parce que boring Grâce à toi c'est maintenant bien gravé dans mon cerveau 🙏🏾 Et quelque part, MS aura quand même réussi à fourrer son nez dans js avec typescript 😏
Pardon mais le pseudo terminal type Minitel n'a AUCUN rapport avec la ligne de commande. C'est un mode texte, par op. au mode graphique. On a des lignes commandes dans des outils comme Google Chrome (dans le debugger).
Pour le l'histoire de 10 + '1' et 10 - '1' Tout simplement car le + est prioritairement un "attacheur" de string Donc en gros ca va transformer le dernier nombre en string et le rattacher au 10 Tantdis que le - n'est pas un "attacheur" de string Et puis j'ai envie de dire, qui veut additioner les int et les str dans le but d'avoir un résultat xD Pour les tableau c simple chaque tableau c'est considéré comme object et vu que les object c unique bah voila
Moi je peux expliquer Parce que + c’est un operateur de concatenation et d’addition 😕 - c’est un operateur de soustraction Du coup quand tu fais un - '1537' il va implicitement faire un parse de ta chaine pour que ça soit un nombre Ce n’est pas bizarre si tu lis biens les specs du langage
Merci pour cette vidéo très cool ! Ça fait du bien de faire un petit bond dans le passé pour mieux comprendre ce qu’on utilise aujourdhui Est ce que tu envisagerait faire une vidéo sur PromQL? Ca serait super utile :)
Bill Gates en septembre 95 croyait plus en MSN qu'en internet. En 1995, j'avais acheté un pc sous Windows 95 et l'on pouvait se connecter au réseau propriétaire de microsoft MSN avec une communication par modem ( couts de téléphone). Cela faisait penser à FirstClass. Cela marchait bien mais fut doublé par internet. Vu les investissements, Microsoft insista, mais les actionnaires, ou le bon sens, incitèrent Microsoft a rejoindre la vague internet. En fait, internet était trop bien pour que l'on se confine à du Microsoft, et B.Gates à mis du temps à l'admettre.A cette époque on disait "tu crois en internet ?".....
Conclusion : business et sciences ça fait jamais bon ménage !!! Super vidéo, c'est cool pour les jeunes développeur qui pense que Js c'est le saint graal puisque on peut aller jusqu'a du Full stack avec et donc certains ne prennent pas le temps de visiter d'autre lagunages !!!
Je ne suis pas fane de JavaScript, mais essayons de voir les choses de plus près. Quand à ce qui concerne la comparaison des tableaux, cela n'est pas directement lié à JavaScript mais plutôt à la logique par défaut de comparaison des tableaux. En plus pour le 0.1 + 0.2, même en C si tu fait printf("valeur: %f", (0.1+0.2)); tu auras un truc du genre 0.30000 dans la console. Je pense que cela est due à la manière dont le processeur exécute les opérations arithmétique sur le nombre à virgule.
Je n'aime pas JavaScript. Pas tant à cause du langage, qu'à cause du fait qu'on a fait croire à des devs frontend qu'ils pouvaient devenir des devs backend avec nodejs parcequ'ils savaient déjà coder en javascript. Dans plein de cas, c'est un désastre. Cependant, la plupart des exemples que tu donnes s'expliquent parfaitement. Et il est bien souvent le même dans d'autres langages. Les crochets définissent une liste, qui est un objet. TU compares deux objets, ils sont différents. Tes comparaisons suivent une précédence des opérateurs, et les calculs sur les réels (float), c'est ralant mais le comportement est le même en Python. Cependant, ceux avec qui j'ai travaillé (comme Ops) connaissent bien une phrase que je sortais régulièrement (par rapport à Javascript ou pire, Scala) : "tout ça ne serait pas arrivé en PHP". :)
Netscape a ete fabriqué par celui qui avait crée mosaic qui est a l'origine le premier navigateur . C'était un devoir de master . L'univ la empêché de faire un produit conçurent pendant plusieurs année . Une fois le délai fini il a sortie netscape .
Le résultat 0.1 + 0.2 est partagé par presque tous les langages, cela vient de l'implémentation de l'IEEE 754 donc Java, Python, JavaScript ont tous ce défaut.
J’imagine bien que tu le sais en tant que senior 😂 mais il faut utiliser « === » au lieu de « == » qui fonctionne comme le == en C par exemple. Sans oublier Typescript qui vient donner un peu d’ordre et de rigueur
Tout à fait. Comme on évite maintenant d'utiliser le mot clé var, de déclarer des fonctions avec le mot clé function (sinon on peut l'utiliser avant de l'avoir déclarée comme pour var), .... On utilise maintenant du JS moderne et normalisé (ECMAScript)
Ça serait pas très compliqué de faire du versionning de JavaScript et de le faire évoluer vers un langage moins sale, sans casser le legacy code. Il suffirait de se référer à la version déclarée dans le code moderne.
C'est déjà ce qu'on fait un peu avec les transpileurs comme Babel; On spécifie la version de Javascript en entrée (normalisé par ECMAScript) et on donne la version voulue en sortie. Babel fait la conversion. Souvent on dit qu'on veut la dernière version et on transpile vers la version ES5 pour plus de compatibilité avec les navigateurs et on rajoute un tas de polyfill pour ajouter des fonctionnalités non supportés par les anciens navigateurs.
Pour ceux que ca interessent je vais poster d'autres exemples bizarre avec leurs explications dans ma newletter : mailchi.mp/280eeb9f0080/cocadmin
J'aime beaucoup ta manière d'expliquer correctement les choses.
Il y a l'histoire de Python aussi. Tout ce merdier pour finalement faire le language le plus bâtard du monde, venant du monde de Linux. Ils sont forts ces anti-Microsoft dans la connerie.
tu n as pas dit combien aol a racheté netscape...j me dmande si cetait bien moins que billou ne proposait qq annees plus tot. 😅😅
Hello, je viens de découvrir ta chaîne; J'aime beaucoup le style et le thème ! Clair, pas de fioriture, pas de comédie > abonné :)
404 - page not found 😢
Il n'existe aucune façon de représenter les chiffres à virgule en machine de façon exacte. 0,1 + 0,2 donne 0,300....4 dans tous les langages. Du moins ceux répondant à la norme IEEE 754 de représentation des nombres à virgules en machine, nombres appelés flottants. Cette norme s'appuie sur l'écriture scientifique du nombre en base 2.
Il faut se rappeler que le fait qu'un nombre aie une infinité de chiffres dépend de la base. Par exemple "un tiers " a une infinité de 3 après la virgule en base 10 : 0,333333.... En base 3 c'est simplement 0,1. De même 'un dixième' s'écrit simplement 0,1 en base 10 mais 0.0001100110011001100... avec 1100 qui se répète, en base 2. Pour stocker un nombre sur 32 ou 64 bits l'ordi est donc obligé de stocker des valeurs approchées . Puis la conversion en base 10 pour écriture à l'écran ne tombe plus juste. Voici d'autres résultats surprenants :
(a + b) + c n'est pas toujours égal à a + ( b + c)
a * (b + c) n'est pas toujours égal à a * b + a * c
(log(a**n) / log(a)) n'est pas toujours égal à n
Merci pour ton commentaire édifiant
Bon complément à la vidéo , merci.
Exactement, même en Java tu obtiens la même chose, pour le coup, l'exemple dans la vidéo n' est pas significatif. Par contre additionner des number avec des strings, c'est une autre histoire 😁
Merci pour ton commentaire. Très bon complément à la vidéo en effet.
Exact, j'ajouterai qu'il existe des langages pour le calcul formel qui permettent de palier à toutes les erreurs d'approximations/représentations qui s'accumulent dans les programmes écrits dans les majorité des langages. Par exemple Geogebra utilise giac/xcas pour éviter ces problèmes et bien d'autres. Giac, le moteur de calcul formel (qui donne bien "true" à 0.1 + 0.2 == 0.3) a été créé en parti dans le cadre d'un projet universitaire grenoblois
* 3 > 2 > 1
Pas certain, mais 3 > 2 est d'abord interprété, ce qui donne true
Puis true > 1 = false parce que true équivaut à 1
* [] = []
Les tableaux sont considérés comme des objets en JS
Et chaque objet étant unique, chaque tableau l'est aussi
Mis à part ces bizarreries, avec suffisemment de recul j'aime bien ce langage
Belle syntaxe, évolution régulière des standards, facilement modulable & extensible, full stack, prototypage rapide, pour les prijets sérieux y'a Typescript
Je me disais bien que y'avais une logique derrière ça, merci pour cette précision
Il n'y a rien de bizarre... il suffit de savoir que c'est un langage a typage dynamique... 10 + "1" donne 101 car le 10 de type Number est dynamiquement changer en type string... et le + en javascript entre deux chaînes de caractères sert à la concaténation tout simplement.... donc bizarre oui si on utilise pas l'outil pour ce qu'il est ....utilisez un tournevis pour enfoncer des clous et dites que ce marteau est bizarre.....
merci ! j'ai été provoqué par ce titre et cette miniature car je trouve le js super, que ce soit en web client ou même avec node.
@@luffystars3841 tout ce qu'il a montré me paraît plutôt logique, et même plus qu'en java:
> "string" == "string" //false
et au final au vu de la base du language, c'est plutôt logique
Après vérification, ta théorie sur les comparaisons est complètement vraie puisque 3>2==0 donne false et 3>2==1 donne true, le booléen étant fondé sur true et false, mais aussi sur 1 et 0
Sympa cette histoire ! Alors il y a bien un lien entre Java et JavaScript, c'est juste un lien historique et pas un lien logiciel :) On en apprend tous les jours ! Merci.
ce que je trouve marrant c'est que Lars Bak s'est barré quand Sun micro system a été racheté par Oracle. C'est marrant si on connait l'histoire qu'il y a eu avec MySQL et MariaDB lorsqu'Oracle a pointé le bout de son nez. Décidément, y'a des développeurs qui n'aiment pas du tout travailler pour Oracle. Je me demande bien pourquoi ^^
J'adore les histoires de technos raconté par toi, ce format est génial man 👍
Franchement mec n'hésite pas à étoffer tes vidéos, aller dans le technique etc c'est trop intéressant. La j'ai l'impression que tu limites pour des vidéos grand publique mais ces sujets méritent tellement plus.
Gg quand même t'es un vrai crac comme on en fait plus.
Faire une chaîne réellement technique, c'est l'assurance de ne pas avoir de vue...
Petit rappel utile pour la fin de l'histoire : c'est suite à la libération du code de Netscape qu'est né Mozilla qui deviendra plus tard Mozilla Firefox. Enjoy!
En effet,et c'est un gros deal, c'est le projet qui va porter l'open source avec GNU/Linux. Heureusement que Netscape a fini par ouvrir ses sources, sans cela Microsoft aurait bouffé le web et mis sous clefs ses standards
0.1 + 0.2 renvoie ça pour beaucoup de langage ^^ Dès qu'on stocke les nombres en virgules flottantes on doit faire des approximations
genre en python
@@Manon-4096 Dans des centaines de langages mais oui ;)
la reponse de python ma surppris 0.1+0.2 = 0.30000000000000004
!! pourtant un vrai langage de calcul scientifique...!!! Guindo nous dois des explication aussi
@@Manon-4096 Ouais mais ils ont créer une bibliothèque nommée "Decimal" avec la classe Decimal pour mettre en base 10 directement pour éviter cette erreur :p
@@MegaBaye la faute au calcul en virgule flottante. plus rapide que si on devait faire un type décimal basé sur l'arithmétique en base 10.
Excellente cette vidéo !
Intéressant aussi de mentionner l'ECMA, puisque quelques années après avoir été développé (un peu à la va vite), JavaScript avait quand même été standardisé, donnant naissance à ECMAScript (si j'ai bien suivi)
Et pour les personnes qui confondent Java et JavaScript, n'oubliez pas que "Java is to JavaScript what Car is to Carpet" 😉
Mais tu vises juste des cotes nuls pr dire que c'est un language bizzare genre ? 123 == '123' tu peux juste faire === ca va renvoyer faux, pour un array vide t'as pas besoin de mettre [] == [] tu peux juste faire [].length === 0 parce que sinon c'est quoi l'utilite de [] == [] et pr la virgule flottante c'est pas a cause de javascript c'est a cause de la facon dont le pc calcule ya ca sur python et dautre language aussi et il y'a toujours de la vix avec une fonction maths basique et pr le 3>2>1 c'est parce que 3>2 ca renvoie true ducoup ca devient true>1 ce qui est faux tu peux juste mettre 3>2 && 2>1... il y'a pratiquement solution pour tous, faut juste respecter la syntaxe et le fonctionnement du language
C'est globalement des moyens de contournements bateaux face a des vrais problèmes cachés dans JavaScript à cause de son développement foireux
Cette vidéo est incroyable, pour un passionner de programmation comme moi c’est du pur plaisir chaque seconde ta vidéo !
Ce que cet homme dit est faux, le JS est un langage digne des dieux. N'écoutez pas les sataniques qui tentent de le discréditer
@@maesmm Inventé par Dieu lui même.
C'est impressionnant la quantité de bêtises racontées en seulement 30 secondes (sans parler du reste).
• 0:07 : Tu demande une addition entre un nombre et un string, le langage étant en incapacité de le faire, il strigify les deux partis et les assemble avec un comportement tout à fait logique.
• 0:12 : On voit tout de suite que tu ne sais pas utiliser un opérateur Javascript correctement.
• 0:18 : Tu compares 2 objets qui POUR TOI sont identiques sauf que d'un point de vue machine, tu as 2 instance d'un Objet (ici un tableau) vide donc ayant 2 instances différentes, il te renvoie false.
• 0:26 : Tu connais les arrondis ? Tu sais, le fameux 1/3 qui vaut 3.3333333333....................................................4 ?
• 0:29 : "Et ce ne sont que 2 exemple parmi tannnnnnnt d'autres" : Tu es là pour assassiner un langage ou pour raconter l'histoire de celui-ci ?
• 3:10 On ne "programme pas un navigateur" : Ça ne veut juste rien dire.
• Toutes tes "petites anecdotes" (à 6:14 par exemple) sur le créateur de Javascript me font bien rire dans la mesure où elles ne relèvent que et uniquement de ton interprétation, à moins peut-être que tu as rencontré son créateur et que tu le côtoyais en 1995 !
• 6:30 A quel moment tu peux affirmer que ce langage, aussi minimaliste pouvait-il être à sa création, ai été créé en 10 jours ? Je suis en train de créer avec un ami un langage de programmation, nous avons commencé il y a 2 mois et il n'arrive toujours pas à la cheville de la première version du Javascript. Non pas parce qu'on n'avance pas mais uniquement parce que cela relève d'une complexité de compréhension juste... énorme. A noter que les ressources dont nous disposons aujourd'hui n'existaient pas en 1995 donc chapeau au créateur pour ce qu'il a créé.
Tu ne peux pas affirmer qu'il a été créé et 10 jours et lui cracher dessus 3 secondes plus tard en citant tous les problèmes liés à la sécurité.
D'autant plus que la notion de sécurité dans le web a énormément évolué et que les besoins de l'époque n'ont absolument rien à voir avec ceux de 1995.
• 7:50 (à peut prêt) tu dis que même il n'y a pas si longtemps, il était compliqué d'avoir une bonne compatibilité entre les navigateurs : c'est effectivement vrai.
Sauf que tu balance cette information juste après avoir mis en avant que le problème lié à la compatibilité avait pour cause : 2 langage différents.
Ça fait extrêmement longtemps que le problème ne vient plus de ces deux langage puisque l'un a totalement été dégagé au profit de l'autre.
Ici encore une fois, ton script est très mal agencé, mal organisé.. A moins que ta volonté de guillotiner le Javascript est réelle...
Ce qui est amusant d'ailleurs c'est que tu ne montre quasiment aucun code en Javascript dans ta vidéo de fond... (au mieux on a vu du WebAssembler.. mais qui n'est toujours pas du Javascript..)
Tout le discours que tu emplois est orienté pour dévaloriser, dénigrer le Javascript. Ce langage qui est omniprésent sur tous les supports, desktop, mobile, web, micro-logiciels embarqués (et j'en passe).
Qui es-tu pour affirmer que le Javascript "est un langage claqué au sol" ? Es-tu son créateur ?
Ta vidéo est mal montée, son storytelling aurait pu être sympa si tu ne racontais pas autant de bêtises à la minute.
Dès le début, tu assassine le langage en citant des exemples qui POUR TOI ne sont pas logiques, TOI qui est un SYSTADMIN et non un DEVELOPPEUR.
Ta vidéo est orientée, sans aucune impartialité, (presque) sans aucune recherche.
Elle est décevante en comparaison de ton contenu habituel.
Et c'est vraiment dommage parce que le concept, celui de raconter des histoires autours des langages est très intéressante.. s'il n'y avait pas cette orientation malsaine.
Je reconnais, il l'aurait eu 2/20 à l'exam Web de ma promo x)
Force a toi pour ton complio 😂. La THL (Théorie des Langages) qui revient en force tout un coup...
rah ouais ta meuf t'a quitté ou quoi?
@@yassinedamiri1063 en soit la compréhension des étapes est assez logique mais la mise en place, c’est autre chose 😅
Wahh, je viens de perdre 5 min a lire un commentaire qui éclate un gars qui met a disposition une video gratuite et dont le titre est explicite !
Alors j'en prend 5, juste pour te dire d'aller ... essayer d'autres languages pour comprendre le sens de la video.
Et les exemples cités ne sont pas faux... juste illogique de certains points de vue.
Si il «strignifie» dans un sens pourquoi pas dans l'autre ?
Un tableau = objet JS = instances ... sans rien demandé .. normal ?
Tu sais ce que c'est un tableau en C ?
Les perfs, la sécurité, compatibilité, .. sont toujours des problèmes actuels..
Faut avouer JS veut tout faire a ta place mais si tu ne connais pas le comportements de son «runtime» c'est très abstraits et illogique !
C'était juste pour faire un commentaire de plus pour cette excellente video. 😂
Super intéressant comme d'habitude mais très court, j'espère que tu approfondiras!
Javascript a eu plusieurs vies, celle que tu as présenté qui introduit l'ère des incompatibilités entre les navigateurs, l'ère JQuery qui a permis de compenser ça... à sa manière, l'ère post ES6 qui a ouvert la porte à de gros projets grâce à l'arrivée des classes... Et depuis, NodeJS, le Typescript et tout ce qui permet aujourd'hui de faire du Fullstack uniforme et solide basé sur JS).
Vidéo excellente par le contenu, l'humour et le montage, merci :)
Il n'y a pas réellement de classe en JS, c'est juste un raccourci pour faire la même chose qu'avant.
La comparaison des 2 tableaux vides qui donnent false, c'est parce que tu compares 2 objets, et dans javascript les arrays sont des objets.
Or, également les objets sont stockés (et donc également comparé) par référence dans la stack (plutôt heap, les objets sont stockés dans la heap en JS, la stack ne stock que la référence à l'adresse dans la heap), et vu qu'ils ont 2 références différentes car grossomodo tu déclares 2 tableaux différents, ils ne sont pas égaux pour JS.
Il y a d'autres techniques pour comparer des tableaux en JS (notamment en détournant un peu via JSON.stringify..)
J'ai remarqué seulement à la fin en écrivant que la vidéo date d'il y a 2 ans, mais maintenant que j'ai écrit ça, je vais quand même poster :D !
C++: "Tu sais, interrompre le programme en cas d'erreurs, c'est bien"
JS: "NOOOONNNN !!!"
Beaucoup de comportements bizarres en JS viennent du fait qu'il n'est pas typé, et donc quand on fait des comparaisons entre données de types différents (ex : float vs string) le language fait des conversion à sa sauce, ce qui donne parfois des résultats bizarres.
0:25 Alors ça, c'est simplement parce qu'aucun de ces nombres en binaire ne sont finis (0.1=0.0001100110011... et 0.2=0.001100110011...), donc pour pouvoir les stocker, il faut le faire sous forme d'arrondis. Et forcement, après, quand on fait des calculs avec, il y a des erreurs. Beaucoup de langages on ce problème.
Le Js est certainement le langage de haut niveau le plus permissif qui existe. Possibilité de faire des opérations entre integer et string sans déclencher une erreur. Possibilité d'appeler une fonction sans l'avoir déclarée au préalable, le fameux hoisting. :) Netscape mon premier navigateur. Tu me rajeunis pas. Il y a 25 ans, je n'aurai pas misé un bouton de culotte sur le JS ^^. Aujourd'hui avec l'explosion du web, et surtout de Google c'est devenu un incontournable. Ceci dit il a sacrément évolué ^^.
PS : dans ton titre une petite coquille. Langage s'écrit sans le "u" en bon françois :) . Sinon comme d'hab, gg à toi.
J'adore ta façon de raconter des histoires. C'est très intéressant et j'ai appris plein de choses. Le montage est top. Continue comme ça !
C'était vachement sympa ! Des petites histoires comme ça liées à l'IT ça fait toujours plaisir :D Hâte d'en voir d'autres
ça fait un an exactement que je fais du NodeJs / Javascript pour mon entreprise et du coup vidéo très intéressante du point de vue historique. J'avais fait beaucoup de C avant du coup les bizarreries j'en ai vu assez peu. Il faut juste penser à bien cast les variables dans le type souhaité quand on est pas sur plutôt que de tout laisser en automatique et avoir des surprises plus tard. (ou faire du typescript ça marche aussi)
La gestion d'erreur via try catch est du coup un point essentiel dans le langage ça permet de gérer les bizarreries sans faire crash le programme.
Le garbage collector existe maintenant, une fois qu'une variable n'a plus de référence ou qu'on sort du scope actuel la mémoire est libérée.
Le language est très plaisant à utiliser (on fait beaucoups en codant peu) et surtout très facile à prendre en main pour des débutants, le plus important étant de ne pas coder en mode YOLO car le language est assez permissif.
et l'ES6 dispo depuis 2015 un pur plaisir
sinon t'a essayer de faire 0.1 + 0.2 sur d'autres langages de programmation?
J'ai fais un mois de Javascript, mais venant du C/C++, j'ai eu envie de m'émasculer avec les dents dés les premières lignes de code !! Je suis heureux de ne plus avoir besoin d'utiliser celui-ci, mais ceux qui utilisent ce langage, ont tout mon respect
Après le langage a énormément évolué depuis l'ES6 et aussi avec l'arriver de Typescript
Hey ça fait un moment que j'étais pas passé, c'est vraiment stylé comme vidéo, j'aime beaucoup le rythme et le format, il y a pleins d'infos sans ce que soit trop dur à encaisser!
Tu t'es grave fait à RUclips c'est cool haha :)
Juste pour le [] == [] c est parce que javascript ne regarde pas le contenus des tableaux, chaque tableaux js a une addresse memoire qui correspond a l endroit ou il est stocké sur l ordinateur.
Js compare ensuite si le tableau1 EST le tableau2, or les deux contienne les memes choses, mais ne sobt pas la meme entitée
Exemple plus simple, si j ai deux sacs remplis de 3 oranges, je ne peux pas dire que ce sont les memes sacs, ce sont deux sacs differents qui contiennent les memes chose
C'est sans compter les développeurs extrêmement talentueux qui font de JS un langage qui est maintenant sur tous les fronts et dans toutes les stacks
Quelle belle histoire 😄 en tant que développeur on dirait qu'on passe une bonne soirée je dirais
Tes vidéos storytelling sont des MASTERCLASS !
Énorme malaise ce titre et les premières secondes. On sent bien le mec qui n'a d'expérience qu'avec très peu de langages. Absolument tous les points énoncés sont logiques et faut vraiment faire aucun effort pour ne pas les comprendre. Je crois que le pire de tous c'est quand tu parles de 0.1 + 0.2 != 0.3, c'est à se demander si t'as déjà utilisé des flottants une fois dans ta vie.
Enfin de toute façon vu le titre j'imagine que le but de cette vidéo c'est juste de faire des clics avec du "sensationnel" auprès de débiles.
J’adore ta manière de raconter notre histoire! GG
Notre histoire ?
Bah quitte à être à contre courant, j'ai passé des bons moments avec javascript (sous angular 1/nodejs sur des grosses applications web) et justement son coté non typé. Ca m'a rarement fait défaut. Pour moi les langages objets sont fait pour prendre par la main et rassurer le développeur mais rallonge le temps de développement.
le problème de l'objet c'"est que beaucoup ne savent pas l'utilisé et font n'importe quoi (sur-heritage par exemple, une vrai catastrophe)
Magnifique , je visionnais la video sur ma télé je suis allé sur mon téléphone juste pour liker et commenter, tes vidéos sont tjr aussi passionnantes et cool a regarder ! Keep it up 👍🏽
Yo ! Super vidéo ! Quel certification d’après toi tu recommande de passer en ce moment chef ?
Ça me fait tellement plaisir de lire le titre de cette vidéo ! Merci ! Et bravo :-)
Très intéressant, je m'était déjà renseigné un peu sur l'histoire de JS et j'ai bien aimé ta description ! Comme un pote qui te file ça entre deux anecdotes :)
Un point d'amélioration selon moi : Les cuts en plein milieu des phrases m'ont pas mal écorché l'oreille niveau auditif ça m'a un peu gâché le plaisir d'écouter l'histoire. Plutôt essayer de refaire toute la phrase que de la couper / remonté ce qui casse ton flow de parole ( qui est cool pourtant ! )
Bonne continuation !
T as un site de tous les logiciels super a la mode en société de codage ?
c'est quoi la musique en arriere plan ? merci d'avance
Raconte nous comment créer un langage coca ! ^^
Petite pépite cette chaîne !
c'est une bonne idée de video haha
@@cocadmin Bon après on sait que le titre sera : j'ai créé un langage de programmation ... pour miner des bitcoins :D
Heureusement, en 2022, on a TypeScript 😍
Enfin un truc pas trop mal de Microsoft, justement.
Du coup la suite m'intéresse alors je viens de m'abonner à ta newsletter. 👍
Après, on n'est pas obligé non plus d'utiliser ces bizarreries. Quand on est habitué à des langages plus rigoureux, n est aussi habitué à faire attention aux types des variables. 😉
En tout cas quand j'ai découvert Javascript, c'est la première chose qui m'a étonnée de pouvoir comparer des choux à des carottes! 😀
Une vidéo qui mérite 1 million de vues ! On adore !
Quel plaisir ce genre de format
Les exemples que tu donnes, c'est juste parce que tu connais pas le langage, que tu comprends pas et que tu penses que c'est de la merde.
10 - '1' ça fait un cast implicite, donc ça fait 9.
10 + '1' par contre tu utilises l'opérateur de concaténation, donc ça cast 10 en string implicitement aussi.
3 > 2 > 1 c'est l'ordre d'interprétation, ce genre de code tu devrais jamais le faire en fait
[] == [] tu compares pas les valeurs, mais les instances qui sont pas les même, c'est comme si tu faisais new Object() == new Object(), c'est deux instances différentes
0.1 + 0.2 c'est la gestion des chiffres à virgule, qui est pareil dans plein de langages mais qu'on te cache souvent mais c'est inhérent à la manière dont sont stockés les float
" 10 - '1' ça fait un cast implicite, donc ça fait 9. " c'est pas censé faire de cast de 1 , même si c'est effectivement le cas .
"10 + '1' par contre tu utilises l'opérateur de concaténation, donc ça cast 10 en string implicitement aussi." c'est quand même illogique.
pour le reste je suis d'accord
Evan, l'opérateur "-" est un opérateur arithmétique seulement donc les caste se feront toujours vers des nombre
@@the_csb Oui cela est évident , dans ce cas je vois pas pourquoi JS s'autorise à le faire
J’aimerais savoir ça fait combien de temps que tu fais du JS ?
roh mais javascript c un langage fun, il a du charme, une vrai personalité
pas comme C++ que personne n'invite au soirée
J'adore ces petits vidéo sur l'histoire de l'informatique. Merci 👍🏽👍🏽
Il ne faux pas oublier que Microsoft a crée Typescript au 9 février 2012
En ce qui concerne [] == [] => false, c'est normal. new Array() != new Array() parce que tu crées 2 instances (donc 2 adresses mémoires différentes ==> références différentes) ! Pour les autres bizarreries, ouais le JS est un langage à typage faible...... Mélanger les légumes et le dessert, ça ne peut que donner un plat inconsistant ;) Si le langage était mieux élaboré, il devrait remonter une exception !
Très bonne vidéo ! J'ai aimé le racontage d'histoire.
En résumé, ce n'est pas des comportements "bizarres".
Mais chaque moteur d'exécution à ses particularités.
Par exemple
En LUA, les tableaux commence à 1.
En Python : False or "coacadmin" donne 'cocadmin'
Ces comportements sont des contraintes spécifiques.
Une bel anecdote (qui prouve que je suis vieux) la calculatrice Windows qui renvoyait 0.9999999 au lieu de 1 à certains calculs
Haaaaa! Je sais pas quel mot tu as bloqué. Du coup, mon 1er comment passe pas. Haaaaaa! 🤣🤣🤣🤣
Ce format de vidéos est juste génial , est ce qu'il y aura d'autres ?
si la vidéo marche bien oui :)
Hé ben maintenant, il va falloir poursuivre avec ce format super intéressant.
J'en pris un coup de vieux en voyant Netscape mdr je me revois au collège. Merci pour l'histoire en tout cas très intéressant.
Excellente histoire! C’est cool de connaitre ce genre de chose!
Mais du coup quelle est la version de javascript aujourd’hui?
Il y a-t-il toujours une différence entre jscript et javascript? Qu’il y a-t-il dans edge, firefox ou chrome? Cela mériterai un autre episode :)
jscript n'existe plus. la derniere version de javascript s'apelle ecmascript 2022 mais tout le monde dit javascript :)
Elles sont top tes vidéos ! Et merci pour le son modem 56 k ... toute mon adolescence !!!
Tes vidéos sont de grande qualité, merci beaucoup.
et comment chrome est passé devant explorer ?
10 - '1' (un nombre moins une chaîne) n'a aucun sens, donc c'est interprété comme 10 - 1 = 9... Correct.
10 + '1' (un nombre plus une chaîne) n'a toujours aucun sens, et l'opération "+ chaîne" est une opération de concaténation, donc interprété comme "10" + "1" = "101"... Correct
3 > 2 > 1 enchaîne deux comparaisons booléenne : 3 > 2 = vrai... (pour rappel "vrai" = 1, "faux" = 0) donc 3 > 2 = true = 1 ... 1 > 1 = false... Correct.
[] == [], tu compare deux objets dont on ne connaît rien (ni type ni contenu) qui sont à des adresses différentes... Ce sont donc deux objets différents, donc la comparaison ne peut être que fausse... Correct
0.1 + 0.2 donne un résultat en virgule flottante à la précision douteuse.... Comme dans tous les langages... Correct.
Donc résumé : dans tes exemples, rien n'est pété, mis à part tes exemples. Tu n'est pas dév, mais un dév qui se poserait les mêmes questions que toi sur ces points, serait juste incompétent (et hélas il y en a énormément).
Cela dit, je déteste JS, c'est un langage dégueulasse, mais tellement pratique.
Salut j’ai pas encore regardé la vidéo, mais j’ai lu le titre. Tu viens de te faire un ennemi puissant Coca. Très puissant .
Bon ok 30 secondes de videos je retire ce que j’ai dis .t’as raison …
Très bien raconté ! Du coup la version qu'on utilise actuellement découle du reverse engineering de Microsoft ?
J’aime bien “sentir les flairons” aussi 🤣 GG la video 🙌🏾
Pour le coût 0.1+0.2 ça fait 0.300000...0004 sur quasi tout les languages
ducoup j'apprends JavaScript ? ou je me lance direct back end avec php. et apres je me consacre au langage script C et python
Du coup t'as fais quoi ?
C'est le problème avec ce genre de vidéo mensongère faîtes par des aigris qui veulent restreindre et décourager ceux qui veux être developpeur
Javascript est très populaire et demandé pour travailler dans le dev front end et back end
C'est un très bon langage, et très utiles pour le taff.
Le mieux est d'apprendre front end et back end
Et de ce que je vois on commence souvent par le front end qui permet de t'initialiser a la programmation
Courage
2 + '1' == 21 car le + est considéré comme une concaténation
2 - '1' == 1 car le moins est une opération mathématique, c'est la seule chose possible ici
[] == 0 car [] c'est un tableau vide, qui n'est pas nul (c'est pourquoi vous pouvez faire "if (tableauVide)")
"" == 0 c'est un peu la même histoire, et c'est pourquoi [] == ""
Exactement, mais bon il le sait il veut juste faire du buzz
Très intéressant ! De nos jours, que l'on souhaite ou non Javascript est devenu incontournable dans le Web.
Avec tous les frameworks (react js, vue js, angular) basés sur Javascript c'est devenu un incontournable
Mais du coup qu'est devenu le JScript après la mort de iexplorer ? Mort ou remis dans Edge ?
Mort !
@@Vincent_A.Freeman ok
Mdr comment l'affichage le merveilleux typage de JS dès la 1re seconde xd
J'avais lu un article qui retraçait l'histoire de JS et you know what? J'en n'avais rien retenu parce que boring
Grâce à toi c'est maintenant bien gravé dans mon cerveau 🙏🏾
Et quelque part, MS aura quand même réussi à fourrer son nez dans js avec typescript 😏
mais !! tes vidéos sont aussi douces que du miel, t’es un génie !
Incroyable la vidéo. Que du plaisir
Super vidéo bro
j'adore !! cette histoire je l'ai lu dans un bouquin et j'en avais parlé en cours l'année dernière ^^
Pardon mais le pseudo terminal type Minitel n'a AUCUN rapport avec la ligne de commande. C'est un mode texte, par op. au mode graphique. On a des lignes commandes dans des outils comme Google Chrome (dans le debugger).
Ce message à caractère informatif était vraiment intéressant 😜 Continue comme ça!
Passionnant, ludique, et drôle ce genre de vidéo. J’adore ! Merci.
Vachement cool comme format, fin je pourrais t’écouter parler d’internet etc all day long
T’es bon la dedans 👏🏼
Mdr le « il est entre 2 étaux » avec l’effect 🤣🤣
Que de bons souvenirs JavaScript dans les années 2000 ! 😀
Ou est la video sur minecraft?
(Je suis pas fan de ce jeu tu a juste dit que tu ferait une injection en python et je suis chaud pour voir ça
Pour le l'histoire de 10 + '1' et 10 - '1'
Tout simplement car le + est prioritairement un "attacheur" de string
Donc en gros ca va transformer le dernier nombre en string et le rattacher au 10
Tantdis que le - n'est pas un "attacheur" de string
Et puis j'ai envie de dire, qui veut additioner les int et les str dans le but d'avoir un résultat xD
Pour les tableau c simple chaque tableau c'est considéré comme object et vu que les object c unique bah voila
Exactement ça s'apprend d'ailleurs dans les premiers cours javascript
Awesome storytelling ! merci pour la petite histoire
J’adore ce format avec un peu d’Histoire 🙏 merci.
Hello connais tu un navigateur de texte compatible JavaScript ?
non mais pourquoi tu utilises un navigateur text ?
@@cocadmin Il veut pas un éditeur de texte type atom ou visual studio code?
Moi je peux expliquer
Parce que + c’est un operateur de concatenation et d’addition 😕
- c’est un operateur de soustraction
Du coup quand tu fais un - '1537' il va implicitement faire un parse de ta chaine pour que ça soit un nombre
Ce n’est pas bizarre si tu lis biens les specs du langage
0.1 + 0.2 = 0.30000000000000004 c'est une question de virgule flottante. C'est le cas sur tous les langages.
8 mins... pour une histoire si complète et complètement compréhensible. J'adore ce type de contenu ! On t'en remercie continue :DD
Il y a des solution a tout par exemple le 10 - '1' le moins sert a soustraire alors que le plus dans une string sert a les mettre ensemble
0:27 tous les language vont te donner le meme resultat
Merci pour cette vidéo très cool ! Ça fait du bien de faire un petit bond dans le passé pour mieux comprendre ce qu’on utilise aujourdhui
Est ce que tu envisagerait faire une vidéo sur PromQL? Ca serait super utile :)
Bill Gates en septembre 95 croyait plus en MSN qu'en internet.
En 1995, j'avais acheté un pc sous Windows 95 et l'on pouvait se connecter au réseau propriétaire de microsoft MSN avec une communication par modem ( couts de téléphone).
Cela faisait penser à FirstClass. Cela marchait bien mais fut doublé par internet. Vu les investissements, Microsoft insista, mais les actionnaires, ou le bon sens, incitèrent Microsoft a rejoindre la vague internet. En fait, internet était trop bien pour que l'on se confine à du Microsoft, et B.Gates à mis du temps à l'admettre.A cette époque on disait "tu crois en internet ?".....
Tu peux expliquer l'histoire de forge (installer de mod Minecraft)
Conclusion : business et sciences ça fait jamais bon ménage !!! Super vidéo, c'est cool pour les jeunes développeur qui pense que Js c'est le saint graal puisque on peut aller jusqu'a du Full stack avec et donc certains ne prennent pas le temps de visiter d'autre lagunages !!!
Je ne suis pas fane de JavaScript, mais essayons de voir les choses de plus près.
Quand à ce qui concerne la comparaison des tableaux, cela n'est pas directement lié à JavaScript mais plutôt à la logique par défaut de comparaison des tableaux.
En plus pour le 0.1 + 0.2, même en C si tu fait printf("valeur: %f", (0.1+0.2)); tu auras un truc du genre 0.30000 dans la console. Je pense que cela est due à la manière dont le processeur exécute les opérations arithmétique sur le nombre à virgule.
merci j'adore ce genre de vidéo c'est génial !!
Dommage que tu ne parle pas de l'histoire après Netscape et comment tous les navigateurs on fait pour utiliser la même version de JS, ...
On veut la suite sur Firefox!
Je n'aime pas JavaScript. Pas tant à cause du langage, qu'à cause du fait qu'on a fait croire à des devs frontend qu'ils pouvaient devenir des devs backend avec nodejs parcequ'ils savaient déjà coder en javascript. Dans plein de cas, c'est un désastre.
Cependant, la plupart des exemples que tu donnes s'expliquent parfaitement. Et il est bien souvent le même dans d'autres langages. Les crochets définissent une liste, qui est un objet. TU compares deux objets, ils sont différents. Tes comparaisons suivent une précédence des opérateurs, et les calculs sur les réels (float), c'est ralant mais le comportement est le même en Python.
Cependant, ceux avec qui j'ai travaillé (comme Ops) connaissent bien une phrase que je sortais régulièrement (par rapport à Javascript ou pire, Scala) : "tout ça ne serait pas arrivé en PHP". :)
Netscape a ete fabriqué par celui qui avait crée mosaic qui est a l'origine le premier navigateur . C'était un devoir de master . L'univ la empêché de faire un produit conçurent pendant plusieurs année . Une fois le délai fini il a sortie netscape .
Le résultat 0.1 + 0.2 est partagé par presque tous les langages, cela vient de l'implémentation de l'IEEE 754 donc Java, Python, JavaScript ont tous ce défaut.
T as un lien pour expliquer ? Merci
J’imagine bien que tu le sais en tant que senior 😂 mais il faut utiliser « === » au lieu de « == » qui fonctionne comme le == en C par exemple.
Sans oublier Typescript qui vient donner un peu d’ordre et de rigueur
Tout à fait. Comme on évite maintenant d'utiliser le mot clé var, de déclarer des fonctions avec le mot clé function (sinon on peut l'utiliser avant de l'avoir déclarée comme pour var), .... On utilise maintenant du JS moderne et normalisé (ECMAScript)
Je cherchais le commentaire avant de taper 😉
Ça serait pas très compliqué de faire du versionning de JavaScript et de le faire évoluer vers un langage moins sale, sans casser le legacy code. Il suffirait de se référer à la version déclarée dans le code moderne.
pas bete. J'imagine qu'il y a une raison technique qui l’empêche mais je ne la connais pas
@@cocadmin À mon avis c’est juste que le TC39 ne veut pas diviser la communauté entre deux versions.
C'est déjà ce qu'on fait un peu avec les transpileurs comme Babel; On spécifie la version de Javascript en entrée (normalisé par ECMAScript) et on donne la version voulue en sortie. Babel fait la conversion. Souvent on dit qu'on veut la dernière version et on transpile vers la version ES5 pour plus de compatibilité avec les navigateurs et on rajoute un tas de polyfill pour ajouter des fonctionnalités non supportés par les anciens navigateurs.
4:40 petite erreur. Lorsqu'il s'enferme durant 10 jours ce n'est pas "babababa" qu'il a fait. Il avait démenti cette rumeur durant un interview.
Belle vidéo ! Etant développeur Front End je comprends ce que tu veux dire ! :)
Pour info je ne suis pas abonné. Mais encore une vidéo de ce genre et je serai dans l'obligation de m'abonner ! :)