Каковы общие характеристики в occam и csp?
Я видел вопрос, пока учился в OCCAM и CSP (передача последовательных процессов). Я нашел несколько основных ответов, таких как;
- они оба для параллельного программирования,
- они получают ввод с вопросительным знаком (?),
- отправить вывод с восклицательным знаком (!).
Но я хочу узнать больше технических деталей об их общих особенностях.
1 ответ
На CSP
CSP Хоара был закончен в 1979-1984 годах, когда его Книга о CSP (сегодня насчитывающая более 260 страниц) была впервые опубликована в 1985 году.
Эта окончательная версия CSP также включает каналы, которые обеспечивают межпроцессное взаимодействие и механизм синхронизации.
На occam
Дэвид Мэй вместе с командой Хоара в Оксфорде одновременно с разработкой CSP разработали occam
- язык, тесно связанный с очень инновационными и передовыми процессорными сетями TRANSPUTER для InMOS, специально предназначенными для объединения CSP с практическим языком программирования.
Существуют непараллельные расширенные функции occam
концепция языка, из которой могут исходить современные языки.
Забавный пример кода (C) 2000 года, Фред Барнс с некоторыми исправлениями / модами от Питера Уэлча иллюстрирует возможности концепций языка / канала CSP на игрушечном примере бар-симулятора, обслуживающего пиво, сохраняя код читабельным и выразительным.
-- ...(cleared for clarity >>> http://frmb.org/download/bar.occ )
-- ..
-- .
--{{{
PROC bar.tender ( []CHAN OF BYTE req, rsp,
CHAN OF INT mode.change,
CHAN OF O.REQ d.chan,
SEMAPHORE d.sem,
CHAN OF BOOL kill
)
CHAN OF BYTE spinal.chord:
CHAN OF BOOL kill.brain, kill.body:
PAR
--{{{ terminator SEQ, BUT DECLARED TO RUN IN TRUE-PARALLEL EXEC WITH bar.brain() & bar.body()
BOOL any:
SEQ -- SEQ:
kill ? any
kill.brain ! any -- order is
kill.body ! any -- important
--}}}
bar.brain ( req, spinal.chord, mode.change, kill.brain )
bar.body ( spinal.chord, rsp, d.chan, d.sem, kill.body )
:
--}}}
На следующих волнах CSP и Occam влияли друг на друга (например, в "Законах программирования Occam" ( ~90 страниц, отсканированная копия)), затрагивая такие сложные темы, как распределенная обработка в реальном времени и многие другие дополнительные области, представляющие интерес.