Pourquoi les programmeurs semblent-ils détester JavaScript ? Dans un sondage effectué récemment au sein du club, un peu plus de 52 % des développeurs ont désigné le JavaScript comme le langage de programmation qu’ils détestent le plus en 2019. Les avis étaient divers, la plupart évoquant un débogage difficile avec le langage, sa forme non typée, une façon « stupide » de gérer l’orientée objet et le fait que ce dernier permet d’ajouter facilement des bogues à son programme. Le JavaScript commence-t-il donc à être déprécié de tous ?
En se basant sur un autre aspect de la programmation, la programmation fonctionnelle (PF), Alex Kelley, développeur Web, a expliqué cette semaine que le JavaScript est très limité sur ce point et donc, qu’il faudrait penser à migrer vers un autre langage, PureScript. Selon lui, bien que le JavaScript reprenne assez bien certaines abstractions de la programmation fonctionnelle, ce dernier n’est pas du tout adapté pour cette architecture de travail. Si vous décidez quand même de faire de la programmation fonctionnelle avec le JavaScript, vous vous rendrez vite compte, dit-il, qu’il est facile de s’égarer, puis vous retrouvez vos habitudes anciennes et impératives.
Mais pourquoi parle-t-il de la programmation fonctionnelle ? Selon lui et beaucoup d’autres, la programmation fonctionnelle est en train de devenir la nouvelle tendance chez les programmeurs. Il s’agit en effet d’un paradigme de la programmation de type déclaratif qui considère le calcul en tant qu'évaluation de fonctions mathématiques. Comme le changement d'état et la mutation des données ne peuvent pas être représentés par des évaluations de fonctions, la programmation fonctionnelle ne les admet pas, au contraire elle met en avant l'application des fonctions, contrairement au modèle de programmation impérative qui met en avant les changements d'état. La programmation fonctionnelle s'affranchit de façon radicale des effets secondaires (ou effets de bord) en interdisant toute opération d'affectation.
Ainsi, un langage fonctionnel est donc un langage de programmation dont la syntaxe et les caractéristiques encouragent la programmation fonctionnelle. Alors que l'origine de la programmation fonctionnelle peut être trouvée dans le lambda-calcul, on estime que le langage fonctionnel le plus ancien est Lisp, créé en 1958 par McCarthy. Lisp a donné naissance à des variantes telles que Scheme (1975) et Common Lisp (1984) qui, comme Lisp, ne sont pas ou peu typées. Des langages fonctionnels plus récents tels ML (1973), Haskell (1987), OCaml, Erlang, Clean et Oz, CDuce, Scala (2003) ou F# sont fortement typés. Le langage PureScript s'inscrit également dans cette dynamique.
De plus, le site Web du langage lui loue les avantages suivants : il offre la possibilité de compiler en JavaScript lisible et permet de réutiliser facilement le code JavaScript existant, il possède une vaste collection de bibliothèques pour le développement, il vous permet de construire des applications du monde réel en utilisant des techniques fonctionnelles et des types expressifs (tels que les types de données algébriques et correspondance de modèles, un polymorphisme de lignes et enregistrements extensibles, un polymorphisme de rang supérieur). Alors, cela fait-il du langage PureScript un remplaçant du JavaScript sur tous les points ou seulement du point de vue fonctionnel ?
« PureScript me tient vraiment à cœur et il est devenu mon langage fonctionnel préféré au cours des six derniers mois. Cela ressemble vraiment à une construction faite à la base avec Haskell avec certaines améliorations modernes (traitement des chaînes, enregistrements, compilation en JavaScript lisible). Vous pouvez facilement gérer les dépendances afin d’incorporer l’ensemble absolument minimal de packages nécessaires à l’exécution de votre projet, et je pense que sa sécurité est inégalée », a déclaré un utilisateur pour répondre à la question.
Néanmoins, Alex Kelley reconnaît que le JavaScript prend en charge certaines des fonctionnalités les plus importantes de FP, notamment les fonctions et les fermetures de première classe et anonymes. Toutefois, a-t-il continué, JavaScript doit desservir plusieurs maîtres, y compris la programmation impérative et orientée objet. En conséquence, l'utilisation de JavaScript pour la PF est soumise à des limitations et à des compromis. En particulier, il manque un système de types statique, une pureté forcée et une immuabilité.
Certaines de ces lacunes peuvent être atténuées en ajoutant un vérificateur de type statique comme Flux, des collections immuables et des bibliothèques d'abstraction. Cela signifie que la programmation fonctionnelle en JavaScript est principalement réalisée par convention, souvent pavée avec les « pansements » sus-cités. Un programmeur JavaScript fonctionnel doit rester vigilant à tout moment pour créer des fonctions pures qui évitent les effets secondaires, ce qui met trop de charges cognitives sur le programmeur et finit par gêner le codage de votre application. C’est à ce moment qu’intervient PureScript, a-t-il souligné.
Le langage PureScript vous offre des applications côté client et côté serveur. Selon Alex Kelley, vous y trouverez également une représentation de toutes les constructions de langage FP que vous avez probablement déjà entendues ou lues, y compris la curryfication (currying), la correspondance de modèle, l’optimisation des appels de queue et les types d'ordre supérieur et élevé. Il faut noter qu’en informatique et plus précisément en programmation fonctionnelle, la curryfication est la transformation d'une fonction à plusieurs arguments en une fonction à un argument qui retourne une fonction sur le reste des arguments.
La curryfication permet de créer des fonctions pures. L'opération inverse est possible et s'appelle la décurryfication. Le terme vient du nom du mathématicien américain Haskell Curry, bien que cette opération ait été introduite pour la première fois par Moses Schönfinkel. Enfin, a décrit Alex Kelley, PureScript n'a pas de système d'exécution pour ajouter à votre empreinte de téléchargement et en plus, il existe un FFI (foreign function interface) simple et très performant pour JavaScript. Donc, si vous ne trouvez pas encore de support pour les fonctions de votre module JavaScript préféré, il n’est pas difficile de les inclure vous-même, a-t-il conclu dans sa description.
Quelqu’un d’autre ajoute que le JavaScript n’est pas un langage sûr, car il compile directement sur la machine de l’utilisateur donc il peut être utilisé pour de mauvaises intentions. Il souligne également son manque d’instabilité et son manque d’efficacité. Dans le premier cas, il estime que JavaScript est interprété et lu différemment par les différents moteurs JS et en retour, vous avez autant de lectures que de moteurs. Dans le deuxième cas, il explique que tous les types de variables peuvent être stockés dans une seule et même variable et les points-virgule sont obligatoires, mais inutiles. « D’autres langages existent et sont nettement mieux que le JavaScript », a-t-il conclu.
Cela dit, d’autres par contre ne sont pas favorables à laisser tomber le JavaScript. « Le JavaScript est le langage le plus connu et le plus utilisé. Du coup, statistiquement c’est celui qui fait le plus parler de lui. Cela traduirait peut-être le fait que la plupart des développeurs ne sont pas aussi bons que ça. Et tous les autres arguments anti-JS sont exactement dans le même genre, a chaque fois c’est issue d’un anti-pattern, d’une mauvaise utilisation », déclaré l’un d’entre eux.
Source : Billet de blog
Et vous ?
JavaScript ou PureScript, lequel des deux langages choisissez-vous ? Pourquoi ?
PureScript pourra-t-il remplacer le JavaScript ?
Connaissez-vous une autre alternative au PureScript pour la programmation fonctionnelle ?
Voir aussi
Sondage : quels sont les langages de programmation que vous détestez le plus en 2019 ? Pourquoi ?
Le langage JavaScript est-il responsable de la lenteur des sites Web de nos jours ? Oui selon un expert
AlaSQL.js, une base de données SQL JavaScript pour le navigateur et Node.js, est désormais disponible. Il serait rapide et très flexible
Faut-il migrer de JavaScript vers PureScript ? Oui
Car JavaScript serait très limité pour la programmation fonctionnelle, selon Alex Kelley
Faut-il migrer de JavaScript vers PureScript ? Oui
Car JavaScript serait très limité pour la programmation fonctionnelle, selon Alex Kelley
Le , par Bill Fassinou
Une erreur dans cette actualité ? Signalez-nous-la !