Quels sont selon vous les avantages de la programmation fonctionnelle? Et comment s'appliquent-ils aux programmeurs aujourd'hui?
Quelles sont les plus grandes différences entre la programmation fonctionnelle et la POO?
Quels sont selon vous les avantages de la programmation fonctionnelle? Et comment s'appliquent-ils aux programmeurs aujourd'hui?
Quelles sont les plus grandes différences entre la programmation fonctionnelle et la POO?
Réponses:
Le style de programmation fonctionnelle consiste à décrire ce que vous voulez, plutôt que comment l'obtenir. c'est-à-dire: au lieu de créer une boucle for avec une variable d'itérateur et de parcourir un tableau faisant quelque chose à chaque cellule, vous diriez l'équivalent de "cette étiquette fait référence à une version de ce tableau où cette fonction a été effectuée sur tous les éléments."
La programmation fonctionnelle déplace des idées de programmation plus basiques dans le compilateur, des idées telles que la compréhension de liste et la mise en cache.
Le plus grand avantage de la programmation fonctionnelle est la brièveté, car le code peut être plus concis. Un programme fonctionnel ne crée pas de variable d'itérateur pour être le centre d'une boucle, donc ceci et d'autres types de surcharge sont éliminés de votre code.
L'autre avantage majeur est la concurrence, ce qui est plus facile à faire avec la programmation fonctionnelle car le compilateur prend en charge la plupart des opérations qui nécessitaient auparavant de configurer manuellement des variables d'état (comme l'itérateur dans une boucle).
Certains avantages en termes de performances peuvent également être observés dans le contexte d'un processeur unique, en fonction de la façon dont le programme est écrit, car la plupart des langages fonctionnels et des extensions prennent en charge l'évaluation paresseuse. Dans Haskell, vous pouvez dire "cette étiquette représente un tableau contenant tous les nombres pairs". Un tel tableau est infiniment grand, mais vous pouvez demander le 100 000e élément de ce tableau à tout moment sans avoir à savoir - au moment de l'initialisation du tableau - quelle est la plus grande valeur dont vous aurez besoin. La valeur ne sera calculée que lorsque vous en aurez besoin, et pas plus.
la source
Le plus grand avantage est que ce n'est pas ce à quoi vous êtes habitué. Choisissez un langage comme Scheme et apprenez à résoudre les problèmes avec lui, et vous deviendrez un meilleur programmeur dans des langages que vous connaissez déjà. C'est comme apprendre une seconde langue humaine. Vous supposez que les autres sont fondamentalement une variation en soi parce que vous n'avez rien à comparer. L'exposition à d'autres personnes, en particulier celles qui ne sont pas liées à ce que vous savez déjà, est instructive.
la source
Pourquoi la programmation fonctionnelle est importante
http://www.cs.kent.ac.uk/people/staff/dat/miranda/whyfp90.pdf
la source
Si vous parlez de calculabilité, il n'y a bien sûr rien de possible en programmation fonctionnelle mais pas impérative (ou vice versa).
Le but des différents paradigmes de programmation n'est pas de rendre possible des choses qui n'étaient pas possibles auparavant, c'est de rendre les choses faciles qui étaient difficiles auparavant.
La programmation fonctionnelle vise à vous permettre d'écrire plus facilement des programmes concis, sans bogues et parallélisables.
la source
Il n'est pas nécessaire que ce soit l'un ou l'autre: l'utilisation d'un langage comme C # 3.0 vous permet de mélanger les meilleurs éléments de chacun. OO peut être utilisé pour la structure à grande échelle au niveau de la classe et au-dessus, Style fonctionnel pour la structure à petite échelle au niveau de la méthode.
L'utilisation du style fonctionnel permet d'écrire du code qui déclare clairement son intention, sans être mélangé avec des instructions de flux de contrôle, etc. En raison des principes tels que la programmation sans effets secondaires, il est beaucoup plus facile de raisonner sur le code et de vérifier son exactitude .
la source
Je pense que l'exemple le plus pratique du besoin de programmation fonctionnelle est la simultanéité - les programmes fonctionnels sont naturellement thread-safe et étant donné la montée en puissance du matériel multicœur, c'est de la plus haute importance.
La programmation fonctionnelle augmente également la modularité - vous pouvez souvent voir des méthodes / fonctions en impératif qui sont beaucoup trop longues - vous ne verrez presque jamais une fonction de plus de quelques lignes. Et comme tout est découplé, la réutilisation est bien améliorée et les tests unitaires sont très très faciles.
la source
Une fois que le programme se développe, le nombre de commandes dans notre vocabulaire devient trop élevé, ce qui le rend très difficile à utiliser. C'est là que la programmation orientée objet nous facilite la vie, car elle nous permet de mieux organiser nos commandes. Nous pouvons associer toutes les commandes qui impliquent le client à une entité client (une classe), ce qui rend la description beaucoup plus claire. Cependant, le programme est toujours une séquence de commandes spécifiant comment il doit procéder.
La programmation fonctionnelle offre une manière complètement différente d'étendre le vocabulaire. Non limité à l'ajout de nouvelles commandes primitives; nous pouvons également ajouter de nouvelles structures de contrôle - des primitives qui spécifient comment nous pouvons assembler des commandes pour créer un programme. Dans les langages impératifs, nous avons pu composer des commandes dans une séquence ou en utilisant un nombre limité de constructions intégrées telles que des boucles, mais si vous regardez des programmes typiques, vous verrez toujours de nombreuses structures récurrentes; méthodes courantes de combinaison de commandes
la source
Ne pensez pas à la programmation fonctionnelle en termes de «besoin». Au lieu de cela, pensez-y comme une autre technique de programmation qui vous ouvrira l'esprit, tout comme la POO, les modèles, le langage d'assemblage, etc. peuvent avoir complètement changé votre façon de penser lorsque (si) vous les avez appris. En fin de compte, l'apprentissage de la programmation fonctionnelle fera de vous un meilleur programmeur.
la source
Si vous ne connaissez pas déjà la programmation fonctionnelle, l'apprentissage vous donne plus de moyens de résoudre les problèmes.
FP est une généralisation simple qui promeut les fonctions vers des valeurs de première classe, tandis que la POO est pour la structuration à grande échelle du code. Il y a cependant un certain chevauchement où les modèles de conception POO peuvent être représentés directement et beaucoup plus succinctement à l'aide de fonctions de première classe.
De nombreux langages fournissent à la fois FP et OOP, y compris OCaml, C # 3.0 et F #.
Salutations, Jon Harrop.
la source