Creo que la comunidad de Erlang no tiene envidia de Node.js, ya que lo hace sin bloqueo de E / S de forma nativa y tiene formas de escalar fácilmente las implementaciones a más de un procesador (algo que ni siquiera está integrado en Node.js). Más detalles en http://journal.dedasys.com/2010/04/29/erlang-vs-node-js y Node.js o Erlang
¿Qué hay de Haskell? ¿Puede Haskell proporcionar algunos de los beneficios de Node.js, es decir, una solución limpia para evitar el bloqueo de E / S sin recurrir a la programación de subprocesos múltiples?
Hay muchas cosas que son atractivas con Node.js
- Eventos: sin manipulación de subprocesos, el programador solo proporciona devoluciones de llamada (como en el marco Snap)
- Se garantiza que las devoluciones de llamada se ejecuten en un solo hilo: no es posible la condición de carrera.
- Agradable y simple API compatible con UNIX. Bonificación: Excelente soporte HTTP. DNS también disponible.
- Cada E / S es por defecto asíncrona. Esto hace que sea más fácil evitar las cerraduras. Sin embargo, el procesamiento excesivo de la CPU en una devolución de llamada afectará a otras conexiones (en este caso, la tarea debería dividirse en subtareas más pequeñas y reprogramarse).
- Mismo idioma para el lado del cliente y del lado del servidor. (Sin embargo, no veo demasiado valor en este caso. JQuery y Node.js comparten el modelo de programación de eventos, pero el resto es muy diferente. Simplemente no puedo ver cómo compartir código entre el lado del servidor y el lado del cliente Ser útil en la práctica.)
- Todo esto empaquetado en un solo producto.