[clojure] ¿La programación funcional es relevante para el desarrollo web?



Answers

La programación funcional coincide muy bien con las aplicaciones web. La aplicación web recibe una solicitud HTTP y produce un resultado HTML. Esto podría considerarse una función de solicitudes a páginas.

Compare con las aplicaciones de escritorio, donde normalmente tenemos un proceso de larga ejecución, una IU con estado y flujo de datos en varias direcciones. Esto es más adecuado para OO, que se preocupa por los objetos con estado y paso de mensajes.

Question

Recientemente he estado viendo mucho sobre programación funcional y Clojure parece particularmente interesante. Si bien 'entiendo' la descripción básica de lo que es, no puedo entender cómo lo usaría día a día como desarrollador web, si es que puedo hacerlo. Mucho de lo que he leído se enfoca en el aspecto matemático de la programación funcional en lugar de las típicas situaciones de programación que se encuentran en OO regular.

¿Tengo el extremo equivocado del palo? ¿La programación funcional no está relacionada con el desarrollo web? Si no, ¿hay algún ejemplo de que se use 'para la web'?




Otra respuesta corta: http://www.mlstate.com - una plataforma de desarrollo web completa, basada en FP. La semántica limpia del lenguaje permite todo tipo de análisis automatizados de seguridad y protección, optimizaciones, etc.

Advertencia: yo trabajo allí.




Javascript (el lenguaje de la parte FE de la web y cada vez más el BE) no es funcional per se pero las funciones son funcionales de primer orden




Echa un vistazo a Ur/Web . Es muy rápido y su sistema de tipo estático sabe cosas como HTML y SQL, por lo que puede garantizar todo tipo de cosas buenas sobre la seguridad.




La programación funcional pura puede no corresponderse muy bien con el entorno de programación web. Pero el principal impedimento es solo la falta de infraestructura (marcos y API). Pasará mucho tiempo (probablemente nunca, honestamente) antes de que un lenguaje funcional tenga un entorno de programación web tan rico como Java, Python o Ruby.

Dicho eso, hay algunas opciones.

No tengo ninguna experiencia con ninguno de estos. Tal vez los comentaristas pueden opinar sobre lo que funcionó bien para ellos.




Están haciendo Links con programación funcional para la web.




Probablemente no lo use y no lo use, pero cuando diga que alguien siempre encontrará una excepción a la regla (Viaweb, etc.). Básicamente no hay un "súper lenguaje", solo hay líneas de código de trabajo, generalmente en "Blub". Incluso Paul Graham dice que el beneficio principal (de hecho) de un Lisp es la capacidad de prototipar rápidamente.

Además, los "superlenguajes" suelen afectar más que aumentar la legibilidad del código, lo que significa que el único "genio" que lo escribió debe mantenerlo para siempre, ya que nadie más puede entenderlo, especialmente porque es probable que lo escriba en su propio dialecto modificado. Esto disminuye el alcance posible de cualquier proyecto, lo que significa que incluso si se pueden hacer cosas nuevas e innovadoras, no son extensibles, por lo que permanecen en una escala relativamente pequeña (como Hacker News en Arc).

Eso no quiere decir que alguien no pueda tener una idea genial e implementarla en un estilo incomprensible que luego pueda volver a escribirse en Blub y extenderse para que mucha gente pueda beneficiarse de ello. En realidad, eso es exactamente lo que sucedió en todas las historias de éxito de Lisp, sin mencionar a todos los filósofos famosos que hayan existido. Pero, por supuesto, si usted es un "genio", también podría prototipar su producto de otra manera.

En cuanto a FP en la JVM, hay cosas limitadas pero interesantes posibles. Aunque personalmente lo usaría solo para la creación de prototipos, es posible que tenga un caso de uso (generalmente algo relacionado con el multi-threading) donde proporciona alguna mejora.




Aquí hay una experiencia de desarrollador web en la creación de aplicaciones web utilizando Haskell . Aunque los lenguajes funcionales son muy seguros y tienen una buena concurrencia, siempre carecieron de la mejor API, ya que ha sido querida por la academia desde hace mucho tiempo y, sin embargo, ha sido fuertemente aceptada en el mundo real. Espero que no esté muy lejos. Erlang ya se había metido en eso.




Para Clojure, hay un inicio interesante (TheDeadline) que se desarrolló usando Clojure y Google App Engine. Tienen un buen ppt en Slideshare y una entrevista en InfoQ.

Para una buena discusión sobre la implementación de Clojure con GAE: http://news.ycombinator.com/item?id=1239788

Hasta donde yo sé, Clojure tiene algunas bibliotecas de desarrollo web. Compojure Ring Conjure

Espero que esto responda algunas de tus preguntas =) (Estoy comenzando también ...)

Mejor, Ryan




Related