Jump to content

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

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

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

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

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

Связь между процессами осуществляется через именованные каналы . Один процесс выводит данные в канал через ! в то время как другой вводит данные с помощью ?. Ввод и вывод не могут продолжаться до тех пор, пока другой конец не будет готов принять или предложить данные. (В невыполненном случае часто говорят, что процесс блокируется на канале. Однако программа не будет ни вращаться, ни опрашивать; таким образом, такие термины, как wait , Hang или Give, также могут передавать поведение; также в контексте того, что это не будет заблокировать запуск других независимых процессов.) Примеры (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.

Языковые версии

[ редактировать ]
1983 "оккам" от INMOS Limited.

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

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

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

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

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

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

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

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

См. также

[ редактировать ]
  1. ^ Перейти обратно: а б Справочное руководство occam 2.1 (PDF) . SGS-Thomson Microelectronics Ltd., 12 мая 1995 г. Документ Инмос 72 occ 45 03
  2. ^ Оккам Руководство по программированию . Прентис-Холл. 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 г.

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

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 49d18654cf336240850bb6816ced66df__1722754320
URL1:https://arc.ask3.ru/arc/aa/49/df/49d18654cf336240850bb6816ced66df.html
Заголовок, (Title) документа по адресу, URL1:
occam (programming language) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)