it-swarm-fr.com

Pour quels problèmes courants la programmation fonctionnelle n'est-elle pas un bon ajustement?

La programmation fonctionnelle est un paradigme déclaratif. L'une des forts avec FP est que les effets secondaires sont évités. Il est dit que pour certains problèmes FP n'est pas un bon ajustement.

Pour quels problèmes courants n'est pas une programmation fonctionnelle un bon ajustement?

22
Jonas

Applications de nature très importante. Les jeux vidéo sont un bon exemple parce qu'ils modélisent le monde réel. Il est beaucoup plus logique de penser à modifier l'état du monde au lieu de reconstruire à l'état précédent chaque fois que quelque chose change.

Un exemple concret changeait la santé d'un monstre après sa prise de vue. Il est beaucoup plus raisonnable de simplement modifier sa santé que de le remplacer par un tout nouveau monstre qui est identique à tous les égards sauf que cela a moins de la santé. Ce genre de changements constitue-t-il à peu près tout dans un monde de jeu et le faire de manière fonctionnelle n'est pas très intuitive. J'imagine qu'il peut y avoir des pénalités de performance significatives, du moins si vous le faites dans une langue purement fonctionnelle.

(En tant que note latérale, certains problèmes dans les jeux sont très bien adaptés à la programmation fonctionnelle, telle que AI. Un langage fonctionnel hybride/impératif serait un excellent ajustement pour ces cas.)

17
Matt Olenik

La programmation intégrée en temps réel est tout sur les effets secondaires. Interagir avec des ports numériques et analogiques IO, TIMERS, Ports série et parallèles, tout ce qui est intéressant est effectué en appelant des fonctions avec des effets latéraux.

17
AShelly

Je dirais que la programmation de l'interface graphique n'est pas un bon ajustement pour la programmation fonctionnelle. Les Guis sont généralement très importants et il est beaucoup plus facile de les modéliser/gérer à l'aide de l'état plutôt que d'utiliser un effet secondaire. C'est certainement possible d'utiliser une langue de programmation fonctionnelle pour Guis ... mais ce n'est probablement pas une bonne idée.

Comme indiqué dans une autre réponse, les jeux sont souvent plus faciles à gérer par l'état de suivi et, tandis que vous Can Écrivez un jeu dans une langue fonctionnelle, il est souvent plus facile et plus efficace de le faire dans une langue "sotculeuse". (c'est-à-dire une langue orientée objet).

11
mipadi

Applications commerciales axées sur les données. L'interface utilisateur et les opérations de données simples n'ont pas besoin de FP.

5
Branimir

Vous ne pouvez pas facilement renvoyer tout problème pour ne pas être adapté à la programmation fonctionnelle en soi.

Beaucoup dépend de la langue réelle utilisée pour la programmation fonctionnelle et ses caractéristiques.

Un exemple est l'Erlang déjà mentionné pour les systèmes embarqués en temps réel.

L'état-plénitude n'est pas non plus un bon critère contre la programmation fonctionnelle, il existe plusieurs moyens de réussir dans les langues de programmation fonctionnelle pour y faire face.

Les effets secondaires sont également souvent mentionnés contre la programmation fonctionnelle. Chaque programme qui n'est pas totalement solipstic a des effets secondaires. Donc, chaque monde réel FP Language a un moyen de faire face à cela, c'est seulement une question de manière élégante pour encapsuler les effets secondaires mondiaux.

Il n'y a pas besoin d'effets secondaires arbitraires tels que les variables globales du tout.

Mais il existe des ensembles de problèmes qui facilitent la mise en place de la programmation fonctionnelle car elles ne tordent pas votre façon familière de regarder autant le problème. Mais une fois que vous avez réussi à penser que des ensembles de problèmes fonctionnels sont ouverts à des effets secondaires moins secondaires.

Même lors de la programmation C, il est toujours judicieux de réduire autant que possible les effets secondaires arbitraires tels que les variables mondiales.

2
Peer Stritzinger