
334
ГЛАВА 11. ЕСТЕСТВЕННЫЙ ВЫВОД
столько вверх по иерархии понятий, чтобы не потерять ничего из пре-
имуществ унификации для первопорядковых выражений
15
.
Другие шаги Пролога были закономерны и столь же закономерно
вели в тупик. Программа не может существовать без ввода-вывода и
программистам плохо без стандартных функций. Поэтому в Пролог бы-
ли введены непосредственно интерпретируемые предикаты и непосред-
ственно вычисляемые функции. Так, например, для предиката
Input(x),
Пролог-программа не ищет унификации, а запрашивает значение x у че-
ловека. Встретив функцию sin(t), программа обходится с sin как с фор-
мальным символом функции до тех пор, пока не определится значение t,
после чего просто вычисляет его. В Пролог было введено Прологовское
отрицание. −P считается успешно унифицированным, если выражение
P ни с чем не унифицируется.
Словом, в Пролог были введены плохо сочетавшиеся с ним возмож-
ности,и не только русские создают сами себе трудности, а потом успеш-
но их преодолевают. В программировании и во многих науках это —
почти что стандартный метод действий.
Часто плохо предсказуемый результат взаимодействия логической
структуры почти что вывода и непосредственно исполняемых предика-
тов и функций приводит к тому, что Пролог хорош лишь для небольших
программ, а сложные Пролог-программы отлаживать труднее, чем соот-
ветствующие программы, написанные в хорошем объектно-ориентиро-
ванном стиле
16
. Как говорят, здесь имеется достаточно грубое концеп-
туальное противоречие (формально непротиворечивые понятия сильно
мешают друг другу).
Исходя из нашего опыта, есть смысл использовать Пролог для кус-
ков программ, обладающих исключительно сложной логикой при яв-
ном задании вариантов. Все вычислительные части программ при этом
стоит писать на других языках и иметь либо Пролог-программу, вызы-
вающую вычислительные модули, либо (скажем) Паскаль-программу с
внешней Пролог-подпрограммой.
15
Это — удачный пример обобщения без потерь. Заметим, что в литературе о Прологе
данное преимущество упоминается вскользь и как-то стыдливо, что, видимо, связано
с тенденцией рекламировать каждый метод как универсальный. А здесь пришлось бы
подчеркнуть его принципиальные ограничения.
16
Эта оценка принадлежит не только автору, но в том или ином виде повторяется во
всех серьезных работах по технологии и методологии программирования при рассмо-
трении выгод и недостатков применения Пролога.