是否有一种编程语言,你不必自己定义actor -每个函数只是作为一个单独的actor运行(这可能意味着一个单独的线程,如果有可用的空闲内核)默认情况下?
例如,它意味着如果我写一些像
这样简单的东西v = fA(x) + fB(y)
则fA和fB可以同时计算,然后将其结果和赋值给v。
我不认为有这么极端的事情,因为上下文切换和通信开销太大了。
我能想到的最接近你所问的是数据并行编程,其中程序主要以与顺序版本相同的风格编写,但它的部分内容可能并行运行。
示例是Fortran中的循环向量化和Haskell中的"par"魔法。
Haskell的par
组合子允许您并发地计算表达式(如果有可用的空闲内核,这可能意味着在单独的线程中)。你所要做的就是:
x `par` y
将同时计算x
和y
,并返回y
的值。注意x
和y
可以是任意复杂度的程序。
焦耳是一种纯异步消息传递语言:
http://en.wikipedia.org/wiki/Joule_%28programming_language%29 http://www.erights.org/history/joule/MANUAL.BK5.pdfActorScript是一种纯Actor消息传递语言,但似乎只作为规范存在:
http://arxiv.org/abs/1008.2748