Sea*_*ess 11 javascript ruby lisp python asynchronous
我正在开发一个系统,而不是从一开始就可以扩展.我开始研究/使用异步/偶数方法编写服务器端代码.我玩过ruby的EventMachine和node.js.
EventMachine很酷,但没有我需要的异步文件I/O. 界面也有点奇怪.
Node.js太棒了,但是......呃......这是javascript.
更大的Stack Overflow社区可以通过列出具有强大异步支持的其他语言来帮助我吗?要获得资格,语言就需要同时支持封锁和对异步文件IO,HTTP等库这将是不错的有类似的东西写在不是JavaScript较强的语言的node.js.
Lisp的?Python扭曲了吧?
Jör*_*tag 15
我建议你再看看Node.js的.一个用库做一个面向对象的编程语言,基于事件的编程(而不是使用摆在首位的基于事件的编程语言)的最大问题,是通常所有其他现有的库不是基于事件的,将基于事件的I/O和同步I/O混合起来真的很尴尬.事实上,它几乎是不可能的,或者更准确地说,它是可能的,但是首先破坏了使用基于事件的I/O的所有好处.(请注意,您使用的任何第三方库(以及它们使用的库等等),包括语言本身的标准库和核心库,都必须基于事件,才能真正获益.否则,您将花费大部分项目的时间在现有库周围编写异步包装器.)
现在,如果使用基于事件的库是一件坏事,那么为什么我推荐node.js?简单:ECMAScript中不具有任何同步I/O库(因为一个简单的事实,它没有任何I/O库在所有),所以根本不会出现混合的问题.(事实上,它有一些 I/O库,像XmlHttpRequest或Web套接字,但你猜怎么着:这些都是已经全部基于事件的.)
node.js实现所有I/O库本身,所有I/O库都是基于事件的,没有向后兼容性或遗留要求.
否则,每种语言或平台都有一些基于事件的或异步的I/O库:Ruby有EventMachine和Rev,.NET有Rx,JVM有NIO,Unix系统有kqueue/epoll,C有libev和libeio(在上面)其中构建了node.js和Rev),Perl有AnyEvent(由同一作者构建在libev之上),依此类推.