Je pense que la connerie environnant les langages fonctionnels est le plus gros problème avec la programmation fonctionnelle. Quand j'ai commencé à l'aide de la programmation fonctionnelle en colère, un gros obstacle pour moi a été de comprendre pourquoi beaucoup de la très évolué arguments mis en avant par la communauté Lisp (par exemple, à propos des macros et homoiconic syntaxe) étaient erronées. Aujourd'hui, je vois beaucoup de gens d'être trompé par le Haskell communauté à l'égard de la programmation parallèle.
En fait, vous n'avez pas à chercher plus loin que ce très thread pour voir certains de il:
"En général, les experts ont pas de difficulté de l'écriture rapide de programmes fonctionnels; et en fait, certaines des plus performants en matière de programmes parallèles sur 8 et 16 processeurs sont maintenant écrit en Haskell."
Des déclarations comme celle-ci peut vous donner l'impression que les experts ont choisir Haskell, car il peut être très bon pour le parallélisme, mais la vérité est que Haskell performance suce et le mythe que Haskell est bon pour le multicœur parallélisme est perpétué par Haskell chercheurs avec peu ou pas de connaissances sur le parallélisme qui évitent réel d'examen par les pairs que par la publication de l'intérieur de la zone de confort de revues et de conférences, sous le contrôle de leur propre clique. Haskell est invisible dans le vrai monde parallèle/multicore/HPC précisément parce qu'il aspire à la programmation parallèle.
Plus précisément, le vrai défi de la programmation multicœur, c'est profiter des caches CPU à assurez-vous que les cœurs ne sont pas affamés de données, un problème qui n'a jamais été abordée dans le contexte de Haskell. Charles Leiserson du groupe au MIT ont fait un excellent travail d'expliquer et de résoudre ce problème en utilisant leurs propres Cilk langue qui allait devenir l'épine dorsale du monde réel de la programmation parallèle pour multicores dans les deux Intel TBB et de Microsoft de TPL .NET 4. Il y a une superbe description de la façon dont cette technique peut être utilisée pour écrire élégant de haut niveau de l' impératif de code qui compile à évolutive haute performance code dans le livre de 2008 Le cache de la complexité de multithread cache inconscient algorithmes. J'ai expliqué cela dans mon examen de certains de l'état-of-the-art en Parallèle Haskell recherche.
Ce qui laisse un gros point d'interrogation sur l'aspect purement fonctionnel paradigme de programmation. C'est le prix à payer pour l'abstraction du temps et de l'espace, qui a toujours été la principale motivation derrière ce paradigme déclaratif.
EDIT: Texas Multicœur Technologies ont récemment trouvé une Haskell être décevante dans le contexte de multicœur parallélisme.