occam (язык программирования) - occam (programming language)
Парадигма | Императивный , процедурный , параллельный |
---|---|
Разработано | Дэвид Мэй |
Разработчик | Inmos |
Впервые появился | 1983 |
Стабильный выпуск | 2.1 (официальный), 2.5 (неофициальный), 3 (не полностью реализован) / 1994
|
Диалекты | |
оккам-π (пи) | |
Под влиянием | |
Связь последовательных процессов | |
Под влиянием | |
Легкость , Вперед , Python |
occam - это язык программирования, который является параллельным и основан на алгебре процессов взаимодействующих последовательных процессов (CSP) и разделяет многие из его функций. Он назван в честь философа Уильяма Оккама, в честь которого названа бритва Оккама .
occam - это императивный процедурный язык (например, Паскаль ). Он был разработан Дэвидом Мэем и другими сотрудниками Inmos (торговая марка INMOS), рекомендованным Тони Хоаром , как родной язык программирования для их транспьютерных микропроцессоров , но доступны его реализации для других платформ. Самая известная версия - occam 2; Руководство по программированию было написано Стивеном Эрикссон-Зенит и другими сотрудниками Inmos .
Обзор
В следующих примерах отступы и форматирование имеют решающее значение для синтаксического анализа кода: выражения завершаются концом строки, списки выражений должны находиться на одном уровне отступов. Эта функция, называемая правилом оффсайда , также присутствует в других языках, таких как Haskell и Python .
Связь между процессами осуществляется по именованным каналам . Один процесс выводит данные в канал через, !
а другой вводит данные через ?
. Ввод и вывод не могут продолжаться, пока другой конец не будет готов принять или предложить данные. (В не исходя случае часто говорят , что процесс блокирует на канале Тем не менее, программа будет ни спина , ни опрос,. , Таким образом , такие термины , как ожидание , зависание или выход может также передать поведение, и в том контексте , что она не будет блокировать выполнение других независимых процессов.) Примеры (c - переменная):
keyboard ? c
screen ! c
SEQ
вводит список выражений, которые вычисляются последовательно. Это не подразумевается, как в большинстве других языков программирования. Пример:
SEQ x := x + 1 y := x * x
PAR
начинает список выражений, которые могут оцениваться одновременно. Пример:
PAR p() q()
ALT
указывает список охраняемых команд . Стражи представляют собой комбинацию логического условия и входного выражения, оба необязательны. Каждый сторож, для которого условие истинно и входной канал готов, считается успешным. Для исполнения выбирается одна из удачных альтернатив. Пример:
ALT count1 < 100 & c1 ? data SEQ count1 := count1 + 1 merged ! data count2 < 100 & c2 ? data SEQ count2 := count2 + 1 merged ! data status ? request SEQ out ! count1 out ! count2
Это будет читать данные из каналов c1 или c2 (в зависимости от того, что готово) и передавать их в объединенный канал. Если countN достигает 100, чтение из соответствующего канала будет отключено. На запрос в канале состояния ответят путем вывода счетчиков в out
.
Изменения языка
Оккам 1
occam 1 (выпущенный в 1983 г.) был предварительной версией языка, заимствованной из работы Дэвида Мэя над EPL и CSP Тони Хора. Это поддерживало только тип данных VAR, который был целым типом, соответствующий собственной длине слова целевой архитектуры, и массивы только одного измерения.
Оккам 2
occam 2 - это расширение, созданное Inmos Ltd в 1987 году, которое добавляет поддержку операций с плавающей запятой , функции, многомерные массивы и другие типы данных, такие как различные размеры целых чисел (INT16, INT32) и байтов.
С этой версией occam стал языком, способным выражать полезные программы, тогда как occam 1 больше подходил для изучения алгоритмов и изучения нового языка (однако компилятор occam 1 был написан на occam 1, так что существует доказательство существования, имеющее разумные размеры. , полезные программы могли быть написаны на оккам 1, несмотря на его ограничения).
Оккам 2.1
occam 2.1 был последним из серии разработок языка occam, внесенных Inmos. Определенный в 1994 году, он находился под влиянием более раннего предложения по языку occam 3 (также называвшегося «occam91» во время его ранней разработки), созданного Джеффом Барреттом в Inmos в начале 1990-х годов. Пересмотренное Справочное руководство с описанием occam 3 было распространено для комментариев сообщества, но этот язык так и не был полностью реализован в компиляторе.
Occam 2.1 представил несколько новых функций в occam 2, в том числе:
- Именованные типы данных (DATA TYPE x IS y)
- Именованные записи
- Упакованные записи
- Ослабление некоторых правил преобразования типов
- Новые операторы (например, BYTESIN)
- Повторный набор каналов и массивы каналов
- Возможность вернуть массив фиксированной длины из функции.
Полный список изменений см. В Приложении P Справочного руководства Inmos occam 2.1 .
Оккам-π
occam-π - это общее название варианта occam, реализованного более поздними версиями Kent Retargetable occam Compiler ( KRoC ). Добавление символа π (пи) к названию occam является намеком на KRoC occam, включая несколько идей, вдохновленных π-исчислением . Он содержит несколько значительных расширений компилятора occam 2.1, например:
- Вложенные протоколы
- Создание рабочего процесса
- Мобильные каналы, данные и процессы
- Рекурсия
- Наследование протокола
- Конструкторы массивов
- Расширенное свидание
Смотрите также
- Язык программирования XC , основанный на occam, но с синтаксисом в стиле C.
- Языки параллельного программирования
- Список языков параллельного и параллельного программирования
использованная литература
дальнейшее чтение
- Архитектуры коммуникационных процессов 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 для оккама и родственных языков.