Rakuはどのような並行性メカニズムを提供し、どのように評価できますか?[閉まっている]

Dec 28 2020

私は現在、Rakuに関する論文に取り組んでいる学生です。そのため、Raku(Perl 6)が高い同時実行性を扱うのに適した言語であるかどうかを評価することにしました。

公式サイトを除いて、楽の並行性に関する論文は見つかりませんでした。また、Rakuの並行性をどのように評価するか(たとえば、どのプログラムを使用するか、どの言語をRakuと比較するかなど)もわかりません。

Rakuはどのような並行性メカニズムを提供していますか?これらはどこに文書化されていますか?それらの機能とパフォーマンスはどのように評価できますか?

回答

14 JonathanWorthington Dec 29 2020 at 05:39

Rakuは、いくつかの異なる並行性メカニズムを提供します(さらに、いくつかの並列プログラミングアプローチも提供しますが、質問は実際には並行性に関するものだと思います)。Rakuにあるものの大部分は、他の言語で見つけることができます。例えば:

  • 怠惰に値を生成するためのgather/takeメカニズム。これは、さまざまな言語でジェネレーター関数として見られます。ただし、楽では、スタックフレームの制限が1つもないため、コルーチンで強力です。(これは非同期プログラミングを含むコンテキストではありませんが、それでも並行性の定義を満たしています)。
  • Promise非同期動作の単一の結果を伝達するための機構は、多くのようであるPromiseJavaScriptでまたはS Task(セマンティクスはビット近い後者である).NETで。
  • ASupplyは非同期値のストリームです。リアクティブエクステンション(Rx)とはかなり共通していますが、Raku言語の全体的な設計に適合する名前とAPIを選択しています(たとえば、メソッド名はシーケンスの同期デュアルと一致します)。
  • AChannelは並行キューであり、完了とエラーを伝達するメカニズムがSupplyありChannelます。つまり、パラダイムとパラダイムの間を簡単に移行できます。主な違いは、aにChannelはストレージがあり、値を入力してすぐに別のことを実行できることです。一方、値を送信する場合Supplyは、処理コストを支払います(バックプレッシャメカニズムを提供します)。段階的なイベント駆動型アーキテクチャChannelなど、を使用してさまざまなアーキテクチャを構築できます。

他の言語で直接存在しない楽で最も特徴的な概念は、あるreact/ supply/whenever構築物。複数の非同期ストリームのプロセッサを作成することは、多くの場合困難です(サブスクリプション管理、同時実行制御)。コンストラクトは、構造化プログラミングアプローチを提供します。それを超えて、それは主に、これらのものをライブラリとして扱うのではなく、Rakuで言語統合が少し強力であるという問題です。

他の人が指摘しているように、正式な論文の方法はまだあまりありません。ただし、これらのスライドは興味深い場合があります(免責事項:これらは私のものです。私はRakuの並行性の設計に貢献し、react/ supply/を発明しましたwhenever)。

  • Perl6で並行性と並列性を実現する8つの方法
  • 反応、供給、そしていつでも理解する
  • Perl6の同時実行性の内部-それがどのように実装されているかを調べます
9 jjmerelo Dec 28 2020 at 17:53

楽の並行性に関する論文並行性がどのように機能するかについての説明が必要な場合、私が知っている学術論文はありません。いくつかのアドベントカレンダーの出版物で調べることができます。たとえば、これはHTTPサーバーの同時実行性に関するものです。私自身のRakuRecipes(Apressが発行)のように、Rakuに関するほとんどの本には、並行性に関する章が含まれているので、それもチェックすることができます。最後に、私が共著したこの論文では、進化的計算にRakuの並行性を使用して、良い結果を得ています。

Rakuの並行性を評価する方法: * Rakuは、通信シーケンシャルプロセスを使用し、チャネルをファーストクラスオブジェクトとして使用します。その意味では、Goに似ています。一方、Juliaがマクロを介して行うのと同じ方法で、ハイパー/レースを介してデータフローを自動スレッド化することができます。したがって、これらは比較の2つのターゲットになる可能性があります。

おそらく、perl6-usersメーリングリストは、このような質問をするのに適した場所でしょう。

5 p6steve Dec 29 2020 at 04:10

rakuに組み込まれているCSPは、Tony(Anthony)Hoareによって考案された確立された並行性モデルです。トニーの研究を続けたビル(ウィリアム)ロスコーの作品を探すこともできます。これは一般的なCSP調査であることに注意してください。ラクで具体的に行われている参照可能なものがあるとは思えません。