2009-11-25 8 views
9

Y at-il des inconvénients à avoir first class functions dans une langue?Inconvénients des fonctions de première classe

Joel dans cette entry dit

"Object-oriented programming languages aren't completely convinced that you should be allowed to do anything with functions." 

je pourrais être naïf, mais pourquoi ne pas toutes les langues premières soutiennent les fonctions de classe s'il n'y a pas des questions beaucoup

Répondre

7

Dans un monde idéal où il n'y avait jamais de coût associé au développement de nouvelles fonctionnalités, le seul inconvénient que je peux voir inclure des techniques de programmation fonctionnelle serait la confusion pour les développeurs qui ne sont pas familiers avec les techniques fonctionnelles. voir cela autant d'un inconvénient).

En réalité, le traitement de fonctions en première classe nécessite généralement des réécritures significatives pour le compilateur lui-même. Le coût de faire ceci doit être pesé contre le gain à long terme.

2

L'ajout de cette fonctionnalité pourrait être un désavantage si l'introduction du changement nécessite une réécriture coûteuse de compilateurs de langue, d'interprètes et d'autres outils. Cela peut également être un inconvénient si la culture de la langue n'est pas suffisamment familière avec les avantages offerts par cette fonctionnalité, auquel cas l'ajout de la fonctionnalité est une perte d'effort.

1

En outre, les fonctions de première classe requièrent une interprétation du code à l'exécution et une forme de récupération de place. Ces deux éléments ajoutent un surcoût qui pourrait ne pas convenir à certains problèmes et langages.

+0

Pas nécessairement. Il y a des langages avec des fonctions de première classe qui ne sont pas interprétées et n'ont pas de GC (c.-à-d. C++). Les fermetures sont plus difficiles à mettre en œuvre sans GC. – liori

Questions connexes