# Qu'est-ce que le JavaScript
# ECMAScript ou JavaScript
JavaScript a été créé en mai 1995, en 10 jours, par Brendan Eich. Il s'est appelé tout d'abord "Mocha", puis "LiveScript" et enfin "JavaScript" après un lobbying de Sun Microsystems (qui lançait à la même époque son langage "Java", qui n'a rien à voir (opens new window) - Sun a été racheté par Oracle en 2010).
C'est un langage standardisé sous le nom ECMA-262 par Ecma International, autrefois ECMA.
JavaScript et ECMAScript sont des noms interchangeables, même si on peut faire une petite nuance en disant que « JavaScript est une implémentation du standard ECMAScript ».
Standardisé pour la première fois en juin 1997 :
- ECMAScript 1, puis 2 un an après (peu de modif, juste pour être raccord avec ISO)
- ES3 : Ajout de RegExp, try/catch, do-while, switch...
- ES4 : Abandonné en 2008 (ActionScript en était une implémentation)
- ES5 : Déc 2009 (strict mode, getters & setters, Array.prototype.reduce, map, filter)
- ES5.1 : Juin 2011 (à cause de ISO encore)
- ES6 : juin 2015 Grosse MAJ
- ES7 : Toute petite mise à jour, première à sortir avec le nouveau process de sortie des versions
- Tous les ans une nouvelle version
C'est le comité technique TC39 (Technical Commitee) qui fait évoluer le JavaScript : GAFAM, Mozilla, Opera, Twitter...
On ne peut pas casser le web : les défauts de JS ne peuvent pas être corrigés
# Les outils
- VSCode (opens new window)
- parcel (opens new window)
- Git (opens new window)
- Github (opens new window)
Il en existe d'autres :
- runJS (opens new window) pour tester son code JavaScript en local
- Codesandbox (opens new window) pour créer des projets à distance, éventuellement lié à github
- Codepen (opens new window) pour tester des bouts de code HTML/CSS/JavaScript
- jsbin (opens new window) idem
- jsfiddle (opens new window) idem
# Les erreurs silencieuses
En JavaScript, il y aura des erreurs qui ne se verront pas : elles n'apparaîtront pas dans la console du navigateur, et elles ne provoqueront pas l'arrêt de l'exécution du code.
Deux raisons à cela :
- JavaScript est fait pour être facile à prendre en main
- La gestion des exceptions n'est venue qu'avec la version 3 (ES3)
# Les buzzwords (pas importants pour les débutants)
JavaScript est un langage
- de haut niveau (On ne gère pas directement la mémoire) : Du plus bas niveau au plus haut niveau, on trouve :
- Le code machine
- L'assembleur
- Des langages bas niveau comme le C ou le C++
- Des langages haut niveau comme le Javascript ou le Python
- dit "interprété" mais ne l'est pas vraiment, surtout avec les JIT Compiler des env modernes (V8 et spidermonkey)
- à typage faible dynamique
- Multi-paradigme : impératif, orienté objet, programmation fonctionnelle
- à héritage prototypal (on verra plus tard) : un objet est lié à un prototype (ou pas), qui lui-même peut être lié à un prototype, etc.
C'est aussi un langage
- Monothread : notre code est exécuté dans un seul thread
- Avec un ramasse-miette ou Garbage collector ("GC") : on ne gère pas nous-mêmes les allocations en mémoire et sa gestion
- Non-bloquant
- À boucle d'évènement
- Compilé JIT (just-in-time) : permet l'optimisation du code de certaines fonctions
Cette dernière liste rassemblent des termes compliqués qu'on n'expliquera pas tout de suite.