J'ai mis du temps à apprendre la programmation fonctionnelle et je suis arrivé à la partie où je veux commencer à écrire un projet au lieu de simplement me lancer dans des tutoriels / exemples.
En faisant mes recherches, j'ai trouvé qu'Erlang semble être assez puissant en ce qui concerne l'écriture de logiciels simultanés (ce qui est mon objectif), mais les ressources et les outils de développement ne sont pas aussi matures que les produits de développement Microsoft.
F # peut fonctionner sur linux (Mono) afin que cette exigence soit satisfaite, mais en regardant autour d'Internet, je ne trouve aucune comparaison de F # vs Erlang. En ce moment, je penche vers Erlang juste parce qu'il semble avoir le plus de presse, mais je suis curieux de savoir s'il y a vraiment une différence de performance entre les deux systèmes.
Étant donné que j'ai l'habitude de développer en .NET, je peux probablement me familiariser avec F # beaucoup plus rapidement qu'Erlang, mais je ne trouve aucune ressource pour me convaincre que F # est tout aussi évolutif qu'Erlang.
Je m'intéresse surtout à la simulation, qui va envoyer beaucoup de messages traités rapidement vers des nœuds persistants.
Si je n'ai pas fait du bon travail avec ce que j'essaye de demander, veuillez demander plus de vérification.
Réponses:
Qu'entendez-vous par «viable»? "Avoir le plus de presse" n'est pas forcément le meilleur moyen de choisir une langue.
La renommée d'Erlang est sa capacité de parallélisation massive. C'est pourquoi il est couramment utilisé dans les commutateurs téléphoniques Ericsson. Erlang est doux en temps réel, vous pouvez donc y garantir certaines performances.
F # bénéficie des capacités d'optimisation de la gigue .NET. De plus, le langage lui-même est conçu pour être un langage fonctionnel très performant (il s'agit d'une variante d'OCaml, largement utilisée dans le secteur financier en raison de sa rapidité).
En fin de compte, à moins que vous ne prévoyiez d'exécuter des millions de minuscules agents en même temps (ce pour quoi Erlang est optimisé), F # devrait être à la hauteur.
Cette page explique les cas d'utilisation appropriés pour Erlang.
la source
Peu de déclarations objectives peuvent être faites à ce sujet car les performances de ces deux langages dépendent fortement de l'application et du style de programmation.
Le seul conseil que je puisse donner est que F # a l'avantage de performance d'un système de type statique et le CLR fait un bon travail en exploitant cela afin d'améliorer les performances. F # possède des agents asynchrones et le passage des messages, mais il n'a pas été optimisé et le code synchrone est souvent 10 fois plus rapide.
Erlang est typé dynamiquement, ce qui le désavantage considérablement en termes de performances (attendez-vous à beaucoup plus de boxe), mais il a été conçu à partir de zéro pour prendre en charge le passage rapide des messages entre les agents asynchrones, ce qui pourrait bien être beaucoup plus rapide que l'équivalent F # . Cependant, je n'ai pas de résultats de référence pour étayer cela: c'est juste mon attente.
Soit dit en passant, Erlang et F # sont des langues relativement marginales avec de petites communautés et, en raison de leurs différents marchés cibles, les personnes familières avec les deux sont rares. La seule personne à laquelle je peux penser qui se qualifie presque est Jesper Louis Andersen mais je ne sais pas combien de F # il a fait.
la source
Vous devriez lire cet article de Joe Armstrong: http://erlang.org/pipermail/erlang-questions/2012-F February / 064277.html
Bref, Erlang n'a pas été conçu pour être rapide! Il est raisonnablement rapide dans de nombreux cas, mais cela est secondaire à des problèmes tels que la tolérance aux pannes et la stabilité.
La vérité est qu'Erlang et F # sont des langues agréables, et même si je n'ai regardé que F #, j'ai écrit un livre sur Erlang: Construire des applications Web avec Erlang et je peux dire que c'est un langage amusant à travailler.
Je voudrais également souligner qu'il semble y avoir un boom des livres sur le langage fonctionnel qui seront publiés au cours des 6 à 9 prochains mois. Je connais au moins 4 sur Erlang (y compris le mien), un sur Haskell, ainsi que des titres sur OCaml, Clojure et F #.
la source