764
ГЛАВА 13. СЕНТЕНЦИАЛЬНЫЕ МЕТОДЫ
ние, но к нему придется вернуться в будущем на другой технической и, ви-
димо, на гораздо более концептуально выверенной программистской основе.
Тем более это неизбежно, потому что концепция унификации и возвра-
тов после неудач исключительно хорошо подходит для выражения ∨-парал-
лелизма (см. Приложение). Более того, уже имеются системы (в частности,
Muse
), реализующие этот вариант параллелизма в языке
PROLOG
.
Таким образом, две ветви сентенциального программирования ориенти-
рованы даже на разные классы параллельных вычислений. По аналогии мож-
но сделать вывод о том, что и для других стилей должны были быть другие
реализации, принципиально отличные от общепринятых и имеющие другой
потенциал развития, если бы не сработал закон экологической ниши. Авто-
ры уверены, что, в частности, для структурного программирования варианты
программ, соответствующие параллелизму типа потока данных, но столь же
выразительно и эффективно исполняемые и на последовательных системах,
требуют другого варианта стиля программирования и другой методологии
с самого начала.
Алгол 68
сделал первый шаг в этом направлении, а затем
движение полностью прекратилось.
Развитию языка
PROLOG
мешает прежде всего слишком большая привяз-
ка к конкретной модели вычислений, которая была зафиксирована слишком
рано, в погоне за мнимой эффективностью. Фатально совершенно извращен-
ное понимание его места и роли. Значительную лепту вносит сюда монопо-
лизированный им и полностью извращающий суть дела термин ‘Логическое
прогораммирование’.
PROLOG
великолепная заготовка для языка моделиро-
вания идей.
Рассмотрим, что ему мешает в реальности стать таким языком. Как мы
уже неоднократно видели, главное препятствие — лишние возможности. В
первую очередь, это эклектичные добавки операционных средств, которые
провоцируют программиста к операционному мышлению и хакерскому сти-
лю. Так, в задаче о лабиринте, было бы естественно не зацикливание ис-
полнения, когда не предусмотрены ограничивающие условия, заставляющие
программу продвигаться вперед, а указание того, что в процессе выполнения
не хватает условий, что возможны такие-то варианты ограничений, делаю-
щие программу корректной.
Эклектичность
PROLOG
’а обусловлена двумя обстоятельствами. Прежде
всего, это установка на то, что логика Хорна достаточна для специфициро-
вания вычислений, поскольку, как было доказано, она эквивалентна маши-
не Тьюринга. С этим можно было бы согласиться, если бы решения реаль-
ных задач, которые апеллируют к базам данных-фактов и должны решать-