web-services - mejor - que es un lenguaje de programacion web
¿Cuál es un buen lenguaje funcional sobre el cual construir un servicio web? (11)
¿Hay 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.
¿Es posible construir un servicio web usando Haskell, ML o cualquiera de los otros lenguajes funcionales más tradicionales, o sería mejor ir con Scala o F #? ¿Cualquier otra sugerencia?
Aunque no puedo recomendarlo porque todavía estoy jugando con él, Erlang es muy poderoso.
Debo estar de acuerdo con la recomendación de Clojure. Acabo de terminar una prueba de carga de un servicio de noticias escrito en Clojure que sostuvo 80 publicaciones de actividad saliente por segundo por cada servidor web Clojure que se ejecuta en una instancia m1.medium EC2.
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 bonita)
Haskell:
Eche un vistazo a esta pregunta: ¿Cuál es la forma más sencilla de escribir aplicaciones web en Haskell?
Básicamente, WASH , HAppS y Janus son los tres grandes en Haskell en este momento. Mi voto es para HAppS que tiene el mejor tutorial en este momento.
También hay HSP pero no lo he visto o pensado recientemente.
La generación anterior de lenguajes funcionales tiene 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).
Lea esta introducción en F # y ASP.NET que le dará un buen comienzo.
Hay varios ejemplos en la web en los que F # se usa en aplicaciones web. Uno de ellos es, por ejemplo, el autocompletador de Tomas Petricek que construyó como una aplicación ilustrativa de su artículo "F # Web Tools: las aplicaciones de Ajax se simplificaron" . También he usado F # como parte de un servicio web y te garantizo que funciona bien :).
Ocaml tiene Ocsigen / Eliom ... Aunque no puedo decir que lo haya usado. También está en sus primeras fases.
Reddit fue construido con ceceo, ¿no es así? Y Paul Graham habla muy bien de su agilidad, especialmente con webapps.
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 por parte de Microsoft y una comunidad entusiasta.
Si lo hace por diversión, y no por su solidez o lugar de trabajo, puede investigar ARC . Es un lenguaje inacabado, en progreso, con las ventajas y desventajas que eso implica.
descargo de responsabilidad: no afiliado con ARC o Paul Graham
Podría 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 solucionan el problema de la recursividad de la cola (constructo recurrente especial, muchas funciones centrales se implementan de forma iterativa, etc.)