Прототипы .
Пролог динамичен и существует уже 50 лет. Компилятор либерален, синтаксис минималистичен, а «делать вещи» легко, весело и эффективно. SWI-Prolog имеет встроенный трассировщик (отладчик!) и даже графический трассировщик . Вы можете изменить код на лету, используя make/0
, вы можете динамически загружать модули, добавлять несколько строк кода, не выходя из интерпретатора, или редактировать файл, который вы сейчас запускаете на лету, с помощью edit(1)
. Как вы думаете, вы обнаружили проблему с предикатом foobar/2
?
?- edit(foobar).
И как только вы выйдете из редактора, эта вещь будет перекомпилирована. Конечно, Eclipse делает то же самое для Java, но Java не является языком прототипов.
Помимо чистого прототипирования, Prolog невероятно хорошо подходит для преобразования части логики в код . Таким образом, автоматические пруверы и тому подобное можно легко написать на прологе.
Первый интерпретатор Erlang был написан на Прологе - и по какой-то причине, так как Пролог очень хорошо подходит для анализа и кодирования логики, которую вы найдете в деревьях разбора . На самом деле, Пролог поставляется со встроенным парсером! Нет, не библиотека, это в синтаксисе, а именно DCG s.
Пролог часто используется в НЛП, особенно в синтаксисе и вычислительной семантике .
Но Пролог недооценивается и недооценивается. К сожалению, это похоже на академическое или «непригодное для любых реальных целей» клеймо. Но его можно очень хорошо использовать во многих реальных приложениях, связанных с фактами и вычислением отношений между фактами. Он не очень хорошо подходит для сокращения чисел, но CS - это не только сокращение чисел.