Acredito que a comunidade Erlang não tenha inveja do Node.js, pois faz E / S não-bloqueadora nativamente e tem maneiras de escalar implantações facilmente para mais de um processador (algo que nem mesmo está embutido no Node.js.). Mais detalhes em http://journal.dedasys.com/2010/04/29/erlang-vs-node-js e Node.js ou Erlang
E o Haskell? O Haskell pode fornecer alguns dos benefícios do Node.js., ou seja, uma solução limpa para evitar o bloqueio de E / S sem recorrer à programação multithread?
Há muitas coisas atraentes no Node.js
- Eventos: Sem manipulação de encadeamento, o programador fornece apenas retornos de chamada (como na estrutura Snap)
- É garantido que os retornos de chamada sejam executados em um único encadeamento: nenhuma condição de corrida é possível.
- API agradável e simples, compatível com UNIX. Bônus: Excelente suporte HTTP. DNS também disponível.
- Cada E / S é por padrão assíncrona. Isso facilita evitar bloqueios. No entanto, muito processamento da CPU em um retorno de chamada afetará outras conexões (nesse caso, a tarefa deve ser dividida em subtarefas menores e agendada novamente).
- Mesmo idioma para o lado do cliente e do servidor. (No entanto, não vejo muito valor neste. JQuery e Node.js compartilham o modelo de programação de eventos, mas o resto é muito diferente. Não vejo como o compartilhamento de código entre o lado do servidor e o lado do cliente poderia ser útil na prática.)
- Tudo isso embalado em um único produto.