Nécessité d'apprendre l'extension du langage haskell pour la production

10

Le langage de base Haskell est vraiment simple. Issu d'un milieu OO, la principale difficulté est de s'adapter au pur paradigme fonctionnel.

Tout en apprenant Haskell "basique", j'ai toujours considéré les extensions de langage comme des jouets pour les CS ou comme des expériences pour les futures versions du langage (comme from future import ???en python).

Cependant, quand j'ai commencé à regarder les frameworks Web tels que Yesod, je trouve que beaucoup de fichiers source nécessitent entre 3 et 4 extensions. Certains semblent assez simples (StringOverload). D'autres sont vraiment intimidants (GADT, Type Famillies, Template Haskell). Leur documentation est liée à des documents de recherche, ce qui fait peur à quelqu'un qui s'attend à apprendre "juste" une nouvelle bibliothèque.

Est-il nécessaire d'apprendre les extensions de langage GHC pour être productif dans Haskell? Si vous deviez embaucher un développeur Haskell pour une application de production, demanderiez-vous une telle connaissance?

Simon Bergot
la source

Réponses:

7

Est-il nécessaire d'apprendre les extensions de langage GHC pour être productif dans Haskell?

Oui. Et cela est vrai pour n'importe quelle langue / outil. Avec les connaissances de base / de base, vous pouvez résoudre les problèmes de concours en ligne, peut être un petit projet universitaire, mais certainement pas une application réelle.

Si vous deviez embaucher un développeur haskell pour une application de production, demanderiez-vous une telle connaissance?

Cela dépend maintenant de la présence d'une personne qui peut partager ces connaissances. Si oui, alors cette personne peut accélérer le nouvel employé. Sinon, vous devez d'abord obtenir une telle personne avec des connaissances. Et c'est encore vrai pour les nouvelles technologies.

Bien sûr, vous pouvez également essayer d'embaucher des personnes ayant une connaissance approfondie de Haskell. Mais Haskell étant relativement nouveau dans l'industrie et considérant que très peu de projets commerciaux ont été réalisés dans ce domaine, trouver une telle personne sera difficile. Le moyen efficace de constituer une équipe de professionnels à Haskell sera d'embaucher des personnes qui connaissaient les bases et désireuses de travailler à Haskell, puis de les former.

Manoj R
la source
J'allais protester, mais j'ai vu que Real World Haskell enseigne de nombreuses extensions linguistiques. Merci pour votre réponse.
Simon Bergot
2
"Et cela est vrai pour n'importe quel langage / outil" - c'est complètement faux. Par exemple, prenez des langages tels que Java, C #, C ++ - aucun d'eux n'a d'extensions de langage que l'on trouve couramment dans le code des applications du monde réel. Si vous devez utiliser des extensions linguistiques à chaque fois que vous devez écrire quelque chose de moins trivial que "les solutions aux problèmes du concours en ligne", à mon avis, il y a quelque chose de très mal avec la spécification de langue.
Malcolm
@Malcolm Pourquoi trouvez-vous "Si vous devez utiliser des extensions linguistiques à chaque fois que vous avez besoin d'écrire quelque chose de moins trivial que" les solutions aux problèmes du concours en ligne ", à mon avis, il y a quelque chose de très mal avec les spécifications linguistiques." pour être vrai? Quelle est la caractéristique d'une extension qui la rend négative? J'utilise ghc et les extensions fournies. L'ajout d'une extension à un projet existant semble tout aussi lourd que l'ajout d'une autre bibliothèque.
Davorak
2
@Davorak Parce qu'au lieu d'un seul langage, nous avons des millions de combinaisons d'extensions différentes, et vous ne savez pas si le code va compiler sur un certain compilateur. Les extensions rendent le code non portable. Et cela rend également la langue difficile à apprendre, car au lieu d'un seul ensemble de fonctionnalités que tout le monde utilise, il y a énormément de fonctionnalités supplémentaires, et vous n'avez pas la moindre idée de celles que vous devez connaître et utiliser et celles qui existent juste parce que les chercheurs s'amusent.
Malcolm
2
@Davorak C'est exactement le problème dont je parle: tout le monde utilise GHC, car c'est le seul compilateur encore activement maintenu. Les autres compilateurs ne peuvent pas suivre, donc personne ne peut les utiliser, et il n'y a pas de raison d'investir en eux. Quant aux bibliothèques: vous choisissez des bibliothèques pour le problème et ne travaillez qu'avec elles. Disons que si vous avez besoin de lire XML, vous n'avez besoin que d'une seule bibliothèque de lecture XML. Avec les extensions, cependant, ce n'est pas évident quand vous en avez besoin. Bien qu'il y ait aussi un problème avec les bibliothèques. Disons, en Java, il n'y a que des tableaux et des collections, et dans Haskell, il y a beaucoup de bibliothèques de tableaux.
Malcolm