Процедурные (ИМПЕРАТИВНЫЕ) языки программирования требуют полного описания последовательности шагов (команд), которые нужно предпринять, чтобы решить задачу . К ним относятся СИ, ПАСКАЛЬ, АССЕМБЛЕР.
ПРОЛОГ — язык ДЕКЛАРАТИВНЫЙ. Он базируется на естественных для человека логических принципах. Нужно уметь составить формальное описание задачи, используя понятия объектов различных типов и отношений между ними. Иными словами, нужно описать все ФАКТЫ (ИСТИННЫЕ УТВЕРЖДЕНИЯ) и ПРАВИЛА (позволяющие ВЫВЕСТИ из уже имеющихся истинных утверждений новые), описывающие данную ситуацию. Затем пользователь задает вопрос или, пользуясь терминологией Пролога, задает ЦЕЛЬ.
Далее Пролог пытается ДОКАЗАТЬ заданную цель, то есть вывести ее логическим путем из уже имеющихся фактов и правил. Этот логический вывод осуществляют ВСТРОЕННЫЕ УНИФИКАЦИОННЫЕ ПРОЦЕДУРЫ путем перебора имеющихся утверждений и попыток сопоставить их с доказываемой целью. В Прологе отсутствуют явные управляющие структуры типа IF...THEN...ELSE..., нет детального описания последовательности шагов. Все это — дело внутренних процедур. Иногда Пролог считают не языком программирования, а пользовательской оболочкой, позволяющей формулировать запросы к базе данных, записанной в Пролог — программе.
В связи с этим при использовании Пролога возникают две проблемы:
— эффективность программы (так как осуществляется перебор большого числа следствий из имеющихся правил);
— предсказуемость поведения программы (так как механизм логического вывода не программируется пошагово, а является скрытым внутренним механизмом).
Язык Turbo Prolog фирмы Borland является компромиссом между ПРОЛОГОМ в чистом виде и эффективным компилируемым языком. При грамотном программировании можно добиться большой эффективности выполнения. Особенно хорош Turbo Prolog для создания:
— систем управления динамическими базами данных;
— экспертных систем;
— программ с естественно-языковым интерфейсом.