web-dev-qa-db-ja.com

アクターモデルについてどう思いますか?

アクターモデルErlang で使用される方法は、並行プログラミングを行うための非常に異なる方法のようです。アクターモデルについてどう思いますか?それは並行性の一般的なソリューションになるでしょうか?

18
Jonas

あなたはその概念を知っていると思います。まあ、まだよくわかりません。

短い答えは、私は短期的および中期的に並行性に対するこのモデルの人気を信じているということです。私は常にラムダとクロージャーが大好きで、並行性を強化するために特別に処理されたクロージャーのようなアクターを見つけました。したがって、マルチコアプロセッサはプログラミングに新しいパラダイムをもたらし、同時実行性は高いパフォーマンスを達成するために必須です。アクターモデルは、最新のハードウェアを活用する簡単な方法のようです。

遅かれ早かれ(私はもっと早く望むと思いますが)ほとんどすべての主流言語が並行性に対するより良いモデルをサポートするでしょう。 Erlangで非常に適切に実装されたIMHOアクターモデルが最適な候補です。

Actorモデルの人気を上げるための1つの障害は、現在主流のパラダイムであるOOPの小さなインピーダンスです。しかし、最初のステップが与えられている、主要な言語は、アクターモデルへのパスをクリーンアップするいくつかの機能的な機能を実装しています。

私はこの問題についてたくさん読んでいますが、すべてのプログラマーがスキルを進歩させることは非常に重要だと思います。

遅延編集:

今、私はパラダイムをよりよく理解しています。したがって、問題をライブラリで処理できるようにするか、最終的には1つのモデルの採用を容易にする機能を備えたプログラミング言語よりも優れていると言えます。 1つのモデルだけで言語を結び付けることは、良いアイディアとは言えません。

7
Maniero

「人気」はそれほど重要な指標ではありません。 「便利」または「強力」です。

Actorモデルは、少なくとも学界では約35年前から存在しており、時間の経過とともに、ますます多くの現実世界の言語に採用されてきました。 (OK、Erlangはadopt Actorモデルを行いませんでした、それはreinvented Actorモデルです。それでも。)

それで、それが学界で数十年生き残って、それが主流に移行していることを考えると、それはしばらくの間存在するだろうと私は言うでしょう。

7
Frank Shearar

正直なところ、同時実行を行うにはこれが最良の方法だと思います。ロック付きの共有メモリモデルは私を怖がらせます。私は、それがうまくいかない可能性がある多くの方法を見ることができます。メッセージパッシングを使用するアクターは、よりクリーンな方法のように見えます。

また、ClojureやHaskell、そしておそらく他のいくつかの言語で使用できるSTMも見てください。

5
Zachary K