All streams
Search
Write a publication
Pull to refresh
8
0
Send message
Любая программа может зациклиться. Зацикливание в ПРОЛОГе — это для начинающих.
ПРОЛОГ не все стерпит, потому -что большинство переменных задаются в виде паттернов.
Попробуйте полюбить рекурсию. Все символьные объекты неизбежно рекурсивны.
Пора уже понять, что процедурный подход в программировании — временное явление.
Все модные языки — это сдача позиций перед неизбежностью декларативности символьных структур.
Насколько я знаю, у сообщества Java есть реализация Пролога.
SWI Prolog рекламируется как универсальное средство, но сам я с ним не работал.
Из коммерческих есть еще шведский SICStus Prolog.
Я пользуюсь ARITY/Prolog32. У него хорошие средства интеграции с другими средами.
Согласен с Вашей постановкой вопроса.
Об эффективность языка Пролог можно говорить в таких аспектах — скорость программирования, качество программы.
Конечно, следует говорить только о задачах обработки символьной информации.
Раньше говорили так — программа на Прологе пишется в 10 раз быстрее, но сама программа работает медленно. Однако после появления компиляторов для ПРОЛОГа скорость у него вполне сравнима, а во многих случаях бывает и выше.
Думаю, что любой компилятор хорошего качества с любого языка можно на Прологе написать раз в пять быстрее.
Дело не только в том, что в Прологе не надо думать о стеках и проблемах динамической памяти, но и в том. что сама природа списков и рекурсии адекватна предметной области.
Конечно, если надо поисковик писать, микросекунды считать, то нужен специализированный набор процедур.
Вопрос актуальный, буду им заниматься, наверное в третьей части, поскольку вторая часть запланирована под синтаксический анализ.
Почему-то некоторые воспринимают ПРОЛОГ как готовую интеллектуальную систему, а потом обижаются, обнаружив, что не все там готово — надо еще самому разбираться, изучать язык. Как будто есть другие языки с логическим выводом!
ПРОЛОГ — язык специализированный, его надо использовать для обработки символьных структур. Здесь он лучше всех.
Цель данной публикации — показать его удобство и простоту.
А еcли поискать?
SICStus PROLOG — есть для UNIX
Для того и написан этот текст, чтобы любой программист разобрался.
Из бесплатных — великолепный транслятор Arity/Prolog32. Это коммерческая разработка, лучшая в своем классе, но фирма ее не поддерживает, поэтому можно пользоваться ею бесплатно.
Это интересно, можем обсудить. Если хотите, напишите мне на почту.
Посмотрел этот текст — там сплошной ПРОЛОГ. Написано так, будто читатель должен владеть этим языком.
Очевидно, что автор этим языком владеет хорошо.
«The type checker enforces type rules that are specified by means of Prolog clauses. English language text is used to describe the type rules in an informal way, while the Prolog clauses provide a formal specification. „
Это не такая простая штука, чтобы поместиться в библиотеку.
Коммерческие версии ПРОЛОГа имеют прекрасные возможности для интеграции.
Например Arity/Prolog (сейчас бесплатный, поскольку фирма его не поддерживает) компилирует ПРОЛОГ-программу в obj — файл из которого можно сделать EXE, DLL или просто подлинковать. Кроме того, поддерживается встроенный C — прямо в сорсе можно вставлять фрагменты на C.
Хороших реализаций языка ПРОЛОГ очень мало, хотя много любительских.
Java, Python вынуждены встраивать операции со списками как дополнение, а в ПРОЛОГе они в ядре системы.
По моему, если сравнивать:
— программа на ПРОЛОГе в 10 раз понятнее, поскольку все использованные идентификаторы (процедуры) описаны в тексте программы;
— Ваша программа не универсальна, поскольку содержит исходные данные в тексте;
— скорость решения на моем простейшем компьютере — меньше одной сотой секунды.

Наверное, у HASKELL, есть свои преимущества, это вопрос личных предпочтений.
Основная причина недостаточного распространения PROLOG — это язык LISP — поскольку он появился на 20 лет раньше, все основные американские институты и фирмы, где программируют ИИ, используют LISP.
Надо сказать, что в последних версиях наиболее мощной версии LISP Allegro CL (FRANZ inc.) содержится PROLOG как подмножество языка.
franz.com/support/documentation/8.2/doc/prolog.html
Вот это упрощенное понимание языка PROLOG, как готового средства для экспертной системы. Для ЭС нужен естественно-языковый интерфейс и другие средства, которые и надо делать на языке PROLOG.
Prolog — элитный язык, культивируется в основном в крупных организациях, связанных с наукой — IBM, NASA, Ericsson,…

Вот некоторые ссылки:
1) Clarissa, a fully voice-operated procedure browser has been developed by the NASA Intelligent Systems Division.
ti.arc.nasa.gov/tech/cas/user-centered-technologies/clarissa

2) Ericsson Network Resource Manager — www.ericsson.com

3)Axon Idea Processor axon-research.com
Our company (www.intologic.com) mostly uses Prolog.

4)LPA Applications
Environmental Modelling — www.lpa.co.uk/apl_001.htm
Payrolls — www.lpa.co.uk/apl_003htm
Sales Modelling — www.lpa.co.uk/apl_004tm
Management Consultancy — www.lpa.co.uk/apl_006m
Other applications — www.lpa.co.uk/use_app.htm

5)IBM Watson (partially) — en.wikipedia.org/wiki/Watson_%28computer%29

Примеры нетривиальных процедур на PROLOG:
colin.barker.pagesperso-orange.fr/lpa/lpa.htm
Есть такое мнение, что Пролог хорош для прототипирования и не годится для коммерческих разработок. Не могу с этим согласиться.
Пролог просто еще один из языков для работы с символьной информацией и здесь он круче всех.
Пролог в чистом виде не решает всех проблем с интеллектуальными задачами, но он дает основу для их решения. И эта основа прочнее и надежнее, чем у других языков искусственного интеллекта.
Моя цель — показать, что в ПРОЛОГе нет ничего сложного и любой программист может его освоить и эффективно применять в работе.
Насчет Геделя особенно круто. Сказал так сказал.
Про пятое поколение тоже сказано сто раз.
Хотелось бы по существу текста что-нибудь услышать.
Дискуссию считаю завершенной. Все основные вопросы обсуждены, а дополнительные рассуждения можно продолжать бесконечно.

Information

Rating
Does not participate
Registered
Activity