Juste parce que les fonctions sont des objets de première classe, il y a des fermetures et des fonctions d'ordre supérieur, Javascript mérite-t-il d'être appelé un langage de programmation fonctionnelle? La principale chose que je pense qu'il manque, ce sont les fonctions pures, et cela ne `` ressemble '' pas à d'autres langages fonctionnels, comme lisp (bien que ce ne soit pas vraiment une bonne raison pour que ce ne soit pas une langue fonctionnelle ...)
javascript
functional-programming
terminology
hvgotcodes
la source
la source
Réponses:
Répétant ma propre réponse à une question similaire,
la source
Je dirais que c'est un langage multi-paradigme.
EDIT: C'est multi-paradigme et comprend des constructions fonctionnelles.
la source
si vous étirez et tordez le terme «programmation fonctionnelle» au point de discussions philosophiques, cette question peut être à nouveau ouverte. Cependant, vous vous retrouvez alors au niveau de questions utiles comme "Le C ++ est-il vraiment un langage de programmation"?
La réponse à votre question à un niveau plus quotidien est «non» .
La programmation fonctionnelle signifie que le programme est conceptualisé comme une évaluation d'une fonction, plutôt que comme un flux de contrôle. Le code est une description de fonctions et n'a pas de concept inhérent de flux de contrôle.
JavaScript a un flux de contrôle et est conceptualisé comme un langage impératif. De par son objectif de conception, ce n'est clairement pas un langage fonctionnel.
la source
Le terme langage de «programmation fonctionnelle» est tellement surchargé de nos jours qu'il est presque inutile. Il y a deux significations dominantes:
Choisissez votre sens et la question sera répondable.
la source
Je ne pense pas qu'il y ait une définition concrète de la programmation fonctionnelle, cependant beaucoup de choses que les gens considèrent comme «programmation fonctionnelle» peuvent être faites avec javascript. Voici un bon bref exemple dans cet article.
la source
Pour moi, Javascript est à la fois un langage impératif et un langage fonctionnel, et vous pouvez choisir de l'utiliser dans les deux sens, et même ( egad ) dans les deux sens. Ou vous pouvez choisir d'utiliser un paradigme et ne jamais toucher l'autre. C'est à vous. Comme vous, je ne pense pas que Javascript doive être appelé un langage fonctionnel, car il vous permet d'entrer et de sortir du paradigme de la programmation fonctionnelle. Peut-être que s'il y avait un pragma quelconque, pour vous limiter à n'utiliser que des paradigmes de programmation fonctionnelle, alors ce serait utile, je pense. Mais, en résumé, je dis que c'est plus un langage impératif / procédural avec quelques fonctionnalités de programmation fonctionnelle ajoutées.
la source
J'ai tendance à ne pas penser aux langages de programmation comme ayant un paradigme particulier, mais qu'ils se prêtent à certains paradigmes. Cependant, ce n'est pas parce qu'ils se prêtent à un paradigme particulier que vous devez utiliser ce paradigme. Il est tout à fait possible d'écrire des programmes orientés objet en C et des programmes impératifs en ML. Ne pas utiliser un certain paradigme pour résoudre un problème parce que le langage n'est pas conçu pour cela, c'est simplement vous limiter artificiellement (bien sûr, vous devez toujours prendre en compte les limites d'une langue lorsque vous décidez si une solution particulière sera une bonne solution).
la source
Eh bien, je ne dirais pas que c'est de la programmation fonctionnelle, mais alors je dirais que c'est orienté objet et aujourd'hui, un ami a dit qu'il ne le mettrait pas non plus sur cette étagère.
Donc, même si je ne dirais pas que c'est le cas, je suppose qu'il y a place pour l'opinion. Il a des caractéristiques classiques de la programmation fonctionnelle, il n'en a pas d'autres.
la source
Javascript est à un point. Cela dépend vraiment de la façon dont vous le programmez. Si je code de manière OO, ne serait-ce pas OO? Donc, si vous codez simplement les choses d'une manière «fonctionnelle», ce serait fonctionnel. Je suppose que c'est un langage multi-paradigme, donc l'appeler juste une chose n'est pas tout à fait exact.
la source
@petraszd Je réécris un peu votre code pour obtenir un "nouveau" pour l' opérateur:
Mais je sais que cette manière a des inconvénients pour les grosses boucles ...
Question connexe sur l'optimisation de la récurrence de la queue dans JS
PS Publié ici parce que j'ai un problème avec le formatage du code lors de la publication en tant que commentaire
la source
En Javascript, vous pouvez faire quelque chose comme ça !!
J'ai créé une page github afin de faire une démonstration de ce concept et vous pouvez cloner / visualiser mon implémentation
la source
Comme nous le savons, le langage de programmation fonctionnel ne permet pas de changer ou de muter les éléments (état) des fonctions, mais en javascript, il est autorisé en ce sens qu'il ne s'agit pas d'un langage de programmation fonctionnel, bien qu'il traite la fonction comme des citoyens de première classe.
la source
Ce que je déteste vraiment en javascript (si vous essayez de le considérer comme un langage FP), c'est ceci:
Vous devez comprendre l'environnement de la pile JS (je ne sais pas si c'est le bon terme) pour comprendre un tel comportement.
Dans le schéma par exemple, vous ne pouvez tout simplement pas produire une telle chose (Ok, ok - avec l'aide des références des langues sous-jacentes, vous pouvez le faire):
la source