61 votes

Javascript comme langage fonctionnel

Je cherche à me familiariser avec les concepts de la programmation fonctionnelle.

J'ai utilisé Javascript pendant de nombreuses années pour les scripts côté client dans les applications web et, à part l'utilisation de prototypes, il s'agissait de simples manipulations du DOM, de la validation des entrées, etc.

Ces derniers temps, j'ai lire souvent que Javascript est un des langages qui supporte la programmation fonctionnelle.

Compte tenu de ma familiarité et de mon expérience avec Javascript, je préfère l'utiliser pour apprendre la programmation fonctionnelle. Je pense pouvoir me concentrer davantage sur les principaux concepts fonctionnels et ne pas me laisser submerger ou distraire par une syntaxe totalement nouvelle.

En résumé, Javascript est-il un bon choix pour apprendre les concepts de la programmation fonctionnelle ? Quelles sont les capacités de Javascript qui sont pertinentes/supportent la programmation fonctionnelle ?

43voto

Mark Cidade Points 53945

JavaScript supporte les fonctions de première classe. Voir Utiliser des techniques de programmation fonctionnelle pour écrire un JavaScript élégant .

9voto

kamens Points 6043

Javascript d'ordre supérieur est un grand pour se familiariser avec les aspects fonctionnels de javascript. Il s'agit également d'une lecture relativement courte, au cas où vous voudriez vous mouiller les pieds sans vous plonger dans un livre plus volumineux.

6voto

Mauricio Scheffer Points 70470

Bien que javascript supporte la FP dans une certaine mesure, il ne l'encourage pas directement. C'est pourquoi des projets comme La fonction d'Oliver Steele existent, pour combler les lacunes. Je ne le recommande donc pas pour l'apprentissage de la FP. Allez plutôt voir du côté de F#.

6voto

Brian Reindel Points 6416

Je dirais que, même si vous pouvez rapidement appréhender certains concepts de programmation fonctionnelle avec JavaScript, utiliser JavaScript de manière cohérente comme un langage de programmation fonctionnelle n'est pas une pratique courante. Du moins, pas de manière évidente. La plupart des gens ne publient pas de tutoriels qui expliquent comment faire de la programmation fonctionnelle avec JavaScript - celui que marxidad a signalé est en fait un exemple assez décent, mais vous n'en trouverez pas beaucoup. Les aspects fonctionnels ne sont pas souvent apparents, tout comme lorsque les gens utilisent des fermetures en JavaScript, mais ne sont pas conscients de le faire.

L'idée de passer deux fonctions en tant qu'arguments à une troisième fonction, puis de faire en sorte que la valeur de retour soit une exécution liée aux deux premières fonctions est une technique avancée qui n'apparaît presque toujours que dans le noyau de bibliothèques complètes comme jQuery. Les fonctions anonymes auto-exécutables et autres ont gagné du terrain, mais ne sont toujours pas utilisées de manière systématique. La majorité des didacticiels se concentrent plutôt sur les capacités OO de JavaScript, comme la création de propriétés et de méthodes, la portée, le contrôle d'accès et aussi l'utilisation de la propriété prototype des constructeurs. Honnêtement, si la programmation fonctionnelle est ce que vous voulez, alors je choisirais un langage connu strictement pour cette capacité.

6voto

troelskn Points 51966

Je ne me souviens plus qui l'a dit, mais Javascript a été appelé "Scheme avec la syntaxe Algol". Donc pour apprendre Scheme/Lisp, Javascript n'est pas un mauvais départ. Notez cependant que les langages fonctionnels comme Lisp sont très différents des langages fonctionnels purs, comme Haskell.

Outre les "fonctions de première classe" (ce qui signifie que les fonctions sont des valeurs qui peuvent être affectées à des variables), la portée lexicale est également une partie inhérente de ce qui fait un langage fonctionnel.

Javascript d'ordre supérieur y Le petit Javascripteur a déjà été mentionné. Ce sont tous deux d'excellents textes. En outre, Programmation d'ordre supérieur en Javascript peut être un début plus facile.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X