stringtranslate.com

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

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

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

Обзор

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

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

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

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

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

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

номинальная стоимость п() д()

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

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

Это позволит прочитать данные из каналов 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, реализованного в более поздних версиях компилятора occam Kent Retargetable ( KRoC ). Добавление символа π (пи) к названию оккама является намеком на оккам KRoC, включая несколько идей, вдохновленных π-исчислением . Он содержит несколько существенных расширений компилятора occam 2.1, например:

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

Рекомендации

  1. ^ ab occam Справочное руководство 2.1 (PDF) . SGS-Thomson Microelectronics Ltd., 12 мая 1995 г.Документ Инмос 72 occ 45 03
  2. ^ Руководство по программированию occam . Прентис-Холл. 1984. ISBN 0-13-629296-8.
  3. ^ Эрикссон-Зенит, Стивен (1988). Справочное руководство occam 2 . Прентис-Холл. ISBN 0-13-629312-3.
  4. ^ Кук, Барри М; Пил, RMA (11 апреля 1999 г.). «Оккам о программируемых пользователем вентильных матрицах». В Куке, Барри М. (ред.). Архитектуры, языки и методы для параллельных систем . 22-я Всемирная техническая встреча группы пользователей Оккама и транспьютеров. Кил, Великобритания: IOS Press. п. 219. ИСБН 90-5199-480-Х. Проверено 28 ноября 2016 г.
  5. ^ Барретт, Джефф; Эрикссон-Зенит, Стивен (31 марта 1992 г.). «Справочное руководство occam 3» (PDF) . Инмос . Проверено 24 марта 2008 г. {{cite journal}}: Требуется цитировать журнал |journal=( помощь )
  6. ^ Барнс, Фред; Уэлч, Питер (14 января 2006 г.). «occam-pi: сочетание лучшего из CSP и пи-исчисления» . Проверено 24 ноября 2006 г.

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

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