Оккам (язык программирования) - Occam (programming language)

Оккам
ПарадигмаИмператив, процедурный, одновременный
РазработаноДэвид Мэй
РазработчикInmos
Впервые появился1983; 37 лет назад (1983)
Стабильный выпуск
2.1 (официальный), 2.5 (неофициальный), 3 (не полностью реализован) / 1994; 26 лет назад (1994)
Диалекты
Оккам-π (число Пи)
Под влиянием
Связь последовательных процессов
Под влиянием
Простота, Идти, Python

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

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

Обзор

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

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

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

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

 SEQ x: = x + 1 y: = x * x

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

 ПАР p () q ()

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

 ALT count1 <100 & c1? данные SEQ count1: = count1 + 1 объединены! количество данных2 <100 & c2? данные SEQ count2: = count2 + 1 объединены! статус данных? запросить SEQ! count1 out! count2

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

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

оккам 1

Оккам 1[2] (выпущен в 1983 г.) была предварительной версией языка, заимствованной из Дэвид Мэй работает над EPL и CSP Тони Хора. Это поддерживало только тип данных VAR, который был интегральным типом, соответствующий собственной длине слова целевой архитектуры, и массивы только одного измерения.

Оккам 2

Оккам 2[3] это расширение, произведенное Inmos Ltd в 1987 году, которое добавляет плавающая точка поддержка, функции, многомерные массивы и другие типы данных, такие как различные размеры целых чисел (INT16, INT32) и байтов.

С этой версией occam стал языком, способным выражать полезные программы, тогда как occam 1 больше подходил для изучения алгоритмов и изучения нового языка (однако компилятор occam 1 был написан на occam 1,[4] Таким образом, существует доказательство того, что полезные программы разумного размера могут быть написаны на оккам 1, несмотря на его ограничения).

Оккам 2.1

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

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

  • Именованные типы данных (DATA TYPE x IS y)
  • Именованные записи
  • Упакованные записи
  • Ослабление некоторых правил преобразования типов
  • Новые операторы (например, BYTESIN)
  • Повторный набор каналов и массивы каналов
  • Возможность вернуть массив фиксированной длины из функции.

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

Оккам-π

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

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

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

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

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

внешняя ссылка