我相信Erlang社区并不嫉妒Node.js,因为它以本机方式进行非阻塞I/O,并且有多种方法可以轻松地将部署扩展到多个处理器(Node.js中甚至没有内置的东西).更多详情请参见http://journal.dedasys.com/2010/04/29/erlang-vs-node-js和Node.js or Erlang
哈斯克尔呢?Haskell能否提供Node的一些好处.js是一个干净的解决方案,可以避免阻塞I/O,而无需求助于多线程编程?
Node有很多吸引人的地方.js
- 事件:没有线程操作,程序员只提供回调(在Snap框架中)
- 回调保证在单个线程中运行:不可能存在竞争条件.
- 漂亮简单的UNIX友好API.好处:出色的HTTP支持.DNS也可用.
- 默认情况下,每个I/O都是异步的.这样更容易避免锁.但是,回调中的CPU处理过多会影响其他连接(在这种情况下,任务应该拆分为更小的子任务并重新安排).
- 客户端和服务器端使用相同的语言.(不过,我看不出这一点有多大价值.jQuery和Node.js共享事件编程模型,但其余的都非常不同.我只是看不出在服务器端和客户端之间共享代码在实践中有什么用处.)
- 所有这些都打包在一个产品中.