stringtranslate.com

оккам (язык программирования)

occam — это язык программирования , который является параллельным и построен на алгебре процессов коммуникационных последовательных процессов (CSP) [1] и разделяет многие из ее особенностей. Он назван в честь философа Уильяма Оккама, в честь которого названа бритва Оккама .

occam — императивный процедурный язык (такой как Pascal ). Он был разработан Дэвидом Мэем и другими в Inmos (торговая марка INMOS), по рекомендации Тони Хоара , как родной язык программирования для их транспьютерных микропроцессоров , но доступны реализации для других платформ. Наиболее широко известная версия — occam 2; руководство по программированию для него было написано Стивеном Эрикссоном-Зенитом и другими в Inmos .

Обзор

В следующих примерах отступы и форматирование имеют решающее значение для разбора кода: выражения завершаются концом строки, списки выражений должны быть на одном уровне отступа. Эта функция, называемая правилом off-side , также встречается в других языках, таких как Haskell и Python .

Связь между процессами осуществляется через именованные каналы . Один процесс выводит данные в канал через !, а другой вводит данные с помощью ?. Ввод и вывод не могут продолжаться, пока другой конец не будет готов принять или предложить данные. (В случае отсутствия продолжения часто говорят, что процесс блокируется на канале. Однако программа не будет ни вращаться, ни опрашивать; таким образом, такие термины, как wait , hang или yield , также могут передавать поведение; также в контексте того, что он не будет блокировать выполнение других независимых процессов.) Примеры (c — переменная):

клавиатура ? с
экран ! с

SEQвводит список выражений, которые оцениваются последовательно. Это не подразумевается, как в большинстве других языков программирования. Пример:

ПОСЛЕДОВАТЕЛЬНОСТЬ х := х + 1 у := х * х

PARначинает список выражений, которые могут быть оценены одновременно. Пример:

ПАР р() д()

ALTопределяет список охраняемых команд. Охранники представляют собой комбинацию булевого условия и входного выражения, оба необязательные. Каждый охранник, для которого условие истинно и входной канал готов, считается успешным. Для выполнения выбирается одна из успешных альтернатив. Пример:

АЛЬТ count1 < 100 & c1 ? данные ПОСЛЕДОВАТЕЛЬНОСТЬ количество1 := количество1 + 1 объединены ! данные count2 < 100 & c2 ? данные ПОСЛЕДОВАТЕЛЬНОСТЬ количество2 := количество2 + 1 объединены ! данные статус ? запрос ПОСЛЕДОВАТЕЛЬНОСТЬ из ! количество1 из ! count2

Это позволит считать данные из каналов c1 или c2 (в зависимости от того, какой из них готов) и передать их в объединенный канал. Если countN достигает 100, чтение из соответствующего канала будет отключено. Запрос на канале состояния отвечает выводом счетчиков в out.

Изменения языка

1983 "Оккам" от INMOS Limited

оккам 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] поэтому существует доказательство того, что полезные программы разумного размера могут быть написаны на occam 1, несмотря на его ограничения).

оккам 2.1

occam 2.1 [1] был последним из серии разработок языка occam, представленных Inmos. Определенный в 1994 году, он находился под влиянием более раннего предложения языка occam 3 (также называемого «occam91» на ранних этапах разработки), созданного Джеффом Барреттом в Inmos в начале 1990-х годов. Пересмотренное справочное руководство, описывающее occam 3, было распространено для комментариев сообщества, [5] но язык так и не был полностью реализован в компиляторе.

occam 2.1 представил несколько новых функций для occam 2, в том числе:

Полный список изменений см. в Приложении P к Справочному руководству Inmos occam 2.1.

Оккам-π

occam-π [6] — общее название для варианта occam, реализованного в более поздних версиях компилятора Kent Retargetable occam ( KRoC ). Добавление символа π (пи) к названию occam — это намек на KRoC occam, включающий несколько идей, вдохновленных π-исчислением . Он содержит несколько существенных расширений компилятора occam 2.1, например:

Смотрите также

Ссылки

  1. ^ ab occam 2.1 Справочное руководство (PDF) . SGS-Thomson Microelectronics Ltd. 1995-05-12.Документ Inmos 72 occ 45 03
  2. ^ Руководство по программированию Оккама . Prentice-Hall. 1984. ISBN 0-13-629296-8.
  3. ^ Ericsson-Zenith, Steven (1988). Справочное руководство occam 2. Prentice-Hall. ISBN 0-13-629312-3.
  4. ^ Кук, Барри М.; Пил, РМА (1999-04-11). "Оккам на программируемых вентильных матрицах". В Куке, Барри М. (ред.). Архитектуры, языки и методы для параллельных систем . 22-я всемирная техническая встреча группы пользователей Occam и Transputer. Кил, Соединенное Королевство: IOS Press. стр. 219. ISBN 90-5199-480-X. Получено 28.11.2016 .
  5. ^ Барретт, Джефф; Эрикссон-Зенит, Стивен (1992-03-31). "Справочное руководство по occam 3" (PDF) . Inmos . Получено 24-03-2008 . {{cite journal}}: Цитировать журнал требует |journal=( помощь )
  6. ^ Барнс, Фред; Уэлч, Питер (14.01.2006). "occam-pi: смешение лучшего из CSP и исчисления числа Пи" . Получено 24.11.2006 .

Дальнейшее чтение

Внешние ссылки