2008-09-19 10 views
13

¿Existe un lenguaje funcional que tenga un buen soporte y herramientas para construir servicios web? He estado buscando en Scala (que compila a JVM y puede usar las bibliotecas de Java) y F # (que es .NET), pero estos son jóvenes y tienen algunas ineficiencias. Scala en particular no es compatible con la eliminación de llamadas de cola, excepto en las funciones auto recursivas, lo que limita los tipos de composición que puede hacer (esta es una limitación fundamental de la JVM). F # es muy nuevo y aún no parece ser totalmente compatible, lo que lo hace más riesgoso que un lenguaje más convencional.¿Cuál es un buen lenguaje funcional sobre el cual construir un servicio web?

¿Es posible construir un servicio web usando Haskell, ML o cualquiera de los otros lenguajes funcionales más tradicionales, o sería mejor usar Scala o F #? ¿Cualquier otra sugerencia?

+0

http://stackoverflow.com/questions/105834/does-the-jvm-prevent-tail-call-optimizations pregunta acerca de su afirmación sobre la repetición de cola. ¿Puedes elaborar aquí o allá? – rcreswick

+0

Votación para cerrar como recomendación de herramienta y demasiado amplia. –

+1

@ Ciro Santilli - Estoy de acuerdo, especialmente ahora que hay un sitio de intercambio de pila de programadores para preguntas como esta. – Sam

Respuesta

10

Si .NET es una opción para la plataforma, no descarte F # debido a su juventud. A medida que se acerca a convertirse en un producto oficial, obtiene una mejor y mejor integración con Visual Studio y hereda todas las bondades que ofrece .NET.

También hay soporte activo y accesible tanto para Microsoft como para una comunidad entusiasta.

0

Aunque no puedo recomendarlo porque todavía estoy jugando con él, Erlang es muy poderoso.

2

Si está haciendo esto por diversión, y no por su robustez o lugar de trabajo, puede investigar ARC. Es un lenguaje inacabado, en progreso, con las ventajas y desventajas que eso implica.

exención de responsabilidad: no afiliado con ARC o Paul Graham

8

Ocaml tiene Ocsigen/Eliom ... No puedo decir que lo he utilizado, sin embargo. También está en sus primeras fases.

+1

He estado usando Ocsigen durante algunas semanas y puedo responder que funciona bastante bien. También está en 1.2 ahora, por lo que tienen al menos la suficiente confianza para darle un número de versión real. –

5

Erlang, con Yaws. Es un lenguaje divertido y poderoso, se escala notablemente bien y hace que el uso de 100 o 1000 procesos sea seguro y fácil. Y diversión.

(también creo que es bastante.)

4

Por favor, lea esta introducción en F# and ASP.NET que le dará un buen comienzo.

Hay varios ejemplos en la web en los que se utiliza F # en aplicaciones web. Uno de ellos es, por ejemplo, el autocompleter de Tomas Petricek que construyó como una aplicación ilustrativa para su artículo "F# Web Tools: Ajax applications made simple". También he usado F # como parte de un servicio web y te garantizo que funciona bien :).

-1

La generación anterior de lenguajes funcionales tienen herramientas como Ocsigen (para OCaml) y HApps (para Haskell) pero prácticamente no tienen usuarios: no están completamente probados.

Por el contrario, Scala y F # se basan en código muy probado de Java y .NET. En particular, F # ha sido muy desarrollado por Microsoft durante el año pasado porque está siendo productizado. Ningún otro lenguaje funcional ha recibido ese nivel de respaldo y, en consecuencia, F # ya es muy útil (y muy por delante de idiomas como Haskell en términos de herramientas de desarrollo).

+0

F # está muy por delante de las herramientas de desarrollo de Haskell? FUD. – alternative

1

Puede considerar Clojure: es un lenguaje muy nuevo, pero parece muy prometedor para aplicaciones simultáneas escalables y tiene la ventaja de una muy buena integración de JVM y acceso a todas las bibliotecas de Java (al igual que Scala).

Clojure también tiene bastantes características de diseño que reciben en torno al tema de la cola de recursión (construcción especial se repiten, muchas funciones básicas están implementados de forma iterativa, etc.)

0

tengo que estar de acuerdo con la recomendación de Clojure. Acabo de terminar una prueba de carga de news feed service written in Clojure que sostuvo 80 publicaciones de actividad saliente por segundo por cada servidor web Clojure que se ejecuta en una instancia m1.medium EC2.

Cuestiones relacionadas