Share this post :

Maîtriser Javascript en 5 points pour un entretien

JavaScript est un outil qu’on ne présente plus. Ce langage de programmation complet, appliqué à un document HTML, peut fournir une interactivité dynamique sur les sites Web. D’une grande flexibilité, il permet notamment de créer des jeux, des applications complètes fondées sur des bases de données, etc.

Voici cinq choses à savoir absolument sur ce langage de programmation pour réussir un entretien.

Pouvoir citer deux paradigmes de programmation importants pour les développeurs d’applications JavaScript

JavaScript est un langage multi-paradigme. Ce langage supporte le paradigme objet, impératif et fonctionnel: il prend donc en charge la POO (Programmation orientée objet) et la programmation fonctionnelle.

Ce qu’est la programmation fonctionnelle

La programmation fonctionnelle est un paradigme de programmation qui produit des programmes en composant des fonctions mathématiques. Le premier langage à prendre en charge la programmation fonctionnelle, Lisp est la plus ancienne “famille” de langages de programmation à la fois impératifs et fonctionnels: il fut en effet inventé par John McCarthy en 1958 alors qu’il était au Massachusetts Institute of Technology (MIT). Et de nombreuses langues de la famille Lisp sont encore couramment utilisées aujourd’hui. Au contraire des paradigmes de programmation de type impératif, la programmation fonctionnelle est un sous-type de la programmation déclarative qui, elle, détermine les données du problème et le résultat attendu plutôt que les étapes permettant de parvenir au résultat attendu.

La programmation fonctionnelle est un concept essentiel en JavaScript (l’un des deux piliers de JavaScript). Parmi les exemples de langages fonctionnels, on peut citer Lisp, ML, Haskell, Erlang, Clojure, Elm, F Sharp, ou encore Ocaml.

Différence entre héritage classique et héritage par prototype

Dans les langages orientés objets classiques, on commence par définir des classes objet pour ensuite déterminer laquelle hérite d’une autre. JavasScript utilise une approche différente: les objets héritant d’un autre n’ont pas de fonctionnalités copiées provenant d’un autre objet, mais héritent plutôt d’autres fonctionnalités via les liens de la chaîne de prototypage. Dans ce cas, on peut parler du concept d’héritage prototypique.

À savoir: en JavaScript, l’héritage prototypique est plus simple et plus flexible que l’héritage de classe.

Avantages et inconvénients de la programmation fonctionnelle par rapport à la POO

Parmi les avantages de la programmation orientée objet (POO) figure la facilité avec laquelle il est possible de comprendre le concept de base des objets et d’interpréter aisément la signification des appels de méthode. La POO a tendance à utiliser un style impératif plutôt qu’un style déclaratif, qui se lit comme un ensemble d’instructions simples que l’ordinateur doit suivre. Mais elle a des inconvénients: la POO dépend généralement de l’état partagé car les objets et les comportements sont généralement collés ensemble sur la même entité à laquelle il est possible d’accéder au hasard par n’importe quel nombre de fonctions, et en suivant un ordre non déterministe.

En matière de programmation fonctionnelle, le paradigme fonctionnel évite aux programmeurs qui l’utilisent tout état partagé, ce qui élimine les bugs causés par plusieurs fonctions en compétition pour les mêmes ressources. Avec des fonctionnalités telles que la disponibilité du style sans point (ou programmation tacite), les fonctions ont tendance à être simplifiées et facilement recomposées pour un code plus “réutilisable” que dans la POO.

La programmation fonctionnelle présente toutefois quelques inconvénients comme la surexploitation des fonctionnalités telles que le style sans point et les grandes compositions. Cela peut potentiellement réduire la lisibilité car le code résultant est souvent spécifié de manière plus abstraite. La plupart des développeurs sont ainsi plus familiers avec la programmation orientée objet et impérative qu’avec la programmation fonctionnelle. D’autant que la programmation fonctionnelle présente une courbe d’apprentissage beaucoup plus raide que celle de la POO car la grande popularité de la POO a permis à son langage et à son matériel d’apprentissage de devenir plus conversationnels, tandis que celui de la programmation fonctionnelle a tendance à être beaucoup plus académique et formel.

Différence entre liaison de données bidirectionnelle et flux de données unidirectionnel

Un flux est un modèle d’architecture utilisé en Javascript. Conçu au préalable pour ReactJS, il s’adapte néanmoins aux autres frameworks ou librairies Javascript. Lorsque la liaison des données  est bidirectionnelle, les champs d’interface utilisateur sont liés aux données de modèle de manière dynamique. Ainsi, lorsqu’un champ d’interface utilisateur change, les données du modèle changent avec lui, et inversement. Angular est un framework populaire qui repose sur la liaison bidirectionnelle.

Un flux de données à sens unique ou unidirectionnel suppose que le modèle est la seule source de vérité. Les changements dans l’interface utilisateur déclenchent des messages qui signalent l’intention de l’utilisateur au modèle. Seul le modèle a un pouvoir de modification de l’état de l’application. L’effet en est que les données circulent toujours dans une seule direction, ce qui facilite leur compréhension.

React est le nouvel exemple phare de flux de données unidirectionnel, les mentions de React sont donc un bon signal. Cycle.js est une autre implémentation populaire du flux de données unidirectionnel.

Cet article a été en partie inspiré par l’article “10 Interview Questions
Every JavaScript Developer Should Know
” publié sur Medium.

Share this post :

Sign up for Newsletters