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 Cω 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).
-
^
Cedric Fournet, Georges Gonthier (1995). „Odruchowy CHAM i rachunek łączenia” .
{{ cite journal }}
: Cite journal wymaga|journal=
( pomoc ) , str. 1 -
^
Cedric Fournet, Georges Gonthier (1995). „Odruchowy CHAM i rachunek łączenia” .
{{ cite journal }}
: Cite journal wymaga|journal=
( pomoc ) , str. 2 -
^
Cedric Fournet, Georges Gonthier (1995). „Odruchowy CHAM i rachunek łączenia” .
{{ cite journal }}
: Cite journal wymaga|journal=
( pomoc ) , str. 19 - ^ Petricek, Tomasz. "TryJoinads (IV.) - Współbieżność przy użyciu rachunku łączenia" . tomasp.net . Źródło 2023-01-24 .
-
^
Cedric Fournet, Georges Gonthier (2000). „The Join Calculus: język rozproszonego programowania mobilnego” : 268–332.
{{ cite journal }}
: Cite journal wymaga|journal=
( pomoc ) - ^ „Jerlang: Erlang z łączeniami” . Zarchiwizowane od oryginału w dniu 2017-12-08 . Źródło 2015-04-18 .
- ^ Yigong Liu - biblioteka koordynacji wiadomości asynchronicznych i współbieżności
Linki zewnętrzne
- INRIA, dołącz do strony głównej rachunku różniczkowego
- Microsoft Research, Join Rachunek: język rozproszonego programowania mobilnego