Визуальный язык ДРАКОН

Дружелюбный Русский Алгоритмический язык, Который Обеспечивает Наглядность/Надёжность

Инструменты пользователя

Инструменты сайта


drakon-leksika-_polnota_sostava_i_smysla

Дракон-лексика: полнота состава и смысла

Прежде всего обсудим соответствие состава знаков техноязыка некоторым аспектам смысла алгопроцессов и их систем. Исходный состав обсуждался на этой странице. Ряд проблем представления программ был поставлен в своё время в статье А. Гегечкори, которая доступна вп. 1.2.3 библиотеки сайта.

Начнём с взаимодействия процессов. Оператор «Параллельный процесс» (в техноязыке И20; у нас — Д25) имеет смысл запроса на установление т.н. рандеву (потому он здесь и называется иначе). Однако рандеву бывает разное. Возможно симметричное — тогда надо указать, где другой процесс (по ходу своего исполнения) ожидает того же рандеву. Т.е. нужен виоп, парный И20 (Д25) — но такого в исходном техноязыке нет. И можно только предполагать, где алгопроцесс-адресат сообщения ожидает его получения (скажем, по началу использования сообщаемых величин). Что не есть хорошо. Существует и асимметричное рандеву (построенное не на приёме сообщений). Но и оно имеет «ответную часть» в составе адресата — вход вызова процесса (как процедуры, только с некоторыми особенностями; подробнее можно узнать из Ч.I, Гл. 6 книги Кауфмана, см. п. 1.1.4 библиотеки). Средства техноязыка недостаточны и в этом случае.

Далее, ввод и вывод — это частные случаи обмена с окружением исполнителя (внешней средой алгопроцесса). Как известно, процессы (и, если нужно, их контексты) можно также сохранить вне места исполнения — например, на носителях внешней памяти. При алгоритмизации высокого уровня принято представлять это отдельными операторами сохранения и извлечения. На уровне исполнителя-машины устройства внешней памяти обычно неотличимы от устройств ввода/вывода (поэтому у Паронджанова и нет специальных операторов). На высоком уровне общим м.б. то, что значения при сохранении/извлечении обычно (и часто при вводе/выводе) подвергаются т.н. сериализации — преобразованию в одномерный поток кодов (чаще всего бит) перед передачей из пространства исполнения; при этом в поток м.б. дбавлены данные для фиксации структуры значений. При приёме поток вначале десериализуется — преобразуется к структуре значений с использованием данных фиксации.

Наконец, на высоком уровне принято фиксировать начальные и граничные условия для процесса; они выступают как «математизированные комментарии», элементы спецификации. Также для гарантоспособности в сам процесс м.б. включены проверки этих условий — тогда это уже не комментарии, а неотъемлемые части содержания процесса (его маршрутной структуры) на любом уровне (вплоть до машинного кода, если нужно).

Основываясь на сказанном, можно предложить следующие дополнения лексики техноязыка:

Операторы работы с хранилищами понятны из обсуждения.

Взаимодействие процессов доопределено для симметричных рандеву. Аппарат асимметричных (и другие механизмы — т.н. критические секции, взаимные исключения) ждёт своих исследователей и разработчиков языковых средств, адекватных смыслу.

Также отражены специфические случаи взаимодействия, когда процесс инициирует рандеву неявно. Во-первых, это возможно через действия — если есть возможность отслеживать внутреннее состояние исполнителя. Во-вторых, отслеживать можно каналы обмена с окружением — тогда трафик через них становится одновременно сообщениями взаимодействующим процессам. Оба случая встречаются на практике.

Условия (их ещё называют инвариантами процесса) предлагается фиксировать в виде боковика-вопроса. Очевидно, его можно присоединять сбоку (слева) к любой вершине схемы; при этом у некоторых вершин м.б. более одного левого боковика.

drakon-leksika-_polnota_sostava_i_smysla.txt · Последние изменения: 2012/09/15 21:07 — Владислав Жаринов