Джойн-исчисление
Исчисление соединений — это исчисление процессов, разработанное в INRIA . Исчисление соединения было разработано, чтобы обеспечить формальную основу для разработки распределенных языков программирования, и поэтому намеренно избегает коммуникационных конструкций, встречающихся в других исчислениях процессов, таких как рандеву- коммуникации, которые трудно реализовать в распределенной среде. [1] Несмотря на это ограничение, объединенное исчисление столь же выразительно, как и полное π-исчисление . Было продемонстрировано кодирование π-исчисления в объединенном исчислении и наоборот. [2]
Соединение-исчисление является членом семейства π-исчислений исчислений процессов и по своей сути может рассматриваться как асинхронное π-исчисление с несколькими строгими ограничениями: [3]
- Ограничение области действия, прием и реплицируемый прием синтаксически объединены в единую конструкцию — определение ;
- Общение происходит только по определенным именам;
- Для каждого определенного имени существует ровно один реплицированный прием.
Однако, как язык программирования, исчисление соединений предлагает по крайней мере одно удобство по сравнению с π-исчислением, а именно использование шаблонов многостороннего соединения , возможность сопоставления сообщений из нескольких каналов одновременно. [4]
Реализации [ править ]
Языки, основанные на исчислении соединения [ править ]
Язык программирования соединения-исчисления — это новый язык, основанный на исчислении процессов соединения. Он реализован в виде интерпретатора, написанного на OCaml , и поддерживает статически типизированное распределенное программирование, прозрачную удаленную связь, мобильность на основе агентов и некоторые функции обнаружения сбоев. [5]
- Хотя система правил CLIPS явно не основана на исчислении соединений, она реализует ее, если каждое правило удаляет свои входные данные при срабатывании (отменяет соответствующие факты при запуске).
Многие реализации метода соединения были сделаны как расширения существующих языков программирования:
- JoCaml — это версия OCaml, расширенная примитивами исчисления соединений.
- Полифонический C# и его преемник Cω расширяют C#.
- MC# и Parallel C# расширяют полифонический C#.
- Присоединяйтесь к Java расширяет Java
- Предложение Concurrent Basic, использующее метод соединения.
- JErlang (J означает «Join», erjang — Erlang для JVM) [6]
Встраивания в другие языки программирования [ править ]
Эти реализации не меняют базовый язык программирования, но вводят операции исчисления соединения через специальную библиотеку или DSL:
- Библиотеки ScalaJoins и Chymyst находятся в Scala.
- JoinHs Эйнара Карттунена и syallop/Join-Language Сэмюэля Яллопа — это DSL для исчисления соединений в Haskell.
- Джойнады — различные реализации исчисления соединений в F#.
- CocoaJoin — экспериментальная реализация Objective-C для iOS и Mac OS X.
- Библиотека Join Python в Python 3 [7]
- C++ через Boost [8] (для повышения с 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 января 2023 г.
- ^ Седрик Фурне, Жорж Гонтье (2000). «Исчисление соединений: язык распределенного мобильного программирования» : 268–332.
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ «JErlang: Эрланг с соединениями» . Архивировано из оригинала 8 декабря 2017 г. Проверено 18 апреля 2015 г.
- ^ Join Python, Join-исчисление для Python Маттиаса Андре
- ^ Игун Лю - Библиотека асинхронной координации сообщений и параллелизма присоединения