Welche Parallelitätsmechanismen werden von Raku bereitgestellt und wie können sie bewertet werden? [geschlossen]

Dec 28 2020

Ich bin ein Student, der derzeit an meiner Dissertation über Raku arbeitet, für die ich mich entschlossen habe zu bewerten, ob Raku (Perl 6) eine gute Sprache ist, wenn es um hohe Parallelität geht.

Ich konnte bis auf die offizielle Website keine Artikel über Rakus Parallelität finden. Außerdem habe ich keine Ahnung, wie ich die Parallelität von Raku bewerten soll (z. B. welches Programm ich verwenden soll, welche Sprache mit Raku verglichen werden soll usw.).

Welche Parallelitätsmechanismen bietet Raku? Wo sind diese dokumentiert? Wie können ihre Funktionalität und Leistung bewertet werden?

Antworten

14 JonathanWorthington Dec 29 2020 at 05:39

Raku bietet eine Reihe verschiedener Parallelitätsmechanismen (und darüber hinaus auch eine Reihe paralleler Programmieransätze, aber ich gehe davon aus, dass es sich bei der Frage wirklich nur um Parallelität handelt). Der Großteil dessen, was in Raku ist, kann in anderen Sprachen gefunden werden; beispielsweise:

  • Der gather/ takeMechanismus zur trägen Erzeugung von Werten. Dies wird in verschiedenen Sprachen als Generatorfunktionen angesehen. In Raku gibt es jedoch kein einziges Stack-Frame-Limit, daher sind sie Coroutine-mächtig. (Dies ist in keinem Zusammenhang mit asynchroner Programmierung der Fall, entspricht jedoch der Definition der Parallelität.)
  • Der PromiseMechanismus zum Übermitteln eines einzelnen Ergebnisses einer asynchronen Operation ähnelt Promises in JavaScript oder Taskin .Net (die Semantik ist der letzteren etwas näher).
  • A Supplyist ein Strom von asynchronen Werten. Es hat einiges mit den reaktiven Erweiterungen (Rx) gemeinsam , hat jedoch eine Benennung und API ausgewählt, die zum gesamten Raku-Sprachdesign passt (z. B. stimmen Methodennamen mit ihren synchronen Duals in Sequenzen überein).
  • A Channelist eine gleichzeitige Warteschlange, die über einen Mechanismus verfügt, der die Vervollständigung und den Fehler übermittelt. Dies bedeutet, dass Sie problemlos zwischen den Paradigmen Supplyund wechseln können Channel. Der Hauptunterschied besteht darin, dass ein ChannelSpeicher vorhanden ist - Sie können Werte in ihn einfügen und sofort etwas anderes tun -, während Sie, wenn Sie einen Wert in einen ausgeben Supply, die Verarbeitungskosten bezahlen (indem Sie einen Gegendruckmechanismus angeben). Mit Channels können verschiedene Architekturen erstellt werden , z. B. eine inszenierte ereignisgesteuerte Architektur .

Das auffälligste Konzept in Raku, die nicht direkt in anderen Sprachen nicht vorhanden ist , ist die react/ supply/ wheneverKonstrukt. Das Schreiben von Prozessoren für mehrere asynchrone Streams ist häufig eine Herausforderung (Abonnementverwaltung, Parallelitätskontrolle). Das Konstrukt bietet einen strukturierten Programmieransatz. Darüber hinaus geht es hauptsächlich darum, dass die Sprachintegration in Raku etwas stärker ist, anstatt diese Dinge nur als Bibliotheken zu behandeln.

Wie andere angemerkt haben, gibt es noch nicht viel in Bezug auf formelle Papiere. Diese Folien können jedoch von Interesse sein (Haftungsausschluss: Sie gehören mir; ich habe zum Raku-Parallelitätsdesign beigetragen und react/ supply/ erfunden whenever).

  • 8 Möglichkeiten zur Parallelität und Parallelität in Perl 6
  • Verstehen, reagieren, liefern und wann immer
  • Inside Perl 6 Parallelität - Einblicke in die Implementierung
9 jjmerelo Dec 28 2020 at 17:53

Artikel über Rakus Parallelität : Wenn Sie beschreiben möchten, wie Parallelität funktioniert, sind mir keine wissenschaftlichen Artikel bekannt. Sie können in einigen Adventskalender-Veröffentlichungen nachschlagen, beispielsweise in dieser über die Parallelität auf HTTP-Servern . Die meisten Bücher über Raku, wie meine eigenen Raku-Rezepte (veröffentlicht von Apress), enthalten ein Kapitel über Parallelität. Schließlich verwendet dieses von mir mitverfasste Papier Rakus Parallelität für evolutionäre Berechnungen, um gute Ergebnisse zu erzielen.

So bewerten Sie die Parallelität von Raku: * Raku verwendet kommunizierende sequentielle Prozesse und Kanäle als erstklassige Objekte. In diesem Sinne ist es ähnlich wie Go . Auf der anderen Seite ist es möglich, Datenflüsse über Hyper / Race automatisch zu fädeln, genauso wie Julia es über Makros tut. Das könnten also zwei Vergleichsziele sein.

Vielleicht ist die Mailingliste der Perl6-Benutzer ein besserer Ort, um Fragen wie diese zu stellen.

5 p6steve Dec 29 2020 at 04:10

Der in Raku integrierte CSP ist ein etabliertes Parallelitätsmodell, das von Tony (Anthony) Hoare entwickelt wurde. Vielleicht möchten Sie auch nach Arbeiten von Bill (William) Roscoe suchen, die Tonys Forschungslinie fortsetzen. Beachten Sie, dass dies allgemeine CSP-Forschung sein wird. Ich bezweifle, dass es irgendetwas gibt, auf das Bezug genommen werden kann, das speziell für Raku gemacht wurde.