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 были создан в качестве расширений существующих языков программирования:
- JoCaml — это версия OCaml, расширенная с помощью примитивов join-calculus
- Полифонический C# и его преемник Cω расширяют C#
- MC# и Параллельный C# расширяют Полифонический C#
- Join Java расширяет Java
- JErlang (J значит Join, Erjang значит JVM)[5]
Использование в других языках программирования[править]
Следующие реализации не изменяют базовый язык программирования, но вводят операции 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
Примечания[править]
- ↑ Cedric Fournet, Georges Gonthier (1995). The reflexive CHAM and the join-calculus, с. 1.
- ↑ Cedric Fournet, Georges Gonthier (1995). The reflexive CHAM and the join-calculus, с. 2.
- ↑ Cedric Fournet, Georges Gonthier (1995). The reflexive CHAM and the join-calculus, с. 19.
- ↑ Cedric Fournet, Georges Gonthier (2000). The Join Calculus: A Language for Distributed Mobile Programming.
- ↑ JErlang: Erlang with Joins. Архивировано из первоисточника 8 декабря 2017.[недоступная ссылка] Проверено 8 сентября 2018.
- ↑ Yigong Liu - Join-Asynchronous Message Coordination and Concurrency Library.