СИГНАЛ против Эстерель против Люстер - PullRequest
0 голосов
/ 22 мая 2018

Мне очень интересны языки, ориентированные на потоки данных и параллелизм.Я прочитал эту тему и неоднократно упоминал СИГНАЛ, Эстерель и Люстер;Я так понимаю, они выдающиеся игроки в этих областях.Тем не менее, многие из их ссылок в найденных мною ресурсах мертвы и кажутся не очень доступными.Мне удалось найти пару компиляторов, которые я могу скомпилировать из исходного кода ( Polychrony Toolset для SIGNAL и Columbia Compiler для Esterel ), но у них обоих были проблемы при попытке компиляции с помощью cmake.Трудно найти даже учебники, преподающие эти языки.

Исходя из этого, мои настоящие вопросы таковы: кто-нибудь действительно знаком с этой областью программирования?Являются ли эти языки по-прежнему крупными сделками или они уже «вымерли»?Может быть, они просто доступны крупным компаниям с огромным ценником, чтобы среднестатистический программист не смог бы подобрать эти языки?

Я столкнулся с парой других языков потока данных / параллельной парадигмытакие, как Oz или E, но они, казалось, в основном для образования и не подходят для реальных проектов.Нельзя сказать, что они не впечатляющие языки, но их реализация была ограничена, и вряд ли их увидят в производственных условиях.Кто-нибудь знает другие языки в этой области, которые они могут порекомендовать, которые действительно доступны (имеют хорошую документацию, учебные пособия и устанавливаемый компилятор для фактического кодирования)?Или кто-нибудь может уточнить такие языки, как Oz или E, и, надеюсь, показать, что они действительно достаточно хороши для крупных проектов в реальном мире?

Ответы [ 2 ]

0 голосов
/ 16 июля 2018

Вы пробовали Céu?Это недавний вариант Esterel, который компилируется в C. Он прост для понимания и обеспечивает реактивное и параллельное структурирование потока управления.Нативные C-вызовы можно сделать, просто поставив перед ними подчеркивание ("_printf").

http://ceu -lang.org

Также см. Статью «Структурное синхронное реактивное программирование с Céu» для хорошего обзора.

http://www.ceu -lang.org / чико / ceu_mod15_pre.pdf

0 голосов
/ 22 мая 2018

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

Я рекомендую использовать активно поддерживаемый язык общего назначения, такой как Java, Scala, Kotlin или C ++.Все они имеют библиотеки для поддержки асинхронных вычислений, и поток данных является не более чем поддержкой асинхронного вызова процедуры.Вы даже можете разработать свою собственную библиотеку потоков данных.Это не так сложно: я написал библиотеку потоков данных для Java, которая составляет всего 40 килобайт исходного кода.

...