Actor Language

id:epcg:20050912:1126539603において、Ioという言語の並列動作と、それの基となるActor Languageという考え方を教えていただきました(ありがとうございます)。
これ、この間からずっと考えている「分散環境におけるコンピューティング」という命題に対する非常に有用なアイディアだと思います。
あらかじめコードをバイトコードに直しておいた上で、Actor関連のオペレーションをVM内に実装しておけば、割合低レベルな処理であっても、実行環境を分散できるし、データの共有がいらないActorをCellのSPUだとか、ベクタ演算ユニット(EmotionEngineのVUとか)だとか、GPUだとか(おいおい(^^;))に割り振ってパフォーマンスを引き出すことができるかな、と。あ、もちろんJIT必須ですけど。
このとき、

  • Actor間のデータの共有
  • Actorの実行環境の引き継ぎ(同じCPUにだけ割り振られっぱなしではパフォーマンスは伸び悩むはず)
  • JITコンパイラの実行時間と、JITによる速度向上のバランス
  • デッドロックの検出と、Actor間でのエラーハンドリング(構造化例外とかは使えないはず)

などなど、いろいろ考えるべきことはありますね。
幸いWikipedia(本国版)にもActor Basedに対するエントリがあるようですし、資料や論文を読んでみましょう。