цитата из педивикии: Пролог критикуется в первую очередь за свою недостаточную гибкость, отчего решения на обычных языках программирования (типа C++, Java) в сочетании с базами данных оказываются более технологичными, чем аналогичные решения на Прологе. Негибкость заключается в трудности изучения языка, более высоких требований к квалификации программиста на Прологе, трудности отладки программы, неразвитости технологии программирования, плохой контролируемости промежуточных результатов.
>tcc (Tiny C Compiler) может работать как интерпретатор.
Внезапно так! Даже не подозревал о таком. Но всеже какноническим решением для С является компиляция в машинный код, а какое решение является стандартным для пролога?
SWI-Prolog интерпретируемый; в современных реалиях пролог как правило реализуют как встраиваемый язык, потому интерпретируемым он является практически всегда. а вот мохнатый Turbo Prolog компилировал в машинные коды, но у него и язык немного свой был
> Чего то педивикия не дала ответа на вопрос - он компилируется в машинные коды или интерпретируемый?
Были псевдо-прологи, которые компилировались (кажется TurboProlog).
Настоящий пролог интерпретируется, потому что каждый раз правило по шаблону сопоставляется с правилами базы данных. Если бы все компилировалось, то пришлось бы при добавлении нового правила перекомпилировать все правила. Так как добавление/удаление правил используется часто, то получилось бы, что пролог постоянно занимался бы компиляцией себя.