occam - это язык программирования, который является параллельным и основан на алгебре процессов взаимодействующих последовательных процессов (CSP), [1] и разделяет многие из его функций. Он назван в честь философа Уильяма Оккама, в честь которого названа бритва Оккама .
Парадигма | Императивный , процедурный , параллельный |
---|---|
Разработано | Дэвид Мэй |
Разработчик | Inmos |
Впервые появился | 1983 |
Стабильный выпуск | 2.1 (официальный), 2.5 (неофициальный), 3 (не полностью реализован) / 1994 |
Диалекты | |
оккам-π (пи) | |
Под влиянием | |
Связь последовательных процессов | |
Под влиянием | |
Легкость , Вперед , Python |
occam - это императивный процедурный язык (например, Паскаль ). Он был разработан Дэвидом Мэем и другими сотрудниками Inmos (торговая марка INMOS), рекомендованным Тони Хоаром , в качестве родного языка программирования для их транспьютерных микропроцессоров , но доступны реализации для других платформ. Самая известная версия - occam 2; Руководство по программированию было написано Стивеном Эрикссон-Зенит и другими сотрудниками Inmos .
Обзор
В следующих примерах отступы и форматирование имеют решающее значение для синтаксического анализа кода: выражения завершаются концом строки, списки выражений должны находиться на одном уровне отступов. Эта функция, называемая правилом оффсайда , также присутствует в других языках, таких как Haskell и Python .
Связь между процессами осуществляется по именованным каналам . Один процесс выводит данные в канал через, !
а другой вводит данные через ?
. Ввод и вывод не могут продолжаться, пока другой конец не будет готов принять или предложить данные. (В не исходя случае часто говорят , что процесс блокирует на канале Тем не менее, программа будет ни спина , ни опрос,. , Таким образом , такие термины , как ожидание , зависание или выход может также передать поведение, и в том контексте , что она не будет блокировать выполнение других независимых процессов.) Примеры (c - переменная):
клавиатура? c
экран ! c
SEQ
вводит список выражений, которые вычисляются последовательно. Это не подразумевается, как в большинстве других языков программирования. Пример:
SEQ х: = х + 1 у: = х * х
PAR
начинает список выражений, которые могут оцениваться одновременно. Пример:
PAR п() q ()
ALT
указывает список охраняемых команд . Стражи представляют собой комбинацию логического условия и входного выражения, оба необязательны. Каждый сторож, для которого условие истинно и входной канал готов, считается успешным. Для исполнения выбирается одна из удачных альтернатив. Пример:
ALT count1 <100 & c1? данные SEQ count1: = count1 + 1 слились! данные count2 <100 & c2? данные SEQ count2: = count2 + 1 слились! данные статус ? запрос SEQ вне ! count1 вне ! count2
Это будет читать данные из каналов c1 или c2 (в зависимости от того, что готово) и передавать их в объединенный канал. Если countN достигает 100, чтение из соответствующего канала будет отключено. На запрос в канале состояния ответят путем вывода счетчиков в out
.
Изменения языка
оккам 1
occam 1 [2] (выпущенный в 1983 г.) был предварительной версией языка, заимствованной из работы Дэвида Мэя над EPL и CSP Тони Хора. Это поддерживало только тип данных VAR, который был интегральным типом, соответствующим собственной длине слова целевой архитектуры, и массивы только одного измерения.
Оккам 2
occam 2 [3] - это расширение, созданное Inmos Ltd в 1987 году, которое добавляет поддержку операций с плавающей запятой , функции, многомерные массивы и другие типы данных, такие как различные размеры целых чисел (INT16, INT32) и байтов.
С этой версией occam стал языком, способным выражать полезные программы, тогда как occam 1 больше подходил для изучения алгоритмов и изучения нового языка (однако компилятор occam 1 был написан на occam 1, [4] так что есть доказательство существования полезные программы разумного размера могут быть написаны на оккам 1, несмотря на его ограничения).
Оккам 2.1
occam 2.1 [1] был последним из серии разработок языка оккам, внесенных Inmos. Определенный в 1994 году, он находился под влиянием более раннего предложения по языку occam 3 (также называвшегося «occam91» во время его ранней разработки), созданного Джеффом Барреттом в Inmos в начале 1990-х годов. Пересмотренное Справочное руководство, описывающее occam 3, было распространено для комментариев сообщества [5], но язык так и не был полностью реализован в компиляторе.
Occam 2.1 представил несколько новых функций в occam 2, в том числе:
- Именованные типы данных (DATA TYPE x IS y)
- Именованные записи
- Упакованные записи
- Ослабление некоторых правил преобразования типов
- Новые операторы (например, BYTESIN)
- Повторный набор каналов и массивы каналов
- Возможность вернуть массив фиксированной длины из функции.
Полный список изменений см. В Приложении P Справочного руководства Inmos occam 2.1 .
Оккам-π
occam-π [6] - это общее название варианта occam, реализованного более поздними версиями Kent Retargetable occam Compiler ( KRoC ). Добавление символа π (пи) к имени occam является намеком на KRoC occam, включая несколько идей, вдохновленных π-исчислением . Он содержит несколько значительных расширений компилятора occam 2.1, например:
- Вложенные протоколы
- Создание рабочего процесса
- Мобильные каналы, данные и процессы
- Рекурсия
- Наследование протокола
- Конструкторы массивов
- Расширенное рандеву
Смотрите также
- Язык программирования XC , основанный на occam, но с синтаксисом в стиле C.
- Языки параллельного программирования
- Список языков параллельного и параллельного программирования
Рекомендации
- ^ a b occam 2.1 Справочное руководство (PDF) . SGS-Thomson Microelectronics Ltd. 1995-05-12. Документ Inmos 72 occ 45 03
- ^ Occam. Руководство по программированию . Прентис-Холл. 1984. ISBN 0-13-629296-8.
- ^ Эрикссон-Зенит, Стивен (1988). Occam 2 Справочное руководство . Прентис-Холл. ISBN 0-13-629312-3.
- ^ Повар, Барри М; Пил, RMA (1999-04-11). "Оккам о программируемых вентильных массивах" . В Куке, Барри М. (ред.). Архитектуры, языки и методы для параллельных систем . 22-е Техническое совещание Всемирной группы пользователей Оккама и Транспьютера. Кил, Соединенное Королевство: IOS Press. п. 219. ISBN 90-5199-480-Х. Проверено 28 ноября 2016 .
- ^ Барретт, Джефф; Эрикссон-Зенит, Стивен (1992-03-31). «Справочное руководство по occam 3» (PDF) . Inmos . Проверено 24 марта 2008 . Цитировать журнал требует
|journal=
( помощь ) - ^ Барнс, Фред; Уэлч, Питер (14 января 2006 г.). «Оккам-пи: сочетание лучшего из CSP и пи-исчисления» . Проверено 24 ноября 2006 .
дальнейшее чтение
- Архитектуры коммуникационных процессов 2007 - WoTUG-30 . IOS Press. 2007. С. 513 стр. ISBN 978-1-58603-767-3. [1]
- Архитектуры коммуникативных процессов 2006 - WoTUG-29 . IOS Press. 2006. С. 391 стр. ISBN 978-1-58603-671-3. [2]
- Архитектуры коммуникационных процессов 2005 - WoTUG-28 . IOS Press. 2005. 405 с. ISBN 978-1-58603-561-7. [3]
- Керридж, Джон, изд. (1993). Транспьютер и исследования Оккама: новые направления . IOS Press. С. 253 стр . ISBN 0-8247-0711-7.
- Роско, Эндрю Уильям ; Хоар, Чарльз Энтони Ричард (1986). Законы программирования Оккама . Группа исследования программирования, Оксфордский университет.
- Егоров, А., Технический университет - София, (1983-2011) Записки по Компютърни мощностьури
Внешние ссылки
- Информация, компиляторы, редакторы и утилиты на страницах WoTUG occam
- Компиляторы, документация, примеры, проекты и утилиты в Internet Parallel Computing Archive (больше не поддерживается)
- Книги Оккама на Transputer.net
- Язык оккам-пи .
- Компилятор Tock occam - (переводчик с occam на C от Kent) компилятор на основе Haskell для оккама и родственных языков.