中文

混合隐喻:Actor 作为通道与通道作为 Actor(扩展版)

编程语言 2017-05-11 v3

摘要

基于通道和基于 Actor 的编程语言都在实践中使用,但两者常被混淆。诸如 Go 之类的语言提供匿名进程,这些进程使用缓冲区或会合点(称为通道)进行通信;而诸如 Erlang 之类的语言提供可寻址进程(称为 Actor),每个进程带有单一传入消息队列。缺乏通用表示使得难以推理民间传说中存在的翻译。我们定义了用于类型化异步通道的演算 λch\lambda_{\textrm{ch}},以及用于类型化 Actor 的演算 λact\lambda_{\textrm{act}}。我们定义了从 λact\lambda_{\textrm{act}}λch\lambda_{\textrm{ch}} 以及从 λch\lambda_{\textrm{ch}}λact\lambda_{\textrm{act}} 的翻译,并证明两者均保持类型与语义。我们展示了我们的方法解释了 Actor 系统中的同步与选择性接收,并讨论了支持守护选择和行为类型的未来扩展。

关键词

引用

@article{arxiv.1611.06276,
  title  = {Mixing Metaphors: Actors as Channels and Channels as Actors (Extended Version)},
  author = {Simon Fowler and Sam Lindley and Philip Wadler},
  journal= {arXiv preprint arXiv:1611.06276},
  year   = {2017}
}

备注

Extended version of paper appearing at ECOOP'17