事件/异步语言列表

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扭曲了吧?

Ale*_*lli 20

Erlang可能是服务器端代码具有最高内在可伸缩性的语言(它为您管理多处理,主要是通过执行异步,协作任务切换"隐藏") - 如果您可以忍受其特有的语法并且(通常)特殊的语义.

Python已经扭曲(非常通用于所有网络任务),龙卷风(专门用于服务器端异步)和无堆栈(广泛用于MMP在线游戏),更不用说旧的但可用于asyncore标准库(甚至是标准库) -older"Medusa"位于asyncore之上,以丰富其功能).

Go具有非常轻的"无堆栈",goroutineschannels在需要时用于同步.


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有EventMachineRev,.NET有Rx,JVM有NIO,Unix系统有kqueue/epoll,C有libevlibeio(在上面)其中构建了node.js和Rev),Perl有AnyEvent(由同一作者构建在libev之上),依此类推.

  • 我真的很喜欢node.js.导入模块的能力解决了大多数抽象问题.是否还有其他系统,比如从头开始异步设计的节点? (2认同)