我相信Erlang社区不会羡慕Node.js,因为它本身就进行非阻塞I / O,并具有将部署轻松扩展到一个以上处理器(Node.js甚至没有内置的功能)的方法。有关更多详细信息,请访问http://journal.dedasys.com/2010/04/29/erlang-vs-node-js和Node.js或Erlang
那Haskell呢?Haskell是否可以提供Node.js的某些好处,即一种避免使用I / O而不使用多线程编程的干净解决方案?
Node.js有很多吸引人的地方
- 事件:无线程操作,程序员仅提供回调(如Snap框架中一样)
- 回调保证在单个线程中运行:不可能出现竞争条件。
- 漂亮又简单的UNIX友好API。奖励:出色的HTTP支持。DNS也可用。
- 默认情况下,每个I / O都是异步的。这样可以更轻松地避免锁定。但是,回调中过多的CPU处理会影响其他连接(在这种情况下,任务应拆分为较小的子任务并重新计划)。
- 客户端和服务器端使用相同的语言。(但是,我认为这一点没有太大价值。jQuery和Node.js共享事件编程模型,但其余部分却大不相同。我只是看不到如何在服务器端和客户端之间共享代码。在实践中很有用。)
- 所有这些都包装在一个产品中。