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

也许我错过了Ryan Dahl在这里的访谈https://www.youtube.com/watch?v=SAc0vQCC6UQ

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

我的问题是技术请给尽可能多的有关JavaScript与Ruby解释器的内部细节。

他在采访中说,这个问题在Ruby解释器中没有真正解释。 为什么不在Javascript中呢?

非常简短的回答 :没有。

稍微长一点的答案 :从技术上来说,没有什么能够阻止为Ruby实现一个非阻塞的asynchronousI / O库。 实际上,有几个这样的库,有些是在Node.JS之前存在的,有些是受其启发的。 例如EventMachine , Cool.IO , Celluloid::IO

长答案 :Ruby有一个标准的库。 非常丰富的一个。 尤其是Ruby有一个非常丰富的I / O库: IOFile , fileutils , net / ftp , net / http , net / imap , net / pop , net / smtp , net / telnet , resolv , socket , webrick和其他。 他们都阻止了。 他们没有一个是平坦的。 他们都是同步的。

ECMAScript,OTOH,有一个非常差的标准库。 当Node.JS启动时,实际上并不存在。 现在,在ECMAScript 2015中 ,有一点点,但是这些都是数据结构,没有I / O。 即使ES2015没有单独的I / Ofunction。

这让Ryan Dahl从头开始。 由于无论如何I / O库的每一小部分都必须重新编写,因此可以从头开始编写asynchronous,非阻塞,均匀的。 而且,由于DOM API大部分都是平价的,所以ECMAScript程序员已经习惯了这种风格的编程!

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