也许我在Ryan Dahl的采访中遗漏了https://www.youtube.com/watch?v=SAc0vQCC6UQ
但从历史上看,他非常喜欢Ruby。为什么他不能使用Ruby来构建与Node相同的概念而不是Javascript?我不太了解Ruby,但Ruby不支持函数式编程,闭包等所有Javascript功能吗?
我的问题是技术问题,请尽可能多地提供有关Javascript与Ruby Interpreter的内部详细信息。
在采访中他说这个问题出现在Ruby Interpreter中而没有真正解释。为什么它也不会出现在Javascript中?
答案 0 :(得分:5)
非常简短的回答:没什么。
稍微长一点的回答:从技术上讲,没有任何东西阻止为Ruby实现非阻塞的偶数异步I / O库。事实上,有几个这样的库,一些在Node.JS之前存在,一些受到它的启发。例如。 EventMachine,Cool.IO,Celluloid::IO
。
长答案:Ruby有一个标准库。一个非常丰富的。特别是,Ruby有一个非常丰富的I / O库:IO
,File
,fileutils,net/ftp,net/http,net/imap,{ {3}},net/pop,net/smtp,net/telnet,resolv,socket等。所有这些都是封锁的。他们都没有被解雇。所有这些都是同步的。
ECMAScript,OTOH,标准库很差。当Node.JS启动时,几乎不存在。现在,在webrick中,有一点点,但它是所有数据结构,没有I / O.即使ES2015也没有单一的I / O功能。
这让Ryan Dahl从头开始。因为无论如何都必须重新编写每一小块I / O库,它可以从头开始编写为异步,非阻塞,偶数。 而且,由于DOM API主要是偶数,ECMAScript程序员已经习惯了这种风格的编程!
在Ruby中,人们不仅要抛弃所有现有的I / O库代码,还必须重新培训所有程序员!