Объединение-исчисление

Join -calculus — это исчисление процессов, разработанное в INRIA . Join-calculus был разработан для предоставления формальной основы для проектирования языков распределенного программирования, и поэтому намеренно избегает конструкций коммуникаций, встречающихся в других исчислениях процессов, таких как коммуникации рандеву , которые трудно реализовать в распределенной среде. [1] Несмотря на это ограничение, join-calculus столь же выразителен, как и полное π-исчисление . Были продемонстрированы кодировки π-исчисления в join-calculus и наоборот. [2]

Исчисление соединений является членом семейства π-исчислений исчислений процессов и может рассматриваться, по своей сути, как асинхронное π-исчисление с несколькими сильными ограничениями: [3]

  • Ограничение области действия, прием и реплицированный прием синтаксически объединены в единую конструкцию — определение ;
  • Общение происходит только по определенным именам;
  • Для каждого определенного имени существует ровно один реплицированный прием.

Однако, как язык программирования, исчисление соединений предлагает по крайней мере одно удобство по сравнению с π-исчислением, а именно использование многоканальных шаблонов соединений , возможность сопоставлять сообщения из нескольких каналов одновременно. [4]

Реализации

Языки, основанные на исчислении соединений

Язык программирования join-calculus — это новый язык, основанный на исчислении процесса join-calculus. Он реализован как интерпретатор, написанный на OCaml , и поддерживает статически типизированное распределенное программирование, прозрачную удаленную связь, мобильность на основе агентов и некоторое обнаружение сбоев. [5]

  • Хотя система правил CLIPS явно не основана на исчислении соединений, она реализует его, если каждое правило удаляет свои входные данные при срабатывании (изымает соответствующие факты при срабатывании).

Многие реализации исчисления соединений были сделаны как расширения существующих языков программирования:

  • JoCaml — это версия OCaml, расширенная примитивами исчисления соединений.
  • Полифонический C# и его преемник расширяют C#
  • MC# и Parallel C# расширяют полифонический C#
  • Присоединяйтесь к Java расширяет Java
  • Предложение Concurrent Basic, использующее Join-calculus
  • JErlang (J означает Join, erjang — это Erlang для JVM) [6]

Встраивание в другие языки программирования

Эти реализации не изменяют базовый язык программирования, но вводят операции исчисления соединений через пользовательскую библиотеку или DSL:

  • Библиотеки ScalaJoins и Chymyst находятся в Scala
  • JoinHs Эйнара Карттунена и syallop/Join-Language Сэмюэля Яллопа — это DSL для исчисления соединений в Haskell.
  • Joinads — различные реализации исчисления соединений в F#
  • CocoaJoin — экспериментальная реализация на языке Objective-C для iOS и Mac OS X.
  • Библиотека Join Python в Python 3 [7]
  • C++ через Boost [8] (для boost от 2009 г., ок. 40, текущая (декабрь 2019 г.) — 72).

Ссылки

  1. ^ Седрик Фурне, Жорж Гонтье (1995). «Рефлексивный CHAM и исчисление соединений». {{cite journal}}: Цитировать журнал требует |journal=( помощь ) , стр. 1
  2. ^ Седрик Фурне, Жорж Гонтье (1995). «Рефлексивный CHAM и исчисление соединений». {{cite journal}}: Цитировать журнал требует |journal=( помощь ) , стр. 2
  3. ^ Седрик Фурне, Жорж Гонтье (1995). «Рефлексивный CHAM и исчисление соединений». {{cite journal}}: Цитировать журнал требует |journal=( помощь ) , стр. 19
  4. ^ Петричек, Томас. "TryJoinads (IV.) - Параллелизм с использованием исчисления соединений". tomasp.net . Получено 24.01.2023 .
  5. ^ Седрик Фурне, Жорж Гонтье (2000). «Исчисление соединений: язык для распределенного мобильного программирования»: 268–332. {{cite journal}}: Цитировать журнал требует |journal=( помощь )
  6. ^ "JErlang: Erlang с соединениями". Архивировано из оригинала 2017-12-08 . Получено 2015-04-18 .
  7. ^ Join Python, Join-calculus для Python, автор Маттиас Андре
  8. ^ Игун Лю - Библиотека координации и параллелизма сообщений Join-Asynchronous
  • INRIA, присоединяйтесь к домашней странице Calculus
  • Microsoft Research, Join Calculus: язык для распределенного мобильного программирования
Взято с "https://en.wikipedia.org/w/index.php?title=Join-calculus&oldid=1159930428"