是否有一种编程语言,其中每个函数基本上作为一个单独的actor运行?

时间:2011-12-17 19:15:54

标签: functional-programming parallel-processing actor

是否有一种编程语言,您不必自己定义actor - 默认情况下,每个函数都只是作为一个单独的actor运行(如果有可用的可用内核,则可能意味着一个单独的线程)?

例如,这意味着如果我写的东西就像

那样简单
v = fA(x) + fB(y)

然后可以在将结果总和分配给v。

之前同时计算fA和fB

3 个答案:

答案 0 :(得分:2)

我认为没有任何这种极端,因为上下文切换和通信开销太大了。

我能想到的最接近你要问的是数据并行编程,其中程序主要以与顺序版本相同的方式编写,但部分内容尽可能并行运行。

例子是Fortran中的循环矢量化和Haskell中的“par”魔术。

答案 1 :(得分:2)

Haskell的par组合器允许您同时评估表达式(如果有可用的可用内核,这可能意味着在单独的线程中)。您所要做的就是:

x `par` y

将同时评估xy,并返回y的值。请注意,xy可以是任意复杂程序。

答案 2 :(得分:1)

Joule是一种纯异步消息传递语言:

http://en.wikipedia.org/wiki/Joule_%28programming_language%29

http://www.erights.org/history/joule/MANUAL.BK5.pdf

ActorScript是纯粹的Actor消息传递语言,但似乎只作为规范存在:

http://arxiv.org/abs/1008.2748