是什么阻止了Ryan Dahl(Node的创建者)在Ruby中创建与Node相同的概念而不是Javascript

时间:2015-11-07 00:00:15

标签: javascript ruby-on-rails ruby node.js

也许我在Ryan Dahl的采访中遗漏了https://www.youtube.com/watch?v=SAc0vQCC6UQ

但从历史上看,他非常喜欢Ruby。为什么他不能使用Ruby来构建与Node相同的概念而不是Javascript?我不太了解Ruby,但Ruby不支持函数式编程,闭包等所有Javascript功能吗?

我的问题是技术问题,请尽可能多地提供有关Javascript与Ruby Interpreter的内部详细信息。

在采访中他说这个问题出现在Ruby Interpreter中而没有真正解释。为什么它也不会出现在Javascript中?

1 个答案:

答案 0 :(得分:5)

非常简短的回答:没什么。

稍微长一点的回答:从技术上讲,没有任何东西阻止为Ruby实现非阻塞的偶数异步I / O库。事实上,有几个这样的库,一些在Node.JS之前存在,一些受到它的启发。例如。 EventMachineCool.IOCelluloid::IO

长答案:Ruby有一个标准库。一个非常丰富的。特别是,Ruby有一个非常丰富的I / O库:IOFilefileutilsnet/ftpnet/httpnet/imap,{ {3}},net/popnet/smtpnet/telnetresolvsocket等。所有这些都是封锁的。他们都没有被解雇。所有这些都是同步的。

ECMAScript,OTOH,标准库很差。当Node.JS启动时,几乎不存在。现在,在webrick中,有一点点,但它是所有数据结构,没有I / O.即使ES2015也没有单一的I / O功能。

这让Ryan Dahl从头开始。因为无论如何都必须重新编写每一小块I / O库,它可以从头开始编写为异步,非阻塞,偶数。 而且,由于DOM API主要是偶数,ECMAScript程序员已经习惯了这种风格的编程!

在Ruby中,人们不仅要抛弃所有现有的I / O库代码,还必须重新培训所有程序员!