Créé en 1995, JavaScript a parcouru un très long chemin depuis ses modestes débuts.
C'était le premier langage de script pris en charge nativement par les navigateurs Web, et grâce à cela, il a acquis un avantage concurrentiel sur tout autre langage et c'est encore aujourd’hui le seul langage de script que nous pouvons utiliser pour créer des applications Web.
D'autres langages existent, mais tous doivent compiler en JavaScript - ou plus récemment en WebAssembly, mais ceci est une autre histoire.
Au début, JavaScript n'était pas aussi puissant qu’aujourd’hui, et il était principalement utilisé pour les animations fantaisistes et la merveille connue à l'époque sous le nom de Dynamic HTML.
Avec les besoins croissants que la plate-forme Web exigeait (et continue d'exiger), JavaScript avait la responsabilité de se développer également, pour répondre aux besoins de l'un des écosystèmes les plus utilisés au monde.
JavaScript est maintenant largement utilisé également en dehors du navigateur. La montée en puissance de Node.js au cours des dernières années a débloqué le développement backend, autrefois le domaine de Java, Ruby, Python, PHP et des langages côté serveur plus traditionnels.
JavaScript est maintenant aussi le langage qui alimente les bases de données et bien d'autres applications, et il est même possible de développer des applications embarquées, des applications mobiles des applications, des applications TV et bien plus encore. Ce qui a commencé comme une petite langage dans le navigateur est maintenant le langage le plus populaire au monde.
Il peut pratiquement tout faire. C'est tellement populaire que tout ce qui apparait de nouveau aura une sorte d'intégration JavaScript à un moment donné.
JavaScript est un langage de programmation qui est :
haut niveau : il fournit des abstractions qui vous permettent d'ignorer les détails de la machine sur laquelle il s'exécute. Il gère automatiquement la mémoire avec un ramasse-miettes, de sorte que vous pouvez vous concentrer sur le code au lieu de gérer la mémoire comme d'autres langages comme C en auraient besoin, et fournit de nombreuses constructions qui vous permettent de gérer des variables et des objets très puissants.
dynamique : contrairement aux langages de programmation statiques, un langage dynamique exécute au moment de l'exécution la plupart des choses qu'un langage statique fait au moment de la compilation. Cela a des avantages et des inconvénients, et cela nous donne des fonctionnalités puissantes comme le typage dynamique, la liaison tardive, la réflexion, la programmation fonctionnelle, la modification de l'exécution des objets, les fermetures et bien plus encore. Ne vous inquiétez pas si ces choses vous sont inconnues - vous les saurez toutes à la fin du cours.
typé dynamiquement : une variable n'impose pas de type. Vous pouvez réaffecter n'importe quel type à une variable, par exemple en affectant un entier à une variable contenant une chaîne.
faiblement typé : contrairement au typage fort, les langages faiblement typés n'imposent pas le type d'un objet, ce qui permet plus de flexibilité mais nous refuse la sécurité et la vérification de type (quelque chose que TypeScript - qui s'appuie sur JavaScript - fournit)
interprété : il est communément appelé langage interprété, ce qui signifie qu'il n'a pas besoin d'une étape de compilation avant qu'un programme ne puisse s'exécuter, contrairement à C, Java ou Go par exemple. En pratique, les navigateurs compilent JavaScript avant de l'exécuter, pour des raisons de performances, mais cela est transparent pour vous : il n'y a pas d'étape supplémentaire impliquée.
multi-paradigme : le langage n'impose aucun paradigme de programmation particulier, contrairement à Java par exemple, qui force l'utilisation de la programmation orientée objet, ou C qui force la programmation impérative. Vous pouvez écrire JavaScript en utilisant un paradigme orienté objet, en utilisant des prototypes et la nouvelle syntaxe de classes (à partir de ES6). Vous pouvez écrire JavaScript dans un style de programmation fonctionnel, avec ses fonctions de première classe, ou même dans un style impératif (C-like).
Au cas où vous vous poseriez la question, JavaScript n'a rien à voir avec Java, c'est un mauvais choix de nom mais nous devons vivre avec.