Соединение-исчисление - Википедия - Join-calculus

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

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

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

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

Реализации

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

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

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

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

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

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

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

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

Рекомендации

  1. ^ Седрик Фурне, Жорж Гонтье (1995). «Рефлексивный ЧАМ и объединенное исчисление». Цитировать журнал требует | журнал = (помощь), стр. 1
  2. ^ Седрик Фурне, Жорж Гонтье (1995). «Рефлексивный ЧАМ и объединенное исчисление». Цитировать журнал требует | журнал = (помощь), стр. 2
  3. ^ Седрик Фурне, Жорж Гонтье (1995). «Рефлексивный ЧАМ и объединенное исчисление». Цитировать журнал требует | журнал = (помощь), стр. 19
  4. ^ Седрик Фурне, Жорж Гонтье (2000). «Исчисление соединения: язык для распределенного мобильного программирования». Цитировать журнал требует | журнал = (помощь)
  5. ^ "JErlang: Erlang с объединениями". Архивировано из оригинал на 2017-12-08. Получено 2015-04-18.
  6. ^ Yigong Liu - библиотека для согласования асинхронных сообщений и параллелизма

внешняя ссылка