MrD писал(а):
во-первых, выразительные возможности языков императивных, функциональных и логических эквивалентны. по-моему, существует строгое доказательство этого факта. во всяком случае на прологе можно написать интерпретатор лиспа, или смоделировать управляющую конструкцию любого языка.
Тогда покажите, как реализовать функционалы Лиспа. Конечно выразительные возможности одинаковы. Но выглядеть это будет очень коряво.
MrD писал(а):
во-вторых, термин "интерпретатор пролога" - не совсем корректен, и в этом причина особого положения логического программирования в ряду других парадигм.
интерпретатор, выполняя программу на лиспе (или на бейсике), анализирует текущий оператор и выполняет его, изменяя либо данные, либо ход выполнения программы. описать формально такой подход к выполнению программы очень сложно. как правило для императивных языков формально описан только сиснтаксис, функциональность операторов описывается с применением обычного языка человеческого общения. для языков ФП функциональность описана строго, с использованием аппарата лямбда-счисления, но практическая реализация строится по тем же принципам, что и для императивных языков.
Вот здесь я определенно ничего не понял. Сами утверждаете, что выразительные способности одинаковы, значит лямбда-исчисление подходит для описания всех типов парадигм программирования. В действительности так и есть - просто лямбда-исчисление - одно из возможных определений к понятию алгоритм, а функциональные языки - его практическая реализация.
MrD писал(а):
в отличие от функциональных и императивных языков, выполнение программы на прологе состоит в многократном применении метода резолюции, и, в итоге, к вычислению некоего логического утверждения. таким образом описание исполняющей системы для пролога составляет одна несложная логическая функция, механизм унификации и стратегия поиска. для логического программирования можно формально описать и синтаксис, и функциональность, и реализацию. этот факт открывает как минимум две перспективы - решение проблемы доказательства правильности программ и принципиальную возможность построения процессора не фон-неймановской архитектуры.
Рекурсивное программирование, как основной инструмент программирования в Лисп и Пролог, не имеют непосредственного отношения к возможности создания ЭВМ не фон-неймановской архитектуры.
Вообще, Пролог, в отличие, например, от Лиспа заточен под совсем конкретные задачи логического вывода и выразительные возможности программирования других задач весьма ограничены. В том же Common Lisp есть, например, конструкции императивных языков, в Прологе их нужно реализовывать через самого себя.
Добавлено
Кстати, для систем компьютерной алгебры функциональные языки имеют большое значение
http://lib.custis.ru/index.php/Maxima
вроде также основное ядро популярной системы Mathematica тоже написано на функциональном языке.