Pregunta

1) ¿Los lenguajes funcionales son adecuados para el desarrollo de aplicaciones web?

2) Son lenguajes funcionales adecuados para business / ERP / CRM ¿tipo de aplicaciones?

¿Fue útil?

Solución

Los lenguajes funcionales del tipo que usted describe son lenguajes de programación de propósito general, se usan para todo tipo de cosas, incluidas aplicaciones web y aplicaciones empresariales. (Yo uso Haskell).

Como Gabor implica, en última instancia, se trata de bibliotecas. Scala tiene un framework web: lift. Haskell tiene happstack , así como 2100 4400 (en 2010 2012) bibliotecas en Hackage para todo tipo de cosas.

En realidad, no se trata tanto del lenguaje, como de la cadena de herramientas, cuando se consideran dominios especializados particulares.

Otros consejos

Los lenguajes funcionales son buenos para cualquier cosa para la que desees usarlos.

Sin embargo, el desarrollo de aplicaciones en estos días no es tan simple como usar un lenguaje de programación. La ventaja de Java, C #, etc. es que vienen con bibliotecas grandes y otras mejoras de entorno que son absolutamente necesarias cuando se crea un software empresarial. La mayoría de los lenguajes funcionales no tienen ese gran soporte (¿todavía?).

F # puede ser prometedor, ya que está en el entorno .NET y puede aprovechar las herramientas disponibles allí (corríjame si me equivoco).

Este artículo describe cómo se usó Lisp, un lenguaje funcional temprano, para crear un sitio web Aplicación exitosa.

Los lenguajes funcionales son adecuados para el desarrollo de aplicaciones web, en particular Scala.

Eche un vistazo al marco Lift para obtener más información.

  

2) ¿Los lenguajes funcionales son adecuados para aplicaciones de tipo empresarial / ERP / CRM?

Para abordar el segundo punto sobre las aplicaciones empresariales / ERP / CRM: personalmente no las implementaría en un " puro " lenguaje funcional como Haskell, o un lenguaje funcional dinámico como Clojure. Por otro lado, estoy am implementando un ERP en Scala, que por supuesto es OOP / FP híbrido y está compilado estáticamente.

La razón por la que digo esto es que una aplicación de negocios como un ERP está fundamentalmente orientada a los registros: hay un esquema de datos que expresa los diferentes tipos de registros y la lógica de la aplicación se diseña casi en su totalidad para CRUDAR esos registros y aplicar flujos de trabajo empresariales personalizados. a ellos Y, fundamentalmente, no creo que este tipo de aplicaciones empresariales centradas en los datos sean una excelente opción para el modelo funcional.

La gente puede hablar sobre la discrepancia entre la POP y todo lo que les gusta, pero en última instancia, tanto la POO como las bases de datos están orientadas a la grabación: un lenguaje de POO con un buen ORM le permite asignar esos diferentes modelos de datos en su código y luego adjuntar el código para manejar Cada uno de los modelos. Y tener esto tipado estáticamente (idealmente con un ORM fuertemente tipado como el squeryl de Scala) reduce enormemente las posibilidades de un error de tiempo de ejecución o, por ejemplo, un cambio a uno de los modelos de datos que no se aplica correctamente a través del código.

No me malinterpretes: soy un gran fan de FP (estoy haciendo más y más de mis sistemas de programación en Haskell), pero para mí el enfoque orientado a la grabación de la POO tiene más sentido que la función - Orientación orientada de FP para manejar los objetos de datos de un ERP empresarial o similar. (Scala es una buena excepción a la regla porque puede usar el paradigma OOP con ORM de calidad para la manipulación de registros, pero también la bondad de FP para su programación general de aplicaciones).

  1. Sí, el nitrógeno es un buen ejemplo de un marco web funcional. Se escala también.

http://nitrogenproject.com/

Yaws es un fantástico servidor web para Erlang.

Si bien no diría que ningún lenguaje funcional particular está diseñado para el desarrollo web, tampoco diría que no se puede hacer desarrollo web con un lenguaje funcional. Creo que eso depende completamente de qué marcos web estén disponibles para el idioma que elija y de si hay o no servidores web que admitan el idioma.

Por ejemplo, estoy seguro de que puede usar F # junto con ASP.Net en IIS para realizar el desarrollo web. Dudo que haya soporte para F # en el motor de plantillas, pero definitivamente puede escribir lógica de negocios en F #.

De forma similar, hay mod_haskell para Apache, lo que debería hacer que sea relativamente fácil tener una salida dinámica con haskell. Aunque, nunca lo he usado personalmente. Al mismo tiempo, si hay un mod_ (erlang o scala) para Apache, sería igualmente fácil para esos idiomas.

En última instancia, creo que la naturaleza sin estado de los lenguajes funcionales debería ser adecuada para un marco web de estilo MVC sin estado. Sin embargo, creo que realmente se reduce a qué herramientas y marcos están disponibles para facilitarte la vida cuando trabajas con estos idiomas. Por ejemplo, Ruby no era realmente popular para el desarrollo web hasta que los trenes se hicieron populares, y realmente no me gustaba hacer nada por Internet con Python hasta que encontré django.

Los lenguajes funcionales proporcionan nuevos tipos de abstracciones que se pueden usar para el desarrollo web. Los servidores web basados ??en la continuación son, por ejemplo, populares entre los lenguajes funcionales. El servidor web del Esquema PLT es compatible con este tipo de desarrollo de aplicaciones web. Puede leer más sobre las continuaciones y su uso en el desarrollo web en wikipedia

La mayoría de los lenguajes funcionales, es decir, los que incluyó, se consideran lenguajes de propósito general. Para el desarrollo web, consideraría profundamente usar Clojure o Scala. Ambos tienen muy buenos frameworks web, y ambos se ejecutan en la JVM. Puedo recomendar totalmente a Clojure y Scala, pero no tanto para los demás.

Haskell tiene un marco web, pero nunca lo he usado.

¿Aplicaciones de negocios? Seguro Por qué no. Los lenguajes funcionales son excelentes para casi cualquier cosa.

Una de las mayores ventajas reclamadas por los defensores de los lenguajes funcionales es que facilitan la escritura de programas que pueden ejecutarse en paralelo. Pero las aplicaciones web normalmente no tienen problemas con el paralelismo. Normalmente, el servidor web / servidor de aplicaciones mantiene un grupo de subprocesos, y cada solicitud de usuario se asigna a un subproceso diferente, que puede ejecutarse en un procesador físico diferente. Por lo tanto, puede aprovechar múltiples procesadores sin demasiados problemas. El truco es que las aplicaciones web se caracterizan por un gran número de solicitudes pequeñas, y los hilos y los lenguajes imperativos funcionan bien allí. Donde los lenguajes imperativos comienzan a descomponerse es cuando tiene un número pequeño de solicitudes costosas de computación.

Otra gran ventaja de los lenguajes funcionales es que, dado que las funciones no tienen efectos secundarios, las pruebas son más fáciles. Usted prueba cada función de forma aislada en algunas de sus entradas, y sabe que el sistema funcionará. Pero, hay una trampa. Si su operación implica entrada o salida, utiliza una mónada en lugar de una función, y pierde este beneficio de comprobabilidad para esa parte de su código.

Pero, normalmente, las aplicaciones web implican leer información de una solicitud, realizar solicitudes a una base de datos, leer la respuesta de la base de datos y dar formato a una respuesta. Son muchísimas E / S o mónadas y muy pocas oportunidades para las funciones.

Dadas estas características de las aplicaciones web, ¿qué beneficios aportan los lenguajes funcionales a la programación de aplicaciones web?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top