Rachunek łączenia

Join -calculus to rachunek procesowy opracowany w INRIA . Rachunek łączenia został opracowany, aby zapewnić formalną podstawę do projektowania rozproszonych języków programowania, dlatego celowo unika konstrukcji komunikacyjnych występujących w innych obliczeniach procesowych, takich jak rendez-vous , które są trudne do wdrożenia w środowisku rozproszonym. Pomimo tego ograniczenia rachunek łączenia jest równie wyrazisty jak pełny rachunek π . Zademonstrowano kodowanie rachunku π w rachunku łączenia i odwrotnie.

Rachunek łączenia jest członkiem rodziny rachunków procesowych rachunku π i można go uznać, w swej istocie, za asynchroniczny rachunek π z kilkoma silnymi ograniczeniami:

  • Ograniczenie zakresu, odbiór i zreplikowany odbiór są syntaktycznie połączone w jedną konstrukcję, definicję ;
  • Komunikacja odbywa się tylko na zdefiniowanych nazwach;
  • Dla każdej zdefiniowanej nazwy istnieje dokładnie jeden zreplikowany odbiór.

Jednakże, jako język programowania, rachunek łączenia oferuje co najmniej jedną wygodę w porównaniu z rachunkiem π — a mianowicie użycie wielokierunkowych wzorców łączenia , możliwość dopasowania do komunikatów z wielu kanałów jednocześnie.

Implementacje

Języki oparte na rachunku łączenia

Język programowania Join-Calculus jest nowym językiem opartym na rachunku procesów Join-Calculus. Jest zaimplementowany jako interpreter napisany w OCaml i obsługuje programowanie rozproszone z typowaniem statycznym, przejrzystą komunikację zdalną, mobilność opartą na agentach i niektóre wykrywanie awarii.

  • Chociaż nie jest to wyraźnie oparte na rachunku łączenia, system reguł CLIPS implementuje go, jeśli każda reguła usuwa swoje dane wejściowe po uruchomieniu (wycofuje odpowiednie fakty po uruchomieniu).

Wiele implementacji rachunku łączenia zostało wykonanych jako rozszerzenia istniejących języków programowania:

  • JoCaml to wersja OCaml rozszerzona o prymitywy rachunku różniczkowego
  • Polifoniczny C# i jego następca rozszerzają C#
  • MC# i Parallel C# rozszerzają polifoniczny C#
  • Join Java rozszerza Javę
  • Współbieżna propozycja podstawowa, która korzysta z rachunku łączenia
  • JErlang (J oznacza Join, erjang to Erlang dla JVM)

Osadzenia w innych językach programowania

Te implementacje nie zmieniają podstawowego języka programowania, ale wprowadzają operacje rachunku różniczkowego za pośrednictwem niestandardowej biblioteki lub DSL:

  • ScalaJoins i Chymyst znajdują się w Scali
  • JoinHs autorstwa Einara Karttunena i syallop / Join-Language autorstwa Samuela Yallopa to DSL dla Join calculus w Haskell
  • Joinady - różne implementacje rachunku łączenia w języku F#
  • CocoaJoin to eksperymentalna implementacja w Objective-C dla iOS i Mac OS X
  • Biblioteka Join Python znajduje się w Pythonie 3
  • C++ przez Boost (dla wzmocnienia z 2009 r., ok. v. 40, obecny (grudzień '19) to 72).
  1. ^ Cedric Fournet, Georges Gonthier (1995). „Odruchowy CHAM i rachunek łączenia” . {{ cite journal }} : Cite journal wymaga |journal= ( pomoc ) , str. 1
  2. ^ Cedric Fournet, Georges Gonthier (1995). „Odruchowy CHAM i rachunek łączenia” . {{ cite journal }} : Cite journal wymaga |journal= ( pomoc ) , str. 2
  3. ^ Cedric Fournet, Georges Gonthier (1995). „Odruchowy CHAM i rachunek łączenia” . {{ cite journal }} : Cite journal wymaga |journal= ( pomoc ) , str. 19
  4. ^ Petricek, Tomasz. "TryJoinads (IV.) - Współbieżność przy użyciu rachunku łączenia" . tomasp.net . Źródło 2023-01-24 .
  5. ^ Cedric Fournet, Georges Gonthier (2000). „The Join Calculus: język rozproszonego programowania mobilnego” : 268–332. {{ cite journal }} : Cite journal wymaga |journal= ( pomoc )
  6. ^ „Jerlang: Erlang z łączeniami” . Zarchiwizowane od oryginału w dniu 2017-12-08 . Źródło 2015-04-18 .
  7. ^ Yigong Liu - biblioteka koordynacji wiadomości asynchronicznych i współbieżności

Linki zewnętrzne