[Oop] Programmation fonctionnelle vs Programmation Orientée Objet


Answers

Vous n'avez pas nécessairement à choisir entre les deux paradigmes. Vous pouvez écrire un logiciel avec une architecture OO en utilisant de nombreux concepts fonctionnels. FP et OOP sont de nature orthogonale .

Prenez par exemple C #. On pourrait dire que c'est principalement de la POO, mais il y a beaucoup de concepts et de concepts de PF. Si vous considérez Linq , les constructions les plus importantes qui permettent à Linq d'exister sont de nature fonctionnelle: les expressions lambda .

Un autre exemple, F #. On pourrait dire que c'est principalement la PF, mais il existe de nombreux concepts et constructions de POO disponibles. Vous pouvez définir des classes, des classes abstraites, des interfaces, gérer l'héritage. Vous pouvez même utiliser la mutabilité lorsque cela rend votre code plus clair ou quand il augmente considérablement les performances.

Beaucoup de langues modernes sont multi-paradigmes.

Lectures recommandées

Comme je suis dans le même bateau (OOP background, learning FP), je vous suggère quelques lectures que j'ai vraiment appréciées:

Question

J'ai été principalement exposé à la programmation OO jusqu'à présent et je suis impatient d'apprendre un langage fonctionnel. Mes questions sont:

  • Quand choisissez-vous la programmation fonctionnelle par rapport aux objets?
  • Quelles sont les définitions de problèmes typiques où la programmation fonctionnelle est un meilleur choix?



  1. Si vous êtes dans un environnement fortement concurrentiel, alors la programmation fonctionnelle pure est utile. Le manque d'état mutable rend la concurrence presque triviale. Voir Erlang.

  2. Dans un langage multiparadigm, vous pouvez vouloir modéliser certaines choses de manière fonctionnelle si l'existence d'un état mutable est un détail d'implémentation, et donc FP est un bon modèle pour le domaine du problème. Par exemple, voir la liste des compréhensions dans Python ou std.range dans le langage de programmation D. Ceux-ci sont inspirés par la programmation fonctionnelle.