En ce qui concerne de faire un serveur de jeu, il semble Erlang vient toujours comme un langage qui est "construit pour ce genre de chose" avec son évolutivité et fonctionnalités de simultanéité. Je n'ai pas d'expérience dans Haskell, ni Erlang, mais sur la surface, ils semblent être les mêmes. La recherche en Haskell docs, on dirait qu'elle a une prise en charge multiprocesseur de l'évolutivité et de la simultanéité, et Haskell est dit être un plus solide de la langue et visiblement mieux la communauté. Ma question est, alors, Haskell est considéré comme bonne d'une solution de serveur de bâtiment comme Erlang est censé être?
Réponses
Trop de publicités?Cela dépend de ce que vous voulez faire avec votre serveur. Que peut-on attendre d'une télécoms application, Erlang excelle à faire des tâches simples avec très haute simultanéité. Si votre serveur aura besoin d'un bazillion connexions par seconde, ou à la fois, Erlang est votre ami. Erlang offre également un meilleur support pour la distribution de charge sur plusieurs serveurs.
Haskell excelle dans le complexe, calcul symbolique et à partir d'avril 2009 pouvez également faire face à un grand nombre de threads (voir la mise à jour ci-dessous). En outre, Haskell n'a plus d'outils pour se complique code de droit: des choses comme QuickCheck, SmallCheck, et le système de type statique. Donc, si votre serveur est en train de faire compliqué, des choses intéressantes et vous pouvez vous en tirer avec un seul serveur, vous êtes probablement mieux avec Haskell.
Mise à jour le 13 avril 2009: Don Stewart, une source fiable, rapporte que "le dernier fil-mise à l'échelle d'un bogue dans le Glasgow Haskell Compilateur est écrasé il y a quelques mois", et que certains utilisateurs de rapports à l'aide d'un millions de Haskell fils sans difficulté. En janvier 2009, il y a un nouveau document inédit de l'réalisateurs qui peut décrire comment cela est réalisé.
Mise à jour le 21 février 2012: John Hughes de la société, QuviQ, rend maintenant QuickCheck pour Erlang. Ils ont trouvé un certain nombre de très intéressant bugs. Vous pouvez télécharger "QuickCheck Mini" pour gratuit; elle est comparable à la Haskell QuickCheck. Il est aussi plus puissant que la version commerciale.
Je n'ai pas d'expérience dans Haskell, ni Erlang, mais sur la surface, ils semblent être les mêmes.
Il y a quelques jolis différences marquées entre Haskell et Erlang. Erlang est spécialement conçu pour simultanées systèmes. La langue et de la machine virtuelle sont tous deux conçus pour supporter de nombreux, de nombreux processus, et Erlang utilise un acteur-système de style de gérer la communication entre chacun d'eux. Haskell prend également en charge la simultanéité assez facilement, en raison de son caractère fonctionnel, mais il est encore un peu plus difficile de faire de la programmation simultanée en Haskell, et la langue n'est pas spécialement mis en place pour faciliter cela.
Comme Haskell, Erlang ne pas partager l'état entre les processus, de sorte qu'il est facile d'écrire multi-processus logiciel. Mais le style de programmation entre Haskell et Erlang est un peu différent, puisque Erlang met l'accent sur l'utilisation de petits processus pour effectuer un traitement simultané.
J'aime Haskell-c'est l'un de mes préférés de langues -- mais si j'allais écrire un logiciel de serveur, je serais probablement utiliser Erlang. Mais il est bien sûr possible d'écrire un serveur en Haskell, si vous savez Haskell mieux ou trouver la bibliothèque, le support supérieur.
Les références de ces documents montrent que Haskell peut rivaliser avec Apache:
Le développement de la haute performance serveur web en Simultané Haskell
Simon Marlow
http://research.microsoft.com/apps/pubs/default.aspx?id=67499
Combinant Des Événements Et Des Threads Pour Les Évolutive Des Services De Réseau:
La mise en œuvre Et l'Évaluation De Monadique, au niveau de l'Application de la Simultanéité des Primitives
Peng Li Stephan A. Zdancewic (voir Figure 19):
http://repository.upenn.edu/cgi/viewcontent.cgi?article=1391&context=cis_papers
Maintenant, il y a une nouvelle option: utilisez le FFI Haskell / Erlang pour écrire votre logique dans Haskell et communiquer en utilisant Erlang .
La dernière fois que j'ai regardé, les bibliothèques et les frameworks pour construire des serveurs évolutifs à Erlang avaient l'air un peu plus matures que ceux de Haskell. Je suggère de regarder Programmation Erlang: Software for a Concurrent World pour des informations à ce sujet.