web-dev-qa-db-fra.com

Langue fonctionnelle la plus rapide

J'ai récemment plongé dans la programmation fonctionnelle, en particulier Haskell et F #, le plus grand nombre. Après que certains googling autour, je n'ai pas pu trouver une comparaison de référence des langues fonctionnelles les plus importantes (Scala, F #).

Je sais que ce n'est pas nécessairement juste pour certaines des langues (Scala me vient à l'esprit), étant donné qu'ils sont des hybrides, mais je veux juste savoir quels surperforms sur les opérations et globales.

18
Farouk

Selon le Great Benchmarks Game , ATS est plus rapide que le reste avec Haskell, Scala et l'une des variantes de la LISP commune dans une cravate rugueuse pour la vitesse fermée derrière cela. Après que cet OCAML et F # sont à peu près la même catégorie de vitesse avec raquette et clojure à la traîne ...

Cependant, presque rien de tout cela ne signifie rien du tout. C'est toute une question de problème, de la machine, du compilateur, des techniques de codage, et dans certains cas, de la chance. D'une manière générale, des langages directes de la machine comme Haskell surperformeront surperformer VM compilé des langages comme F # et surperformez énormément les langages d'interprétation purement interprétés. En règle générale, les langues distinctes sont plus rapides que dynamiquement dû à l'analyse statique permettant à tous les types. Les opérations à calculer à la compilée plutôt que sur le temps d'exécution. Encore une fois, ce sont des règles générales, il y aura toujours des exceptions. "Paradigms" ont peu à voir avec cela.

25
World Engineer

Si vous envisagez des langues uniquement sur la vitesse de l'exécution, vous manquez de grands points. La vitesse est une bonne chose, mais ce n'est pas la seule chose.

Haskell utilise un système de type très robuste pour créer des programmes qui seront beaucoup plus susceptibles d'être libres et robustes.

Erlang utilise son système de surveillance intégré pour vous permettre de créer des systèmes de défaillance pouvant vous donner un énorme niveau de fiabilité face à divers types de défauts. De plus, Erlang peut vous donner un niveau de concurrence qui est difficile à faire correspondre dans d'autres langues.

En vérité, je considérerais la rapidité d'exécution dans la journée moderne pour être assez loin sur la liste de ce que je considérerais dans la plupart des cas. (OK Si je faisais un calcul numérique massif, je voudrais probablement utiliser Fortran pour la vitesse, sinon elle n'est tout simplement pas assez importante pour la matière)

6
Zachary K