2010-02-20 23 views
9

Estoy considerando aprender un lenguaje de programación funcional. Decidí construir una aplicación web de tamaño mediano.Lisp o Haskell para desarrollo de aplicaciones web

Reduje las opciones a Haskell y Common Lisp.

La aplicación web necesita una interfaz con alguna base de datos relacional (MySQL, Firebird o Postgres) y debe ejecutarse en Linux. Obviamente, tiene que interactuar bien con el software del servidor web. No tengo experiencia con idiomas funcionales, mi experiencia es C, C++, PHP y JavaScript.

¿Cuál es el preferido para este uso y por qué?

No estoy seguro de si esta pregunta debería marcarse como subjetiva? Realmente no es "qué idioma es mejor", sino "que es más adecuado para esta tarea en particular"

+1

No se olvide de revisar F # como una opción. – ChaosPandion

+1

JavaScript se presta bastante bien para ser utilizado como un lenguaje funcional. – McPherrinM

+1

Si observa el perfil de Milan Babuškov, es bastante obvio que prefiere Linux como plataforma, lo que hace que F # sea una sugerencia completamente inútil. –

Respuesta

5

Lisp tiene una buena historia en la Web. Las tiendas de Yahoo se escribieron inicialmente en Lisp.

1

Si su principal consideración es conseguir un punto ideal entre las técnicas funcionales y la funcionalidad web, me sería difícil superar F # teniendo en cuenta que tiene todo el material web. Horneado. Es una gran cantidad de precocinado , código de producción reforzada a su disposición. Podrías hacer MVC con él, y si no quieres correr en Windows y tener un espíritu pionero (lo que supongo que haces teniendo en cuenta la pregunta), entonces probar un MVC con F # en Mono estaría realmente ahí afuera. Me gustaría amor para ver ese combo!

No sé Lisp, pero en comparación con Haskell, F # sería mucho más productivo en cuanto a obtener una aplicación web escrita con un lenguaje funcional ... Amo a Haskell, pero por lo que quiere hacer Usted tengo que mirar como F # como la primera opción, IMO.

+3

F # en Mono funciona, pero no tan bien como podría. http://www.mono-project.com/Runtime_Projects dice que "Arreglo de soporte de cola para F #" está en marcha. – ephemient

+4

Usted no dice por qué F # es mejor, lo afirma. –

+1

Una gran cantidad de cosas F # han parecido un poco ásperas cuando las he visto ... La integración de .NET suena bien en papel, pero tratar de usar bibliotecas muy poco funcionales en un lenguaje funcional es generalmente un ejercicio de masoquismo . Si tuviera que escribir una aplicación no trivial en F # probablemente consideraría portar bibliotecas OCaml existentes en lugar de usar cosas .NET ... en ese punto me preguntaría por qué no solo usar OCaml y terminar con eso? –

5

en su posición, escogería Haskell por tres razones:

  • bastante fácil de aprender
  • Hackage, que proporciona una gran cantidad de bibliotecas que podrían hacer mucho de lo que quiere, incluyendo HAppS, que proporciona una gran cantidad de funcionalidad para aplicaciones de servidor
  • Excelente comunidad. Su canal de IRC es genial.
+5

Acerca de "Bastante fácil de aprender": Haskell es de hecho un lenguaje muy pequeño y muy regular (en comparación con, por ejemplo, Java o C++) pero no lo llamaría exactamente fácil. La evaluación diferida y la pureza del concepto pueden no ser específicos de Haskell, pero aún debe aprender a usarlos antes de poder hacer * cualquier cosa * en Haskell. –

+1

Iría más allá de SealedSun y diría: haskell es generalmente demasiado difícil * para hacer las cosas con * para la mayoría de las personas. –

+2

No seas ridículo. Es posible que Haskell no esté familiarizado con las personas que provienen de los principales idiomas imperativos, pero aprender lo suficiente como para simplemente retomarlo y hacer algo no es gran cosa. Puede tomar un poco más de tiempo realmente ponerse en marcha, pero si alguien realmente quiere * aprender * no es difícil en absoluto. –

6

'Common Lisp' no es realmente un lenguaje funcional. Tiene elementos de un lenguaje funcional, pero igualmente incluye soporte para programación imperativa y orientada a objetos. Los programas generalmente están escritos en una combinación de esos.

Generalmente Common Lisp y Haskell son idiomas muy diferentes.

Si desea aprender programación funcional avanzada, entonces Haskell sería más adecuado.

La escritura de aplicaciones web en Common Lisp usando una base de datos y ejecutándose en Linux es posible y se ha hecho.

10

Todos los idiomas que vale la pena ofrecen muchas bibliotecas para aplicaciones web. Haskell no es una excepción, y hay cientos de bibliotecas web para el idioma.

La disponibilidad de las bibliotecas debe ser su principal consideración (que no sea decir, las necesidades de los altos niveles de concurrencia).

Puede encontrar las bibliotecas de Haskell para estas cosas aquí:

Todo se puede instalar con:

$ Cabal instalar $ foo

Cuestiones relacionadas