Jakie mechanizmy współbieżności udostępnia Raku i jak można je ocenić? [Zamknięte]

Dec 28 2020

Jestem studentem pracującym obecnie nad moją dysertacją o Raku, dla której zdecydowałem się ocenić, czy Raku (Perl 6) jest dobrym językiem do czynienia z wysoką współbieżnością.

Nie udało mi się znaleźć żadnych artykułów na temat współbieżności Raku poza oficjalną stroną internetową. Nie mam też pojęcia, jak ocenić współbieżność Raku (np. Jakiego programu użyć, jakiego języka porównać z Raku itp.).

Jakie mechanizmy współbieżności zapewnia Raku? Gdzie są one udokumentowane? Jak można ocenić ich funkcjonalność i wydajność?

Odpowiedzi

14 JonathanWorthington Dec 29 2020 at 05:39

Raku zapewnia wiele różnych mechanizmów współbieżności (a ponadto zapewnia również szereg równoległych podejść do programowania, ale zakładam, że pytanie dotyczy tak naprawdę współbieżności). Większość tego, co jest w Raku, można znaleźć w innych językach; na przykład:

  • gather/ takeMechanizm leniwie wytwarzania wartości. Jest to widoczne w różnych językach jako funkcje generatora; w Raku nie ma jednak limitu pojedynczych klatek stosu, więc są one dodatkowo potężne. (Nie dotyczy to żadnego kontekstu obejmującego programowanie asynchroniczne, ale nadal spełnia definicję współbieżności).
  • PromiseMechanizm przenoszenia pojedynczego wyniku asynchronicznej operacji jest podobny Promises w JavaScript lub Taskw NET (semantyka są nieco bliższe drugiego).
  • A Supplyto strumień wartości asynchronicznych. Ma wiele wspólnego z rozszerzeniami reaktywnymi (Rx) , jednak wybrał nazewnictwo i API, które pasują do ogólnego projektu języka Raku (na przykład nazwy metod pasują do ich synchronicznych podwójnych sekwencji).
  • A Channelto kolejka współbieżna, która ma mechanizm przekazywania zakończenia i błędu, co oznacza, że ​​można łatwo przechodzić między paradygmatami Supplyi Channel. Kluczowa różnica polega na tym, że a Channelma pamięć - możesz umieścić w niej wartości i natychmiast przejść do zrobienia czegoś innego - podczas gdy jeśli wyemitujesz wartość do a Supply, zapłacisz koszty przetwarzania (dając mechanizm przeciwciśnienia). Za pomocą Channels można budować różne architektury , takie jak etapowa architektura sterowana zdarzeniami .

Najbardziej charakterystyczną koncepcją w Raku, która nie istnieje bezpośrednio w innych językach, jest konstrukcja react/ supply/ whenever. Pisanie procesorów wielu asynchronicznych strumieni jest często trudne (zarządzanie subskrypcjami, kontrola współbieżności); Konstrukcja zapewnia strukturalne podejście do niej. Poza tym jest to głównie kwestia integracji języka, która jest nieco silniejsza w Raku, zamiast traktowania tych rzeczy tylko jako bibliotek.

Jak zauważyli inni, formalnych dokumentów nie ma jeszcze zbyt wiele. Jednak te slajdy mogą być interesujące (zastrzeżenie: są moje; przyczyniłem się do projektu współbieżności Raku i wynalazłem react/ supply/ whenever).

  • 8 sposobów na współbieżność i równoległość w Perlu 6
  • Zrozumienie reaguj, dostarczaj i kiedykolwiek
  • Współbieżność w Perl 6 - omówienie sposobu jej implementacji
9 jjmerelo Dec 28 2020 at 17:53

Artykuły o współbieżności Raku : Jeśli chcesz opisać, jak działa współbieżność, nie ma żadnych artykułów naukowych, o których wiem. Możesz zajrzeć do niektórych publikacji kalendarza adwentowego, na przykład tego o współbieżności na serwerach HTTP . Większość książek o Raku, jak moje własne przepisy Raku (opublikowane przez Apress), zawiera rozdział o Współbieżności, więc to też możesz sprawdzić. Wreszcie, ten artykuł, którego jestem współautorem, wykorzystuje współbieżność Raku do obliczeń ewolucyjnych, z dobrym skutkiem.

Jak ocenić współbieżność Raku: * Raku używa komunikujących się procesów sekwencyjnych i używa kanałów jako obiektów pierwszej klasy. W tym sensie jest podobny do Go . Z drugiej strony jest w stanie automatycznie wątkować przepływy danych przez hiper / wyścig w taki sam sposób, jak Julia robi to za pomocą makr. Więc to mogą być dwa cele do porównania.

Być może lista mailingowa perl6-users byłaby lepszym miejscem do zadawania takich pytań.

5 p6steve Dec 29 2020 at 04:10

CSP wbudowany w raku jest dobrze ugruntowanym modelem współbieżności wymyślonym przez Tony'ego (Anthony'ego) Hoare'a. Możesz również poszukać pracy Billa (Williama) Roscoe, która kontynuowała badania Tony'ego. Zauważ, że będą to ogólne badania CSP. Wątpię, czy jest coś, do czego można by się odwołać, zrobione specjalnie na Raku.