Join -calculus — это исчисление процессов, разработанное в INRIA . Join-calculus был разработан для предоставления формальной основы для проектирования языков распределенного программирования, и поэтому намеренно избегает конструкций коммуникаций, встречающихся в других исчислениях процессов, таких как коммуникации рандеву , которые трудно реализовать в распределенной среде. [1] Несмотря на это ограничение, join-calculus столь же выразителен, как и полное π-исчисление . Были продемонстрированы кодировки π-исчисления в join-calculus и наоборот. [2]
Исчисление соединений является членом семейства π-исчислений исчислений процессов и может рассматриваться, по своей сути, как асинхронное π-исчисление с несколькими сильными ограничениями: [3]
Ограничение области действия, прием и реплицированный прием синтаксически объединены в единую конструкцию — определение ;
Общение происходит только по определенным именам;
Для каждого определенного имени существует ровно один реплицированный прием.
Однако, как язык программирования, исчисление соединений предлагает по крайней мере одно удобство по сравнению с π-исчислением, а именно использование многоканальных шаблонов соединений , возможность сопоставлять сообщения из нескольких каналов одновременно. [4]
Реализации
Языки, основанные на исчислении соединений
Язык программирования join-calculus — это новый язык, основанный на исчислении процесса join-calculus. Он реализован как интерпретатор, написанный на OCaml , и поддерживает статически типизированное распределенное программирование, прозрачную удаленную связь, мобильность на основе агентов и некоторое обнаружение сбоев. [5]
Хотя система правил CLIPS явно не основана на исчислении соединений, она реализует его, если каждое правило удаляет свои входные данные при срабатывании (изымает соответствующие факты при срабатывании).
Многие реализации исчисления соединений были сделаны как расширения существующих языков программирования:
JoCaml — это версия OCaml, расширенная примитивами исчисления соединений.
C++ через Boost [8] (для boost от 2009 г., ок. 40, текущая (декабрь 2019 г.) — 72).
Ссылки
^ Седрик Фурне, Жорж Гонтье (1995). «Рефлексивный CHAM и исчисление соединений». {{cite journal}}: Цитировать журнал требует |journal=( помощь ) , стр. 1
^ Седрик Фурне, Жорж Гонтье (1995). «Рефлексивный CHAM и исчисление соединений».{{cite journal}}: Цитировать журнал требует |journal=( помощь ) , стр. 2
^ Седрик Фурне, Жорж Гонтье (1995). «Рефлексивный CHAM и исчисление соединений».{{cite journal}}: Цитировать журнал требует |journal=( помощь ) , стр. 19
^ Петричек, Томас. "TryJoinads (IV.) - Параллелизм с использованием исчисления соединений". tomasp.net . Получено 24.01.2023 .
^ Седрик Фурне, Жорж Гонтье (2000). «Исчисление соединений: язык для распределенного мобильного программирования»: 268–332.{{cite journal}}: Цитировать журнал требует |journal=( помощь )
^ "JErlang: Erlang с соединениями". Архивировано из оригинала 2017-12-08 . Получено 2015-04-18 .
^ Join Python, Join-calculus для Python, автор Маттиас Андре
^ Игун Лю - Библиотека координации и параллелизма сообщений Join-Asynchronous
Внешние ссылки
INRIA, присоединяйтесь к домашней странице Calculus
Microsoft Research, Join Calculus: язык для распределенного мобильного программирования