J’aime le JavaScript, mais il n’en a pas toujours été ainsi.
Pensés limitantes
Ce qui m’a empêché de l’apprécier, c’est cette mauvaise habitude presque systématique que j’avais de vouloir transposer quelque chose que je ne connaissais pas (JavaScript), sur quelque chose que je connaissais (C#, JAVA). Je crois que c’est le lot de tout le monde, vouloir simplifier les choses pour les retenir, et les comparer avec une base commune.
Et avec le JavaScript, ça marchait… parfois, et parfois pas.
Dans mon cas, à cause de mon ignorance, couplé à mon égocentrisme il n’y avait qu’une possibilité : le JavaScript avait un problème, et moi j’avais raison, parce que dans mon étude de C#, de Java et même par certains aspects de PHP : certains problèmes que je rencontrais avec JavaScript, n’y existait pas. Ça ne me semblait pas si « compliqué » dans mes langages de Class appris en classe.
Et puis, je me suis mis de l’autre côté de la pièce. Soit le langage était vraiment mal foutu —comme je m’accordais à le penser— soit c’est moi qui n’avait pas compris quelque chose. Il y avait peut-être quelque chose qui m’échappait. Et s’il résolvait d’autres problèmes que j’avais avec le C#, était t-il même possible qu’en essayant de l’utiliser d’une autre manière qu’avec un langage de Class, ces problèmes ne se poseraient plus ?
Le JavaScript ? Si compliqué ?
Et de la même manière que je pourrais regarder une photo, sensé être prise sur la lune, et que je jugerais trop éclairée pour qu’elle ne soit pas un fake, est-il possible que je ne me soit pas dit que le JavaScript était trop bancale ? Limité ? Tricheur ?
Il serait tout aussi possible que ce soit moi qui n’est pas assez de compréhension sur les propriétés de réflexion de la lumière sur un sol lunaire et de connaissances sur les imperfections dû à la qualité optique de l’époque. Ainsi ce serait moi qui ne serait pas capable d’en comprendre l’authenticité… La solution devenait alors simple, il suffisait de faire l’effort de comprendre.
Oui, en JavaScript, on peut finir par avoir une architecture orientée objet, fortement typée et basée sur de l’héritage de classe, merci ES6 et TypeScript… Vous nous l’avez bien « adapté » notre langage à problème… Mais à quelle prix…
Et si vous passiez du côté face, au côté pile ?
Vous savez quoi, JavaScript n’est pas un langage objet fortement typé avec héritage basé sur les classes, C’est un langage faiblement typé, à typage dynamique, à portée statique, supportant l’objet et supportant l’héritage par délégation basé sur des prototypes. Et tant que vous n’accepterez pas qu’un même monde puisse-être vu de plusieurs manières différentes, vous ne pourrez que penser que « vous » détenez la vérité, comme je l’ai longtemps pensé. J’ai a présent compris que si une techno faisait parlez d’elle plus de 3 mois, et que ça me semblait non légitime, ce n’était pas qu’un effet de mode, mais qu’il y avait forcément quelque chose qui m’échappait, et quelque chose à en apprendre.
Si vous souhaitez mieux comprendre le JavaScript d’un point de vu technique, je vous invite à le redécouvrir par cette porte d’entrée que j’alimente au fur et à mesure, en français :
Bonne lecture.
PS : étant de très loin un très bon candidat à l’imperfection, si lors de votre lecture vous relevez des fautes (orthographiques ou de compréhension), faites moi progresser avec vos retours !