Y a-t-il des inconvénients pour avoir Fonctions de première classe dans une langue? p>
Joel dans ce Entrée dit P>
Les langages de programmation orientées objet ne sont pas complètement convaincus que Vous devriez être autorisé à faire quoi que ce soit avec des fonctions. p> blockQuote>
Je pourrais être naïf ici, mais pourquoi toutes les langues ne soutiennent pas les fonctions de première classe s'il n'y a pas beaucoup de problèmes p>
3 Réponses :
L'ajout de cette fonctionnalité peut être un désavantage si l'introduction de la modification nécessite une réécriture coûteuse des compilateurs de langue, des interprètes et d'autres outils. Cela pourrait également être désavantagé si la culture de la langue n'est pas assez familière avec les avantages fournis par cette caractéristique dans laquelle l'ajout de la fonctionnalité est un gaspillage d'effort. P>
Dans un monde idéal où il n'ya jamais eu de coût associé à la mise au point de nouvelles caractéristiques, le seul inconvénient que je peux voir à inclure les techniques de programmation fonctionnelle serait confusion aux développeurs qui ne connaissent pas les techniques fonctionnelles (et je ne vois pas vraiment cela autant d'inconvénients). P>
En réalité, le traitement des fonctions en tant que première classe nécessite généralement des réécrites significatives au compilateur lui-même. Le coût de cela doit être pesé contre le gain à long terme. P>
En outre, les fonctions de première classe nécessitent une interprétation d'exécution du code et une forme de collecte des ordures. Ces deux ajoutent des frais généraux qui pourraient ne pas convenir à certains problèmes et langues. P>
Pas nécessairement. Il existe des langues avec des fonctions de première classe qui ne sont pas interprétées et n'ont pas de GC (F.E. C ++). Les fermetures sont plus difficiles à mettre en œuvre sans GC.