アクターモデルとオブジェクト指向モデル 質問する

アクターモデルとオブジェクト指向モデル 質問する

長い間ウェブで検索しましたが、アクター モデルで克服されるオブジェクト指向モデルの具体的な欠点を見つけることができませんでした。それについて、いくつかのヒントと説明をお願いします。

前もって感謝します。

ベストアンサー1

用語オブジェクト指向プログラミングもともとは Alan Kay と Smalltalk から生まれました。主な機能としてメッセージング パッシングを重視しました。これが OOP の本来の意味です。

C++ と Java が登場すると、オブジェクト指向プログラミングという用語は少し異なる意味を持つようになりました。これは、一部の人々が「クラス指向プログラミング」と呼ぶものに変化しました。

俳優このモデルは、メッセージ パッシングがコアとなるという元々の OOP の概念を再度強調しています。

俳優モデルの長所:

  • 分散システムでより良く機能する
  • 多くの場合、アーキテクチャ的に理解するのが簡単
  • 複数の「アクター」を持つ現実世界の現象/複雑なシステムをモデル化します
  • 関数型プログラミングスタイルとほぼ互換性があります(Smalltalkを参照)

俳優モデルの短所:

  • アルゴリズムは 1 か所にだけ存在するわけではないため、アルゴリズムについて推論するのは困難です。アルゴリズムはさまざまなアクターやファイルに分割されており、追跡してコードに従う必要があります。
  • 同様に、複数のアルゴリズムを複数のアクター間で混在させることもできます。そのため、ファイルにアクセスしてアクターのコードを読み、アルゴリズムを追うと、同じアクターに他のアルゴリズムも混在しているために混乱してしまう可能性があります。
  • 従来のセマフォ スタイルのロックは不可能です。より複雑になる可能性がある STM スタイルを使用する必要があります。
  • 「戻り値」を取得するのが難しくなります。アクター モデルは「ファイア アンド フォーゲット」です。元の要求元に「戻り値」を返す方法を考えなければなりません。これにより、それを受け取り、コンテキスト (uniqueId / taskId) をシステム全体に渡す方法を設定する必要があるため、オーバーヘッドが大きく増加します。また、「応答」が返されるまでその情報を保持するための状態を管理する必要もあります。アクター モデルがなければ、それらはブロック スコープ内のローカル変数に過ぎません。

おすすめ記事