我很好奇 Erlang 是否会被 Node.js 杀死,Node.js 可能非常流行、速度快并且有网络工作者。是否可以?为什么?
但是多处理器并发呢?将程序扩展到多核计算机不需要线程吗?进程是扩展到多核计算机所必需的,而不是内存共享线程。可扩展系统的基础是快速网络和非阻塞设计——剩下的就是消息传递。在未来的版本中,Node 将能够派生出非常适合当前设计的新进程(使用 Web Workers API)。
我很好奇 Erlang 是否会被 Node.js 杀死,Node.js 可能非常流行、速度快并且有网络工作者。是否可以?为什么?
但是多处理器并发呢?将程序扩展到多核计算机不需要线程吗?进程是扩展到多核计算机所必需的,而不是内存共享线程。可扩展系统的基础是快速网络和非阻塞设计——剩下的就是消息传递。在未来的版本中,Node 将能够派生出非常适合当前设计的新进程(使用 Web Workers API)。
Node.js 和 Erlang 是大草原上完全不同的野兽。
Node.js 以协作多任务模型为中心,让人想起 Python Twisted 或 Rubys EventMachine。相反,Erlang 是一个带有调度程序等的抢先式多任务系统。
Node.js 实现了 JavaScript,它是一种基于原型的 OO 语言,具有命令式基础和几个功能性思想。本质上,Erlang 以通常的函数风格实现了增强的 lambda 演算。
Node.js 主要以单台机器为中心,每个请求都按顺序处理。即将推出的 Web Worker 和multi-node
扩展让您可以使用机器的所有 CPU。Erlang 旨在无缝集成多个节点,旨在让一组(多个)Erlang 物理机彼此无缝通信。
Node.js 采取了大多数语言中常见的主动故障缓解的立场。另一方面,Erlang 采取了一种被动的故障缓解立场:即使发生了其他无法解释的错误,系统也可以生存。在最坏的情况下,让另一台物理机器接管。
Node.js 严重依赖 JIT 来获得速度。Erlang 是一种更标准的编译语言。后果是 Erlang 可能更适合软实时,因为一段代码的挂钟时间通常更可预测。
您应该清楚,解决所提出问题的方法与两种语言有很大不同。因此,出于这个原因,可能值得同时保留两者。换句话说,我不认为一种语言会完全取代另一种语言。Node.js 具有熟悉度。Erlang 在鲁棒性方面具有明显的优势。
免责声明:我破解了 Erlang。
不太可能。
Node.js 肯定有很多好处,但似乎没有一个能将 Erlang 赶出它的位置。我希望 node.js 会取代 PHP :)
Node.js 是对“如何通过将事件循环绑定到一种代码行数极少的语言来构建高效的并发系统”这一问题的答案。这个问题本身也很精彩。
Erlang 是对并发问题、语言、编译器、库的更完整的解决方案,一切都是从头开始围绕容错、分布和并发构建的。
Erlang 优势的完整列表?清单很长,我没有那么多时间。几个样本:
Node.js 具有使用 JavaScript 的明显优势,因此它可能会在流行度方面击败 Erlang,只要 node.js 足够好,这在很多地方都是如此。