Сильные и слабые стороны подхода к программе с позиций потока данных

Одним из преимуществ взгляда на программу с точки зрения потока данных является то, что программист вынужден постоянно обращать внимание на правильность и полноту ответов, вырабатываемых программой. При реляционном подходе существует возможность написания такой программы, которая представляется точным описанием структуры предметной области, но не генерирует должного множества ответов. Примером такой программы служит программа "тснр_путешествовать1" из разд. 4. 1. Если подходить с позиций потока данных, то эта программа является совершенно неудачной.

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

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

4.3. Бихевиористический подход Приведенные ранее примеры, в которых проявился бихевиористический подход

Программист, пишущий программу с той целью, чтобы воспользоваться побочными эффектами ее поведения, и не учитывающий реляционные факторы или структуру множества ответов, реализует бихевиористический (или поведенческий) подход к программированию. Примером программы, написанной в соответствии с бихевиористическим подходом, может служить программа "место" из разд. 3. 7. Когда эта программа не может найти место расположения какого-либо объекта по базе данных "адрес", она не просто завершается неудачно, а просит пользователя сообщить адрес этого объекта. Другими программами из гл. 3, написанными в соответствии с бихевиористическим подходом, являются процедура "изменить_терминал" (см. разд. 3. 7) и составной запрос о языках (см. разд. 3. 7).

Ограничение сферы действия эффектов поведения

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

Программы "место", "изменить терминал" (см. разд. 3. 7) и другие подобные им программы являются в этом отношении плохими примерами. Эти процедуры ориентированы на решение конкретных задач, но их работа зависит от предикатов с побочными эффектами поведения.

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