Я полагаю, что сообщество Erlang не завидует Node.js, поскольку оно изначально не блокирует ввод-вывод и имеет способы легко масштабировать развертывания на более чем один процессор (что даже не встроено в Node.js). Более подробная информация на http://journal.dedasys.com/2010/04/29/erlang-vs-node-js и Node.js или Erlang
Что насчет Хаскелла? Может ли Haskell обеспечить некоторые преимущества Node.js, а именно чистое решение, позволяющее избежать блокировки ввода-вывода без использования многопоточного программирования?
Есть много вещей, которые привлекательны с Node.js
- События: нет манипуляций с потоками, программист предоставляет только обратные вызовы (как в Snap Framework)
- Обратные вызовы гарантированно выполняются в одном потоке: условия гонки невозможны.
- Хороший и простой UNIX-дружественный API. Бонус: отличная поддержка HTTP. DNS также доступен.
- Каждый ввод / вывод по умолчанию является асинхронным. Это позволяет избежать замков. Однако слишком большая загрузка ЦП в обратном вызове повлияет на другие соединения (в этом случае задача должна быть разбита на более мелкие подзадачи и перепланирована).
- Один и тот же язык для клиентской и серверной сторон. (Однако я не вижу в этом особой ценности. JQuery и Node.js разделяют модель программирования событий, но остальное сильно отличается. Я просто не вижу, как совместное использование кода между серверной и клиентской сторонами могло бы быть полезным на практике.)
- Все это упаковано в один продукт.