48
средства для более эффективного решения задач. Одним из таких
программных средств является язык Occam.
Язык программирования Occam — это процедурный язык
параллельного программирования высокого уровня, разработанный
группой учёных из Оксфорда в рамках работ по созданию
транспьютеров.
В основе языка лежит так называемая CSP-концепция (концепция
взаимодействующих последовательных процессов), разработанная
Ч.Хоаром. В сущности, CSP — это
формализм для описания
соответствующей вычислительной модели, достаточно
выразительный, чтобы на нём можно было записывать и доказывать
теоремы, и достаточно мощный и однозначный, чтобы являться
языком программирования.
Базовые концепции языка, в частности такое свойство, как
концепция выполнения параллельных процессов, которые не
разделяют общую память и могут обмениваться информацией только с
помощью каналов
связи, потенциально позволяют получать продукт
высокой целостности, так как при этом поддерживается определенная
форма ограничения распространения ошибок.
Развитие языка Occam идет в сторону добавления новых типов
данных, высокоуровневых понятий и средств, облегчающих
программирование. При этом философия языка не пересматривается,
что свидетельствует об ее изначальной удачности. Реализации Occam
существуют для разных, в том
числе нетранспьютерных архитектур.
Таким образом, он может использоваться и для создания программ для
обычных ПК. Спектр его применения чрезвычайно широк: от
скринсейверов и программ построения фракталов до серверов
многопользовательских компьютерных игр, хотя, разумеется, наиболее
оправдано использование языка Occam для создания параллельных
программ. Известны также библиотеки, реализующие примитивы
базовой для Occam концепции CSP, что позволяет
программировать в
стиле Occam на других языках.
Постановка задачи
Несмотря на понятность концепции языка и синтаксис, изначально
предполагающий высокую читабельность исходных кодов, некоторую
сложность может вызывать структура процессов, их порядок
возникновения и выполнения, что в той или иной степени характерно
для всех языков параллельного программирования. На практике