Join-calculus

Материал из Циклопедии
Перейти к навигации Перейти к поиску

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

Join-calculus является членом семейства исчислений процессов π и может быть рассмотрено как асинхронное π-исчисление с несколькими серьёзными ограничениями:[3]

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

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

Реализации[править]

Языки, основанные на join-calculus[править]

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

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

Использование в других языках программирования[править]

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

  • Библиотека Boost.Join представляет собой реализацию на C++ в рамках фреймворка Boost[6]
  • Библиотеки ScalaJoins и Chymyst в Scala
  • «Язык Join» в Haskell
  • Joinads — различные реализации исчисления объединения в F#
  • CocoaJoin — экспериментальная реализация в Objective-C для iOS и Mac OS X
  • Библиотека Join Python в Python 3

Примечания[править]

  1. Cedric Fournet, Georges Gonthier (1995). The reflexive CHAM and the join-calculus, с. 1.
  2. Cedric Fournet, Georges Gonthier (1995). The reflexive CHAM and the join-calculus, с. 2.
  3. Cedric Fournet, Georges Gonthier (1995). The reflexive CHAM and the join-calculus, с. 19.
  4. Cedric Fournet, Georges Gonthier (2000). The Join Calculus: A Language for Distributed Mobile Programming.
  5. JErlang: Erlang with Joins. Архивировано из первоисточника 8 декабря 2017.[недоступная ссылка] Проверено 8 сентября 2018.
  6. Yigong Liu - Join-Asynchronous Message Coordination and Concurrency Library.