Question

Existe-t-il un langage fonctionnel offrant un support et des outils efficaces pour la création de services Web? J'ai étudié Scala (qui compile sur la machine virtuelle Java et peut utiliser les bibliothèques Java) et F # (qui est .NET), mais ceux-ci sont jeunes et présentent certaines inefficacités. Scala en particulier ne prend pas en charge l’élimination des rappels, sauf dans les fonctions auto-récursives, ce qui limite le type de composition que vous pouvez effectuer (c’est une limitation fondamentale de la JVM). F # est très nouveau et ne semble pas encore totalement supporté, ce qui le rend plus risqué qu’un langage plus conventionnel.

Est-il possible de créer un service Web en utilisant Haskell, ML ou tout autre langage fonctionnel plus traditionnel, ou serait-il préférable d’utiliser Scala ou F #? D'autres suggestions?

Était-ce utile?

La solution

Si .NET est une option pour la plate-forme, ne négligez pas F # en raison de sa jeunesse. À mesure qu'il se rapproche de devenir un produit officiel, il s'intègre de mieux en mieux à Visual Studio et hérite de tous les avantages offerts par .NET.

Microsoft et une communauté enthousiaste bénéficient également d'un support actif et accessible.

Autres conseils

Ocaml a Ocsigen / Eliom ... Je ne peux toutefois pas dire que je l'ai utilisé. Il en est également à ses débuts.

Erlang, avec Yaw . C'est un langage amusant et puissant, qui évolue remarquablement bien et rend l'utilisation de 100 ou 1000 processus sûre et facile. Et amusant.

(Je pense aussi que c'est joli.)

Haskell:

Regardez cette question: Quel est le moyen le plus simple d'écrire des applications Web dans Haskell?

En gros, WASH , HAppS et Janus sont les trois grands de Haskell en ce moment. Mon vote va à HAppS, qui a le meilleur tutoriel pour le moment.

Il existe également un HSP , mais je ne l'ai pas consulté ou pensé récemment.

Veuillez lire cette introduction sur F # et ASP.NET qui vous donneront vous un bon début.

Il existe plusieurs exemples sur le Web dans lesquels F # est utilisé dans des applications Web. L'un d'eux est par exemple le autocompleter de Tomas Petricek qu'il a construit comme application illustrative à son article " F # Outils Web: les applications Ajax simplifiées " . J'ai moi-même utilisé F # dans le cadre d'un service Web et je vous garantis que cela fonctionne bien:).

Si vous le faites pour le plaisir, et non pour la robustesse ou le lieu de travail, vous pouvez rechercher ARC . C'est un langage inachevé et en progrès, avec les avantages et les inconvénients que cela implique.

disclaimer: non affilié à ARC ou Paul Graham

Reddit a été construit sur Lisp, n’est-ce pas? Et Paul Graham parle très fort de son agilité, en particulier avec les applications Web.

Vous pourriez envisager Clojure - c'est un langage très nouveau, mais il semble très prometteur pour les applications simultanées évolutives et présente l'avantage d'une très bonne intégration JVM et d'un accès à toutes les bibliothèques Java (comme Scala).

Clojure a également un certain nombre de caractéristiques de conception qui permettent de contourner le problème de la récursion de la queue (construction spéciale récurrente, de nombreuses fonctions principales sont implémentées de manière itérative, etc.)

Bien que je ne puisse pas le recommander car je joue encore avec, Erlang est très puissant.

Je dois accepter la recommandation concernant Clojure. Je viens de terminer le test de charge d'un service de flux de nouvelles écrit en langage Clojure qui a été maintenu 80 postes d’activité sortants par seconde par serveur Web Clojure fonctionnant sur une instance m1.medium EC2.

La génération précédente de langages fonctionnels comportait des outils tels que Ocsigen (pour OCaml) et HApps (pour Haskell), mais elle n’avait pratiquement aucun utilisateur: il s’agissait d’un logiciel totalement non testé.

En revanche, Scala et F # s’appuient sur du code très bien testé de Java et .NET. En particulier, F # a été très fortement développé par Microsoft au cours de la dernière année car il est en cours de production. Aucun autre langage fonctionnel n'a jamais reçu ce niveau de soutien et, par conséquent, F # est déjà très utilisable (et loin devant des langages comme Haskell en termes d'outils de développement).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top