Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
knigi_docv / Паронджанов Как улучшить работу ума.doc
Скачиваний:
101
Добавлен:
21.03.2015
Размер:
15.07 Mб
Скачать

Шампур-метод и докуазательство правильности программ

Согласно Р. Андерсону, “целью многих исследований в области доказательства правильности программ является... механизация таких доказательств” [10]. Д. Грис указывает, что “доказательство должно опережать построение программы” [11]. Объединив оба требования, получим, что автоматическое доказательство правильности должно опережать построение программы. Нетрудно убедиться, что шампур-метод обеспечивает частичное выполнение этого требования. В самом деле, в начале главы было показано, что любая правильно построенная шампур-схема является строго доказанной теоремой. В алгоритмах ДРАКОН-редактора закодировано исчисление икон, поэтому любая шампур-схема, построенная с его помощью, является истинной, т. е. правильно построенной. Это означает, чтоДРАКОН-редактор осуществляет 100%-е автоматическое доказательство правильности шампур-схем, гарантируя принципиальную невозможность ошибок визуального синтаксиса. Поскольку шампур-схема является частью шампур-программы, сказанное равносильно доказательству частичной правильности шампур-программы.

В начале главы мы задали смешной вопрос: если дракон-схемы — это теоремы, кто должен их доказывать? Ответ прост. Их никто не должен доказывать, так как все они раз и навсегда доказаны благодаря тому, что работаДРАКОН-редактора построена как реализация исчисления икон.

А теперь добавим ложку дегтя в бочку меда. К сожалению, данный метод позволяет доказать правильность шампур-схемы и только. Это составляет лишь малую часть от общего объема работы, которую нужно выполнить, чтобы доказать правильность программы на все 100%. Правда, есть небольшое утешение: частичное доказательство правильности программы с помощью ДРАКОН-редактора осуществляется без какого-либо участия человека и достигается совершенно бесплатно, так как дополнительные затраты труда, времени и ресурсов не требуются. А дареному коню в зубы не смотрят.

Возможна ли теория визуального программирования?

Хотя видеопрограммирование — сравнительно молодое направление, в этой области уже имеется значительное число интересных прикладных разработок. Однако теоретическое визуальное программирование только зарождается. В доступной литературе автору удалось обнаружить всего несколько строк, которые можно в какой-то степени трактовать как программу будущих исследований в области теории видеопрограммирования: “Для визуального программирования необходимо провести строгие научные обоснования, математические определения и модели — большинство разработок в этой области носит пока эмпирический характер. Перспективным может быть применение при графическом интерфейсе техники искусственного интеллекта, которая обычно используется для описания прикладной области. Система представления знаний может включать набор визуальных примитивов, их символические описания и правила вывода заключений” [12].

Как, вероятно, заметил читатель, в настоящей работе, решая сходную проблему (проблему вывода заключений путем выполнения формальных операций над визуальными примитивами, в качестве которых использовались иконы шампур-схем), мы пошли несколько иным путем. Отличие заключается в следующем. Авторы цитированной работы говорят о “символических описаниях” визуальных примитивов, подразумевая текстовые правила вывода заключений, принятые в традиционной текстовой математической логике. Однако еще А. Ершов при построении исчисления равносильных преобразований схем Янова предпринял первую попытку отойти от “чисто текстовой” математической логики, используя в формулах правил вывода не только символические описания, но и графические изображения [9, 13]. Вместе с тем метод Ершова из-за дефектов визуального синтаксиса нельзя считать полностью формальным.

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

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