Глава 4

ПОДХОДЫ К ПРОГРАММИРОВАНИЮ НА ЯЗЫКЕ ПРОЛОГ

Введение

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

Три точки зрения на Пролог-программу

Вообще говоря, возможны три точки зрения программиста на Пролог-программу. Это, во-первых, реляционный подход, при котором программа рассматривается как множество взаимоопределенных, возможно, очень сложных, отношений между термами. Во-вторых, существует подход к программе с позиций потока данных. При этом подходе каждая процедура связывает друг с другом два или более входных/выходных потока. Здесь множество ответов, которое вырабатывается в соответствии с внутренней структурой программы с течением времени в результате выполнения действий, инициированных запросом, можно рассматривать как выходной поток данных. (Слово "поток" здесь используется для нестрогого определения последовательности элементов.) В-третьих, это — "поведенческий'" (или бихевиористический) подход, согласно которому программа существует лишь для того, чтобы реализовывать множество сверхлогичных поведенческих актов, т. е. для выполнения ввода, для выдачи сообщений и т. д. Эти поведенческие акты также вырабатываются с течением времени в соответствии с внутренней структурой программы в качестве ответа на запрос.

Реляционный подход

Выбор подхода, принимаемого при разработке конкретной компоненты программы, будет зависеть от того, какой аспект этой компоненты нашел отражение в ее спецификации (см. табл. 4. 1). Реляционный подход пригоден в том случае, когда хорошо известна структура предметной области. Процесс программирования при этом сводится к аксиоматическому определению каждого отношения (см. разд. 0. 9 и 6. 1). Входной и выходной потоки, а также поведение программы являются результатами действия запросов к отношению. Если отношение реализовано корректно, то будут правильными также входной и выходной потоки и поведенческие акты программы.

Таблица 4. 1

Род спецификации и требуемый вид программирования

Что известно

Вид программирования

Структура системы,

Выходной поток данных

Поведение программы

известна

?

?

Аксиоматическое определение отношений

неизвестна

известен

?

Создание структуры программы, обеспечивающей выдачу нужного потока данных

неизвестна

?

известно

Создание структуры программы, обеспечивающей заданное поведение

Подход к программе с позиций потока данных

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

Поведенческий подход к программе

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

Сосуществование всех трех подходов

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

Соседние файлы в папке Гл.0,1,2,3,4,5,Предисловие