🦜Goとマルチコアスケール実装2021/11/24に公開2023/11/185件GotechDiscussionさんぽし2021/11/30面白い記事で勉強になりました。細かい指摘で大変恐縮ですが、Erlangや、Erlangを参考としているAkkaはCSPではなく、Actor modelをベースとしており、Actor modelはCSPとは異なる概念である認識です。(仮にActor ModelがそもそもCSPをベースにしている等の話があるのであれば後学のため教えて頂きたいです。) NoboNobo2021/11/30Actorモデルが他のモデルと異なり独自の利点を持っていることは見聞きします。 Actor呼び出し引数をキャッシュに残してあり、クラッシュしても再稼働できること Actorには必ずメッセージボックスが確保されCSPよりも明確な通信の仕組みをもつこと ホストをまたいだ通信も透過的に扱えること などなど。出自はちょっと思い出せず申し訳ありませんが、どこかでCSPをより具体的に発展させたものとしてActorモデルが紹介されていたものを読んだ気がします。今回のCSPという単語はActorモデルを内包しているものとして読んでください。 さんぽし2021/11/30少なくともHewittらがアクターモデルについて初めに発表した論文にはCSPは登場せず、アクターモデルがCSPを具体的に発展させたものというのは誤りである可能性が高いように思います。 CSPとアクターモデルの違いに関してはこちらも参考になるかと思います。 https://en.wikipedia.org/wiki/Actor_model_and_process_calculi_history (記事の本質では無いところに長々と突っ込んですみませんでした) NoboNobo2021/11/30に更新Actorモデルのほうが早く生まれていることを考えると、たしかに「アクターモデルがCSPを具体的に発展させたもの」というのは誤りですね。 ただ、以下のセクションにて、CSPとActorモデルは概念的に似た存在であると書かれていて、細かいところの考え方が大きく異なるというのが僕の認識です! https://en.wikipedia.org/wiki/Communicating_sequential_processes#Comparison_with_the_actor_model 誤解を生みそうなところは修正させていただきました!ご指摘ありがとうございます! 返信を追加NoboNobo2021/11/30に更新GHCはマルチコアサポートに関する機能についてGoより不足するところがあるとは思っていません。ただ、マルチコア実装を入門するならよりカジュアルに書けて一瞬でコンパイルできるという点でGoがおすすめです。でも確かに移行するのに十分な機能があるのでしょう。直接お話ししたことのある人でGopherハッカーからHaskellerになった人が居ますよ! 返信を追加
さんぽし2021/11/30面白い記事で勉強になりました。細かい指摘で大変恐縮ですが、Erlangや、Erlangを参考としているAkkaはCSPではなく、Actor modelをベースとしており、Actor modelはCSPとは異なる概念である認識です。(仮にActor ModelがそもそもCSPをベースにしている等の話があるのであれば後学のため教えて頂きたいです。) NoboNobo2021/11/30Actorモデルが他のモデルと異なり独自の利点を持っていることは見聞きします。 Actor呼び出し引数をキャッシュに残してあり、クラッシュしても再稼働できること Actorには必ずメッセージボックスが確保されCSPよりも明確な通信の仕組みをもつこと ホストをまたいだ通信も透過的に扱えること などなど。出自はちょっと思い出せず申し訳ありませんが、どこかでCSPをより具体的に発展させたものとしてActorモデルが紹介されていたものを読んだ気がします。今回のCSPという単語はActorモデルを内包しているものとして読んでください。 さんぽし2021/11/30少なくともHewittらがアクターモデルについて初めに発表した論文にはCSPは登場せず、アクターモデルがCSPを具体的に発展させたものというのは誤りである可能性が高いように思います。 CSPとアクターモデルの違いに関してはこちらも参考になるかと思います。 https://en.wikipedia.org/wiki/Actor_model_and_process_calculi_history (記事の本質では無いところに長々と突っ込んですみませんでした) NoboNobo2021/11/30に更新Actorモデルのほうが早く生まれていることを考えると、たしかに「アクターモデルがCSPを具体的に発展させたもの」というのは誤りですね。 ただ、以下のセクションにて、CSPとActorモデルは概念的に似た存在であると書かれていて、細かいところの考え方が大きく異なるというのが僕の認識です! https://en.wikipedia.org/wiki/Communicating_sequential_processes#Comparison_with_the_actor_model 誤解を生みそうなところは修正させていただきました!ご指摘ありがとうございます! 返信を追加
NoboNobo2021/11/30Actorモデルが他のモデルと異なり独自の利点を持っていることは見聞きします。 Actor呼び出し引数をキャッシュに残してあり、クラッシュしても再稼働できること Actorには必ずメッセージボックスが確保されCSPよりも明確な通信の仕組みをもつこと ホストをまたいだ通信も透過的に扱えること などなど。出自はちょっと思い出せず申し訳ありませんが、どこかでCSPをより具体的に発展させたものとしてActorモデルが紹介されていたものを読んだ気がします。今回のCSPという単語はActorモデルを内包しているものとして読んでください。
さんぽし2021/11/30少なくともHewittらがアクターモデルについて初めに発表した論文にはCSPは登場せず、アクターモデルがCSPを具体的に発展させたものというのは誤りである可能性が高いように思います。 CSPとアクターモデルの違いに関してはこちらも参考になるかと思います。 https://en.wikipedia.org/wiki/Actor_model_and_process_calculi_history (記事の本質では無いところに長々と突っ込んですみませんでした)
NoboNobo2021/11/30に更新Actorモデルのほうが早く生まれていることを考えると、たしかに「アクターモデルがCSPを具体的に発展させたもの」というのは誤りですね。 ただ、以下のセクションにて、CSPとActorモデルは概念的に似た存在であると書かれていて、細かいところの考え方が大きく異なるというのが僕の認識です! https://en.wikipedia.org/wiki/Communicating_sequential_processes#Comparison_with_the_actor_model 誤解を生みそうなところは修正させていただきました!ご指摘ありがとうございます!
NoboNobo2021/11/30に更新GHCはマルチコアサポートに関する機能についてGoより不足するところがあるとは思っていません。ただ、マルチコア実装を入門するならよりカジュアルに書けて一瞬でコンパイルできるという点でGoがおすすめです。でも確かに移行するのに十分な機能があるのでしょう。直接お話ししたことのある人でGopherハッカーからHaskellerになった人が居ますよ! 返信を追加
Discussion
面白い記事で勉強になりました。細かい指摘で大変恐縮ですが、Erlangや、Erlangを参考としているAkkaはCSPではなく、Actor modelをベースとしており、Actor modelはCSPとは異なる概念である認識です。(仮にActor ModelがそもそもCSPをベースにしている等の話があるのであれば後学のため教えて頂きたいです。)
Actorモデルが他のモデルと異なり独自の利点を持っていることは見聞きします。
などなど。出自はちょっと思い出せず申し訳ありませんが、どこかでCSPをより具体的に発展させたものとしてActorモデルが紹介されていたものを読んだ気がします。今回のCSPという単語はActorモデルを内包しているものとして読んでください。
少なくともHewittらがアクターモデルについて初めに発表した論文にはCSPは登場せず、アクターモデルがCSPを具体的に発展させたものというのは誤りである可能性が高いように思います。
CSPとアクターモデルの違いに関してはこちらも参考になるかと思います。
(記事の本質では無いところに長々と突っ込んですみませんでした)
Actorモデルのほうが早く生まれていることを考えると、たしかに「アクターモデルがCSPを具体的に発展させたもの」というのは誤りですね。
ただ、以下のセクションにて、CSPとActorモデルは概念的に似た存在であると書かれていて、細かいところの考え方が大きく異なるというのが僕の認識です!
誤解を生みそうなところは修正させていただきました!ご指摘ありがとうございます!
GHCはマルチコアサポートに関する機能についてGoより不足するところがあるとは思っていません。ただ、マルチコア実装を入門するならよりカジュアルに書けて一瞬でコンパイルできるという点でGoがおすすめです。でも確かに移行するのに十分な機能があるのでしょう。直接お話ししたことのある人でGopherハッカーからHaskellerになった人が居ますよ!