Quelles sont les différences entre ces paradigmes de programmation, et sont-ils mieux adaptés à des problèmes particuliers ou certains cas d'utilisation en favorisent-ils un par rapport aux autres ?
Exemples d'architecture appréciés !
Quelles sont les différences entre ces paradigmes de programmation, et sont-ils mieux adaptés à des problèmes particuliers ou certains cas d'utilisation en favorisent-ils un par rapport aux autres ?
Exemples d'architecture appréciés !
Un de mes amis est en train d'écrire une application graphique utilisant NVIDIA CUDA . Les applications s'intègrent très bien au paradigme de la POO et le problème peut être décomposé en modules. Cependant, pour utiliser CUDA, vous devez utiliser le C, qui ne supporte pas héritage . C'est pourquoi vous devez faire preuve d'intelligence.
a) Vous concevez un système astucieux qui imite l'héritage dans une certaine mesure. C'est possible !
i) Vous pouvez utiliser un système de crochet qui s'attend à ce que chaque enfant C du parent P ait une certaine surcharge pour la fonction F. Vous pouvez faire en sorte que les enfants enregistrent leurs surcharges, qui seront stockées et appelées si nécessaire.
ii) Vous pouvez utiliser la structure alignement de la mémoire pour transformer les enfants en parents.
Cela peut être intéressant, mais il n'est pas facile de trouver une solution fiable et à l'épreuve du temps. Vous passerez beaucoup de temps à concevoir le système et il n'y a aucune garantie que vous ne rencontrerez pas de problèmes à mi-chemin du projet. Mise en œuvre de héritage multiple est encore plus difficile, voire presque impossible.
b) Vous pouvez utiliser une politique de dénomination cohérente et utiliser diviser et conquérir pour créer un programme. Il n'y aura pas d'héritage, mais comme vos fonctions sont petites, faciles à comprendre et formatées de manière cohérente, vous n'en avez pas besoin. La quantité de code que vous devez écrire augmente, il est très difficile de rester concentré et de ne pas succomber aux solutions faciles (hacks). Cependant, cette façon ninja de coder est la façon C de coder. Rester en équilibre entre la liberté de bas niveau et l'écriture d'un bon code. Un bon moyen d'y parvenir est d'écrire des prototypes en utilisant un langage fonctionnel. Par exemple, Haskell est très utile pour le prototypage d'algorithmes.
Je tends vers l'approche b. J'ai écrit une solution possible en utilisant l'approche a, et je vais être honnête, cela m'a semblé très peu naturel d'utiliser ce code.
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.
0 votes
Ce n'est pas une réponse complète, mais j'ai écrit un peu sur la façon dont le style "fonctionnel" affecte/contraste le style "OO" (dans le contexte de F#) ici : lorgonblog.spaces.live.com/blog/cns!701679AD17B6D310!511.entry
0 votes
Vous pourriez envisager de lire ça ! Il y a beaucoup d'exemples pour savoir quand utiliser quelle fourmi, quelles sont les principales différences, les avantages et les inconvénients, etc.
2 votes
Voir aussi : - Quelle est la différence entre la programmation procédurale et la programmation fonctionnelle ? - Quelqu'un peut-il me donner des exemples de programmation fonctionnelle par rapport à la programmation impérative/procédurale ? - Comprendre réellement la différence entre procédural et fonctionnel
1 votes
Voir aussi : stackoverflow.com/questions/1530868
0 votes
Oncle Bob a a tweeté à ce sujet. Et aussi ici .