Je cherche à démarrer un projet expérimental en utilisant un langage fonctionnel et j'essaie de décider entre Erlang et Haskell, et les deux ont des points que j'aime beaucoup.
J'aime le système de caractères forts et la pureté de Haskell. J'ai le sentiment que cela facilitera l'écriture de code vraiment fiable. Et je pense que le pouvoir de Haskell facilitera beaucoup ce que je veux faire.
Du côté négatif, j'ai l'impression que certains des cadres pour faire des trucs Web sur Haskell tels que Yesod ne sont pas aussi avancés que leurs homologues Erlang.
J'aime plutôt l'approche Erlang des threads et de la tolérance aux pannes. J'ai le sentiment que l'évolutivité d'Erlang pourrait être un atout majeur.
Ce qui m'amène à ma question, quelle a été l'expérience des gens dans la mise en œuvre de backends d'applications Web à la fois à Haskell et à Erlang. Existe-t-il des packages pour Haskell pour fournir certains des threads et acteurs légers que l'on a à Erlang?
la source
Réponses:
La seule question que je me pose est: que fait votre service Web? Si le service Web est vraiment un problème fonctionnel, alors Haskell conviendra mieux.
Erlang n'est pas nécessairement un langage fonctionnel. C'est un langage procédural avec un modèle d'exécution très solide pour les systèmes massivement parallèles. Il a été conçu pour l'industrie des télécommunications, et il conviendrait certainement parfaitement pour répondre aux demandes de services Web.
Voir cette page * pour un aperçu des différences entre la programmation procédurale et fonctionnelle. (Toutes mes excuses à l'avance pour le laid noir sur la page cyan).
Si votre service Web effectue une bonne quantité de correspondance de modèles et d'application de règles, Haskel est votre choix. Si vous voulez juste une infrastructure évolutive qui ne soit pas trop différente des langues que vous connaissez probablement déjà, choisissez Erlang.
(* lien via la machine Wayback. Le fichier d'origine a été supprimé)
la source
Entre les deux que vous mentionnez, Haskell est définitivement académique, tandis qu'Erlang est utilisé dans des projets réels à haute évolutivité. Donc, des deux pour les services Web, je choisirais Erlang.
Mais je dirais que vous avez un troisième choix: le scala , une langue qui est fortement influencée à la fois par Haskell et Erlang. Il est utilisé pour créer des services Web de premier ordre comme Twitter ou Foursquare. Il y a même Lift , un framework web inspiré de Rails et Django, bien qu'avec une approche un peu différente et plus fonctionnelle. Foursquare utilise Lift.
la source
Habituellement, je dis: "apprenez des choses aussi loin que possible de votre zone de confort, cela fera de vous un meilleur programmeur même si vous ne l'utilisez jamais en pratique".
Dans ce cas, cela pourrait probablement signifier Haskell; mais Erlang devient non seulement presque socialement acceptable; mais les principaux points (processus légers, transmission de messages, grande évolutivité) arrivent sur de nombreuses autres plates-formes «pratiques», de sorte que les leçons apprises ont une applicabilité importante et immédiate sur des travaux plus «réels».
mon conseil: si c'est pour le plaisir, faites Haskell. si c'est pour l'entraînement, allez Erlang.
la source