it-swarm-fr.com

Quelle est votre opinion la plus forte contre la programmation fonctionnelle?

Programmation fonctionnelle est l'un des paradigmes de programmation les plus anciens. Cependant, il n'est pas utilisé beaucoup dans l'industrie par rapport aux paradigmes plus populaires. Mais il a été largement souligné dans les universités.

Quelle est votre opinion la plus forte contre la programmation fonctionnelle?

25
Jonas

Le problème est que le code le plus commun implique de manière intrinsèquement des applications, des jeux, des interfaces d'interface utilisateur, etc., il n'y a pas de problème avec certains Pièces d'une application purement fonctionnelle; En fait, la plupart des applications pourraient bénéficier au moins d'une zone. Mais forcer le paradigme sur tout le lieu se sent contre-intuitif.

Je pense que la première programmation fonctionnelle n'est pas très largement utilisée, c'est parce qu'elle se fait trop trop. Il est difficile de regarder sérieusement, par exemple, Lisp ou Haskell, sans dire "toute cette langue est une grande inversion d'abstraction." Lorsque vous établissez des abstractions de base que le codeur ne peut pas se situer en dessous si nécessaire, vous établissez des choses que la langue ne peut tout simplement pas faire et plus la langue est fonctionnelle, plus elle a tendance à avoir.

Prenez Haskell, par exemple. Au nom de la pureté fonctionnelle, vous devez utiliser des inversions d'abstraction cérébrale que personne ne comprend pour gérer l'état et l'E/S, les deux parties les plus fondamentales de tout programme informatique qui interagit avec n'importe quoi ! qui vieillit vite.

17
Mason Wheeler

Avec tout le respect due, je pense que votre question est malade posée. La programmation fonctionnelle est un outil, ou plutôt un ensemble d'outils utiles pour résoudre certains types de problèmes. Avoir une opinion à ce sujet n'a aucun sens dans le contexte d'un problème ou d'une application spécifique. Avoir une opinion contre elle en général, c'est comme avoir une opinion contre des pinces ou des clés.

8
Dima

Même si j'avais le maîtrisé, je serais peut-être pu utiliser une langue fonctionnelle pour un produit commercial pour une raison simple qu'elles ne sont pas largement comprises et que je m'attendais à ce que l'entreprise grandisse, je serais préoccupé par la capacité de trouver d'autres développeurs capables de maintenir ou de l'étendre au fil du temps.

Ce n'est pas inconcevable, et vous obtiendrez probablement un plus haut niveau de développeur, car une Javaschool Grad sans véritables compétences de piratage ne saurait pas savoir où commencer sur un projet de ce type, mais le pool limité des développeurs compétents serait certainement une considération nécessaire. du point de vue des affaires.

4
glenatron

Durée to marché

Difficile de débarrasser un paysage informatique complet de code procédural et de mantras.

2
Jé Queue

tout d'abord, je n'accepte aucun des arguments concernant la programmation étatique et la FP. Regardez dans l'État monad à Haskell et vous trouverez un certain nombre de nouvelles façons intéressantes d'évaluer l'impact de l'état sur votre code.

si je devais faire un argument significatif contre la FP, il serait que d'apprendre un langage fonctionnel sérieux comme Haskell, c'est comme apprendre à conduire une voiture de formule une ... Exigrant et éducatif, mais malheureusement inutile pour le codage industriel quotidien, car, en moyenne , vos collègues conduisent des camristes et sont assez heureux de le faire. Il est toujours extrêmement difficile de trouver du travail dans un environnement favorable à la FP, et je ne vois pas cela en évolution, à moins que l'on ne souhaite que l'on ne veuille frapper seul ou rechercher certains des pratiquants bien connus de la FP.

je suppose que ma réponse me montre comme un fanboy FP. Je suggère de donner une vraie langue FP comme Haskell un tour sérieux avant de vous inquiéter de trouver des raisons pour lesquelles vous ne devriez pas.

2
Brad Clawsie

Je suis un gros fan et défenseur de la programmation fonctionnelle. Mais voici mes points:

  • facile à apprendre
    Les langages de programmation tels que python et Ruby (et de nombreuses autres langues) sont faciles à apprendre. Programmation fonctionnelle avancée, avec des langues telles que HASKELL, AGDA, COQ, ATS, etc., est assez difficile à apprendre. Certains utilisent le terme "programmation structurée mathématique". C'est facile si vous connaissez la théorie de la catégorie et les mathématiques abstraites, mais assez de travail si vous n'avez aucune idée de quoi par exemple "Monads".

  • La programmation avec un langage de script peut signifier plus de productivité.
    [.____] Dans certaines situations utilisant des langages de script comme python et Ruby peut conduire à plus de productivité. Cela signifie un prototypage rapide et un collage ensemble différents forfaits ou bibliothèques. Même en utilisant des langues dynamiques (par exemple, la programmation orientée objet dynamique) peut être une bonne chose dans ce contexte. Habituellement, la typographie statique est meilleure, mais le script avec des types dynamiques peut avoir un effet positif.

  • Considérations commerciales
    La programmation n'est qu'un petit sous-ensemble de projets logiciels réussis. Les logiciels doivent travailler, les utilisateurs doivent être heureux et cela ne dépend pas nécessairement du langage de programmation utilisé. Les gestionnaires doivent penser aux avantages et aux risques lors de l'évaluation des nouvelles langues technologiques et de programmation. Les nouveaux programmeurs peuvent-ils apprendre rapidement le nouveau langage de programmation? Existe-t-il une expérience dans la société avec la technologie? Y a-t-il un risque et cela sera-t-il difficile à discuter avec la haute direction?

Dans le contexte commercial, la programmation fonctionnelle peut être utilisée dans des systèmes qui ajoutent aux composants du logiciel principal, par exemple, des composants qui ne sont pas aussi critiques. Par exemple, une banque qui changera à peine le logiciel de base, mais ajoutez de nouvelles pièces (interface graphique, logiciels de surveillance, etc.) dans le nouveau langage de programmation. (Peut-être qu'il y a des exceptions, mais c'est mon expérience avec les banques.)

En outre, la programmation fonctionnelle est très utile lorsque la vérification formelle est un avantage ou un must.

2
mrsteve

FP est cool dans les universités car il est cool d'écrire de beaux programmes courts, tout en ignorant les performances. Il n'y a pas de complot contre cela dans le monde réel. Également, par exemple, la mise en œuvre de certaines choses (triix tri par exemple) semble être une douleur totale au FP. OH et le code généré est IMHEXPERENCE SLOOOOOOOOOOOOOOOOOOOOWOW.

0
NoSenseEtAl

Même si j'ai peu d'expérience avec des langages de programmation fonctionnelle (je connais des haskell et lisp) je trouve le FP paradigme très puissant et souvent plus élégant que d'autres paradigmes. J'aimerais avoir l'occasion de travailler sur un projet sérieux utilisant FP.

La seule zone dans laquelle j'ai des doutes sérieux concernant l'efficacité de FP est dans la manière dont il peut traiter des structures de données complexes qui ne peuvent pas être définies de manière inductive, par exemple des graphiques. Par exemple, si je dois Implémenter un algorithme qui fonctionne sur un grand graphe, éventuellement marcher dans le graphique et faire de petits changements locaux, je me demande si un FP peut correspondre à une approche impérative dans laquelle le programme est autorisé à passer de nœud au nœud utilisant des pointeurs.

0
Giorgio

Certains ont une courbe d'apprentissage assez raide, prenant une longue période (surtout si vous venez de OOP; vous becquez votre tête à quelques reprises avant d'obtenir le changement de paradigme).

Même si j'ai commencé à obtenir une programmation fonctionnelle (en provenance de Java et d'aller à Clojure), je trouve toujours assez difficile. La communauté ne semble pas écrire du code aussi expressif que Java.

On dirait qu'il y a une petite perte d'expressivité et une faible augmentation de la complexité.

0
Belun