Actor ModelはErlangよりも古いですが、Erlangの設計者はErlangを設計した後にのみActor Modelについて学んだため、いくつかの違いが予想されます。
しかし、それらは進化の並行した道をたどりました。アクターモデルは、Smalltalkのメッセージパッシングセマンティクスに基づいてCarl Hewittによって作成されました。Alan Kayは、Smalltalkのメッセージパッシングセマンティクスに基づいて、…Carl Hewittによって設計されたPLANNERの目標駆動型評価に基づいていました。
PLANNERはPrologの前身でした。Erlangはもともと言語を目的としていませんでしたが、Prologのフォールトトレラントな分散プログラミングのライブラリとして始まり、その後Prologの方言に発展しました。 (さらに、元のErlangインタープリターはPrologで作成されました)。
したがって、Erlangのプロセス、OOのオブジェクト、およびアクターモデルのアクター間の類似性は、偶然とはほど遠いものです。
Erlangは複数のレイヤーを持つ言語で、それぞれが下位レイヤーのスーパーセットです。最小のレイヤーはFunctional Erlangです。これは標準の関数型言語であり、バインディング/平等ではなく統合など、Prologから継承された追加機能があります。プロセスとメッセージを追加すると、Concurrent Erlangが得られます。リモートプロセスを投入すると、Distributed Erlangが得られます。OTPからライブラリとデザインパターンをいくつか追加すると、フォールトトレラントなErlangができました。
プロセスはアクターです。(これらもオブジェクトです。)プロセスの内部は機能的であり、アクターベースではありません。OTPのツールとパターンを使用して構築された大規模なフォールトトレラントアーランシステムの構造は、多くの場合非常にオブジェクト指向です。
だから、それはあなたが見ているスケールに依存します。
典型的な大規模なErlangシステムでは、関数型プログラミングを使用して実装されたメッセージパッシングアクターを備えたオブジェクト指向アーキテクチャがあります。OTPと呼ばれるものserver
はオブジェクトと密接に関連しています。sはserver
プロセス(アクター)で構成され、プロセスは内部で関数を使用します。
一般的に、純粋なアクター言語が研究を残したことはないと思います。ヘック、元のアクター言語であるカールヒューイットのPLASMA が実装されたことさえありません。