Prolog и его современные диалекты
Здравствуйте.
Хотелось бы услышать мнение о языке Prolog. Читана различная литература, сайты, накоплена (но не прочитана от и до) документация. Найден современный диалект Mercury. Вопросы простые, но играют решающие роли: В чем прелесть языка Prolog? Какую идею он несет в себе, чтобы его можно было попробовать изучить? Другими словами, как надо построить свое мышление и рассуждение, чтобы создавать эффективные, красивые и элегантные программы на Prolog'е? Где та область, где он работает, а другие лишь пытаются работать? У меня сформировалось о нем некоторое мнение, но хотелось бы его высказать чуть позже, равно как и о предпосылках создания этой темы. |
Цитата:
|
Постановили в институте изучение новой дисциплины -- языки инженерии знаний.
Предмет новый, подробных методических материалов нет. Поиск в гуле привел к следующим результатам: Пролог, Лисп. Как основные языки описания знаний и их инженерии -- т.е. получение новых знаний. Проще говоря -- у нас есть некоторый набор знаний (логических условий), к нему надо задать вопрос и получить ответ. Наиболее часто приводимые примеры -- генеалогическое дерево, задача Эйнштейна, игра "Жизнь". Про lisp мне было известно, что что работа со списками, применяется в автокаде, да и судя по постам на хабре -- вещь лежащая в основе языков программирования. (Т.е. глубже обычного) Пролог -- язык логического программирования. Собственно и все. Т.к. это не объектно-оринетированное программирование, а функциональное, то и хочется понять (схемку али что) что это за зверь? Т.е. возратясь к названию -- программирование логики. Но логику я могу запрограммировать и на паскале допустим. В чем юмор то? Часто пролог называют -- уделом университета и университетской шуткой. Я пока склонен согласиться, т.к. я не видел рабочих программ на прологе. (Собственно, да, а много ли чего я не видел?) Если Visual Prolog продают, значит кто то его покупает. Допустим пролог разрабатывали как язык автоматического доказательства теорем. Современный его диалект, оптимизированный под современную архитектуру -- Mercury. Он несколько оптимизирует код и позволяет получать более быстрые программы. Не найдя простого и понятного ответа, решил спросить на форуме. Кто работал с этим языком и что в нем такого замечательного? Я не понимаю что, как и к чему должны привести лекции, что должны узнать и понять студенты после изучения языка Prolog? В этом плане мне гораздо больше интересен lisp. На нем хоть можно что-то создавать. И он впоследствии более плавно перейдет в дисциплину искусственного интеллекта. Сумбурно так получилось. |
Цитата:
И еще немного, на счет Лиспа. Да, я понял, что на нем можно наворочать очень многое, если при этом правильно прописать используемые основные понятия. Но само это прописывание... настолько муторное! Просто с души воротит. Не знает ли кто языка, где это проще делается? |
XPEHOMETP, вооот. Вот про lisp это все трактуется, говорится и пересказывается.
А как быть с прологом то? :) |
А я не знаю, как быть с Прологом, он мне как-то до лампочки был, без надобности... Даже не смотрел. То есть смотрел по диагонали, не понял для себя ни малейшей выгоды и значимости. А вот Лисп показался весьма перспективным.
|
Цитата:
Это было теоретически возможно потому, что область видимости переменных ограничивалась одним предикатом (считайте - одним оператором). Программа на Прологе не содержит вообще никаких частей, описывающих процесс достижения результата. Никаких алгоритмов, никаких функций. Только набор логических утверждений. И логический запрос (goal - цель), ответ на который программа должна дать сама, имея своём распоряжении только набор утверждений из которых и состоит весь текст программы. Я как-то набросал на Prolog'е программу для игры в крестики-нолики на бесконечной доске (известная игра, чем-то напоминающая японскую "Го") и удивился, что она сразу стала неплохо играть, причем добавление каждого следующего правила (предиката), которым программа должна была руководствоваться рассчитывая очередной ход, существенно улучшало её игру. Правда, одновременно с этим в геометрической прогрессии росло и время на расчет каждого хода... Понятно, что для написания подобной программы на любом другом языке, включая Lisp, потребовалось бы в несколько раз больше времени (правда и работала бы она на два порядка быстрее). |
Цитата:
Цитата:
lxa85, отправил письмо в личку. |
Время: 19:15. |
Время: 19:15.
© OSzone.net 2001-