Estoy buscando comenzar un proyecto experimental usando un lenguaje funcional y estoy tratando de decidir entre Erlang y Haskell, y ambos tienen algunos puntos que realmente me gustan.
Me gusta el sistema de tipo fuerte y la pureza de Haskell. Tengo la sensación de que facilitará la escritura de código realmente confiable. Y creo que el poder de Haskell hará que algo de lo que quiero hacer sea mucho más fácil.
En el lado negativo, tengo la sensación de que algunos de los Frameworks para hacer cosas web en Haskell, como Yesod, no son tan avanzados como sus contrapartes Erlang.
Prefiero el enfoque de Erlang a los hilos y a la tolerancia a fallos. Tengo la sensación de que la escalabilidad de Erlang podría ser una gran ventaja.
Lo que lleva a mi pregunta, ¿cuál ha sido la experiencia de las personas en la implementación de backends de aplicaciones web tanto en Haskell como en Erlang? ¿Hay paquetes para que Haskell proporcione algunos de los hilos y actores livianos que uno tiene en Erlang?
fuente
Respuestas:
La única pregunta que tengo es qué está haciendo su servicio web. Si el servicio web es realmente un problema funcional, entonces Haskell se ajustará mejor.
Erlang no es necesariamente un lenguaje funcional. Es un lenguaje de procedimiento con un modelo de ejecución muy fuerte para sistemas masivamente paralelos. Fue diseñado para la industria de las telecomunicaciones, y definitivamente sería una excelente opción para responder a las solicitudes de servicios web.
Consulte esta página * para obtener una descripción general de las diferencias entre la programación procesal y funcional. (Disculpas de antemano por el negro feo en la página cian).
Si su servicio web está haciendo una buena cantidad de coincidencia de patrones y aplicando reglas, entonces Haskel es su elección. Si solo desea una infraestructura escalable que no sea muy diferente de los idiomas que probablemente ya conozca, elija Erlang.
(* enlace a través de la máquina Wayback. Se ha eliminado el archivo original)
fuente
Entre los dos que mencionas, definitivamente Haskell es académico, mientras que Erlang se usa en proyectos de alta escalabilidad de la vida real. Entonces, de los dos para servicios web, elegiría Erlang.
Pero yo diría que tienes una tercera opción: Scala , un lenguaje que está fuertemente influenciado por Haskell y Erlang. Se utiliza para crear servicios web de primer nivel como Twitter o Foursquare. Incluso hay Lift , un marco web inspirado en Rails y Django, aunque con un enfoque un poco diferente y más funcional. Foursquare está usando Ascensor.
fuente
Por lo general digo: "aprende cosas lo más lejos posible de tu zona de confort, te hará un mejor programador incluso si nunca lo usas en la práctica".
En este caso, eso probablemente podría significar Haskell; pero Erlang no solo se está volviendo casi socialmente aceptable; pero los puntos principales (procesos ligeros, transmisión de mensajes, gran escalabilidad) están llegando a muchas otras plataformas 'prácticas', por lo que las lecciones aprendidas tienen una aplicabilidad grande e inmediata en trabajos más 'reales'.
mi consejo: si es por diversión, haz Haskell. si es para entrenar, ve a Erlang.
fuente