JCSP: Реализация CSP для Java и ее применение в параллельных вычислениях и робототехнике.
JCSP
JCSP: реализация CSP для Java. Простое создание надежного многопоточного ПО без сложной математики. Распределённые вычисления через TCP/Net расширение.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
JCSP — это реализация концепции взаимодействующих последовательных процессов (CSP) для языка программирования Java. Хотя CSP является математической системой, JCSP не требует глубоких математических знаний, позволяя программистам создавать надежное программное обеспечение, следуя простым правилам.
JCSP is an implementation of communicating sequential processes (CSP) for the programming language Java. Although CSP is a mathematical system, JCSP does not require in depth mathematical skill, allowing instead that programmers can achieve well behaved software by following simple rules.
Обзор
Существует четыре способа, которыми многопоточные программы могут давать невоспроизводимые ошибки. Таким образом, это демонстрирует надежность JCSP, основанную на его математических принципах.
There are four ways in which multi threaded programs can fail untestably: As such, it epitomises the dependability of JCSP from its mathematical basis.
Сетевой слой
Поскольку сокеты протокола управления передачей (TCP) могут быть сконструированы для работы как блокирующие каналы в понимании CSP, становится возможным распределять процессы JCSP между несколькими компьютерами. Это достигается с помощью расширения JCSP Net, которое предоставляет каналы с семантикой CSP, используя TCP. Благодаря композиционности CSP, с точки зрения поведения не имеет значения, выполняются ли процессы локально или распределённо. Разница заключается только в относительной производительности. Таким образом, например, можно разработать приложение на одном сервере, а затем сравнить многопроцессорную версию этого же приложения с целью оптимизации его производительности.
Because Transmission Control Protocol (TCP) sockets can be constructed to behave as blocking channels in the CSP sense, it is possible to distribute JCSP processes across multiple computers. This is achieved using the JCSP Net extension that provides channels with CSP semantics using TCP. Because CSP is compositional, it does not matter in behaviour terms whether processes are co located or distributed. The only difference is in the relative performance. So it is possible, for example, to develop an application on a single server then compare multi processor version of the same application with the aim of optimising the performance.
Издание роботов
JCSP re – это значительно упрощенная версия пакетов JCSP, разработанных примерно в 2008 году в Эдинбургском университете Нейпира профессорами Джоном Керриджем, Алексом Панайотопулосом и Патриком Лисмором. Исследования в области применения JCSP в робототехнических и мобильных средах продолжаются в Эдинбургском университете Нейпира. Рабочая реализация «JCSP re» позволяет разрабатывать один и тот же параллельный программный код для роботов. В частности, в рамках этого исследования использовались роботы Lego Mindstorms NXT, поскольку они поддерживают популярную виртуальную машину LeJOS NXJ, которая выполняет исходный код на Java.
JCSP re is a highly reduced version of the JCSP packages developed around 2008 at the Napier University Edinburgh by Professor Jon Kerridge, Alex Panayotopoulos and Patrick Lismore. Research into JCSP for robotics environments and JCSP for mobile environments is an active area of research at Napier University Edinburgh. The working implementation of 'JCSP re' allows the development of the same concurrent software for robots. Specifically, the robots targeted for this research were the Lego Mindstorms NXTs because they can run the popular LeJOS NXJ virtual machine that executes Java source code.
Использование JCSP из других языков
JCSP по сути является чистым Java API (хотя существует исследовательская альтернатива, использующая расширение C CSP для JVM). В силу этого, он в принципе прекрасно подходит для организации параллельного выполнения в приложениях Scala и Groovy, а также в Java. Таким образом, JCSP может служить альтернативой модели акторов Scala. JCSP использует синхронизированную коммуникацию, а акторы – буферизованную (асинхронную), и каждый из этих подходов имеет свои преимущества в определенных ситуациях. JCSP позволяет буферизировать свои каналы и, следовательно, легко эмулировать модель акторов; обратное утверждение неверно.
JCSP is essentially a pure Java API (although a research alternative exists that uses the C CSP extension to the JVM). As such, it is in principle eminently suitable for concurrency in Scala and Groovy applications as well as Java ones. JCSP can therefore provide an alternative to Scala's actor model. JCSP uses synchronised communication and actors use buffered (asynchronous) communication, each of which have their advantages in certain circumstances. JCSP allows its channels to be buffered so can easily emulate the actor model; the converse is not true.