Question

Selon vous, quels sont 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?

Était-ce utile?

La solution

Le style de la programmation fonctionnelle consiste à décrire ce que vous voulez plutôt que de savoir 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 en faisant quelque chose pour chaque cellule, vous diriez que l'équivalent de "cette étiquette se réfère à une version de ce tableau où cette fonction a été effectuée sur tous les éléments. "

La programmation fonctionnelle insère davantage d’idées de programmation de base dans le compilateur, telles que la compréhension de liste et la mise en cache.

Le principal avantage de la programmation fonctionnelle est la brièveté, car le code peut être plus concis. Un programme fonctionnel ne crée pas une variable d'itérateur devant être le centre d'une boucle, de sorte que ceci et d'autres types de temps système sont éliminés de votre code.

L’autre avantage majeur est la simultanéité, ce qui est plus facile avec la programmation fonctionnelle car le compilateur s’occupe de la plupart des opérations qui nécessitaient auparavant la configuration manuelle de variables d’état (comme l’itérateur dans une boucle).

Certains avantages en termes de performances sont également visibles dans le contexte d’un processeur unique, en fonction de la manière dont le programme est écrit, car la plupart des langages fonctionnels et des extensions prennent en charge l’évaluation paresseuse. En 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 savoir - au moment de l'initialisation du tableau - quelle est la valeur la plus grande dont vous aurez besoin. La valeur ne sera calculée que si vous en avez besoin, pas plus.

Autres conseils

Le principal avantage est que ce n'est pas ce à quoi vous êtes habitué. Choisissez une langue comme Scheme et apprenez à résoudre les problèmes avec elle. Vous deviendrez ainsi un meilleur programmeur dans les langues que vous connaissez déjà. C'est comme apprendre une deuxième langue humaine. Vous supposez que les autres sont essentiellement une variante de votre propre chef parce que vous n'avez rien à comparer. L'exposition à d'autres personnes, notamment celles qui ne sont pas liées à ce que vous savez déjà, est instructive.

Pourquoi la programmation fonctionnelle est importante
http://www.cs.kent.ac.uk /people/staff/dat/miranda/whyfp90.pdf

  

Un bon point de départ serait donc d’essayer de comprendre certaines choses qui ne sont pas possibles dans les langages impératifs mais possibles dans les langages fonctionnels.

Si vous parlez de calculabilité, il n’ya bien sûr rien de possible dans la programmation fonctionnelle mais pas impérative (ou vice versa).

L’intérêt des différents paradigmes de programmation n’est pas de rendre possible des choses qui n’étaient pas possibles auparavant, mais bien de rendre les choses faciles qui étaient difficiles auparavant.

La programmation fonctionnelle a pour but de vous permettre d’écrire plus facilement des programmes concis, sans bogues et parallélisables.

Cela ne doit pas nécessairement être l'un ou l'autre: utiliser un langage tel que 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 énonce clairement son intention, sans pour autant être mêlé à des instructions de flux de contrôle, etc. vérifier son exactitude.

Je pense que l'exemple le plus pratique du besoin de programmation fonctionnelle est la concurrence - les programmes fonctionnels sont naturellement thread-safe et, compte tenu de la montée en puissance du matériel multi-core, cela revêt une importance capitale.

La programmation fonctionnelle augmente également la modularité - vous pouvez souvent voir des méthodes / fonctions impératives beaucoup trop longues - vous ne verrez presque jamais une fonction plus de deux lignes. Et puisque tout est découplé - la réutilisation est beaucoup améliorée et les tests unitaires sont très très faciles

Une fois le programme développé, le nombre de commandes de 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 d’organiser mieux nos commandes. Nous pouvons associer toutes les commandes impliquant 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 la marche à suivre.

La programmation fonctionnelle offre un moyen complètement différent d’étendre le vocabulaire. Non limité à l'ajout de nouvelles commandes primitives; nous pouvons également ajouter de nouvelles primitives de structures de contrôle qui spécifient comment nous pouvons assembler des commandes pour créer un programme. Dans les langages impératifs, nous pouvions 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. façons courantes de combiner des commandes

Ne pensez pas à la programmation fonctionnelle en termes de "besoin". Pensez-y plutôt comme une autre technique de programmation qui ouvrira votre esprit, tout comme la POO, les modèles, le langage d'assemblage, etc., peuvent avoir complètement changé votre façon de penser lorsque vous les avez appris. En fin de compte, l’apprentissage de la programmation fonctionnelle fera de vous un meilleur programmeur.

Si vous ne connaissez pas encore la programmation fonctionnelle, vous pourrez en apprendre davantage sur la résolution de problèmes.

FP est une simple généralisation qui promeut les fonctions en valeurs de première classe alors que la POO est destinée à la structuration à grande échelle de code. Il existe toutefois un certain chevauchement dans lequel 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 nombreuses langues fournissent à la fois la FP et la POO, y compris OCaml, C # 3.0 et F #.

Salut, Jon Harrop.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top