Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Теория - Prolog и его современные диалекты

Ответить
Настройки темы
Теория - Prolog и его современные диалекты

Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Здравствуйте.
Хотелось бы услышать мнение о языке Prolog.
Читана различная литература, сайты, накоплена (но не прочитана от и до) документация.
Найден современный диалект Mercury.
Вопросы простые, но играют решающие роли:
В чем прелесть языка Prolog?
Какую идею он несет в себе, чтобы его можно было попробовать изучить?
Другими словами, как надо построить свое мышление и рассуждение, чтобы создавать эффективные, красивые и элегантные программы на Prolog'е?
Где та область, где он работает, а другие лишь пытаются работать?

У меня сформировалось о нем некоторое мнение, но хотелось бы его высказать чуть позже, равно как и о предпосылках создания этой темы.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 12:39, 09-10-2012

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата lxa85:
равно как и о предпосылках создания этой темы. »
Может, с этого и начать?

Отправлено: 18:37, 09-10-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Постановили в институте изучение новой дисциплины -- языки инженерии знаний.
Предмет новый, подробных методических материалов нет.
Поиск в гуле привел к следующим результатам:
Пролог, Лисп. Как основные языки описания знаний и их инженерии -- т.е. получение новых знаний.
Проще говоря -- у нас есть некоторый набор знаний (логических условий), к нему надо задать вопрос и получить ответ.
Наиболее часто приводимые примеры -- генеалогическое дерево, задача Эйнштейна, игра "Жизнь".
Про lisp мне было известно, что что работа со списками, применяется в автокаде, да и судя по постам на хабре -- вещь лежащая в основе языков программирования. (Т.е. глубже обычного)
Пролог -- язык логического программирования. Собственно и все.
Т.к. это не объектно-оринетированное программирование, а функциональное, то и хочется понять (схемку али что) что это за зверь?
Т.е. возратясь к названию -- программирование логики. Но логику я могу запрограммировать и на паскале допустим. В чем юмор то?
Часто пролог называют -- уделом университета и университетской шуткой. Я пока склонен согласиться, т.к. я не видел рабочих программ на прологе. (Собственно, да, а много ли чего я не видел?) Если Visual Prolog продают, значит кто то его покупает.
Допустим пролог разрабатывали как язык автоматического доказательства теорем. Современный его диалект, оптимизированный под современную архитектуру -- Mercury. Он несколько оптимизирует код и позволяет получать более быстрые программы.
Не найдя простого и понятного ответа, решил спросить на форуме. Кто работал с этим языком и что в нем такого замечательного?

Я не понимаю что, как и к чему должны привести лекции, что должны узнать и понять студенты после изучения языка Prolog?
В этом плане мне гораздо больше интересен lisp. На нем хоть можно что-то создавать. И он впоследствии более плавно перейдет в дисциплину искусственного интеллекта.

Сумбурно так получилось.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 11:48, 10-10-2012 | #3


Ветеран


Сообщения: 1657
Благодарности: 146

Профиль | Отправить PM | Цитировать


Цитата lxa85:
Т.к. это не объектно-оринетированное программирование, а функциональное, то и хочется понять (схемку али что) что это за зверь? »
Фишка в том, что старичок Лисп годится для любого типа программирования. Вообще. Ну, кроме если в машинных кодах. Надо только заранее все соответствующим образом на нем исходно описать. Хотите объектно-ориентированное программирование - сначала опишите классы, потом программируйте. Пример - объектно-ориентированный язык Smalltalk, из которого уши Лиспа просто торчат. Соответственно, описываете на Лиспе все что нужно для функционального программирования - получите желаемое. Лисп, он может все, и он способен к мимикрии и перерождению в другие языки. Более специализированные. Освоите Лисп - сможете абсолютно все. Я вот не освоил, пока что... Но потенциал осознал, зубы потихоньку точу...

И еще немного, на счет Лиспа. Да, я понял, что на нем можно наворочать очень многое, если при этом правильно прописать используемые основные понятия. Но само это прописывание... настолько муторное! Просто с души воротит. Не знает ли кто языка, где это проще делается?

Отправлено: 12:19, 10-10-2012 | #4


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


XPEHOMETP, вооот. Вот про lisp это все трактуется, говорится и пересказывается.
А как быть с прологом то?

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 13:11, 10-10-2012 | #5


Ветеран


Сообщения: 1657
Благодарности: 146

Профиль | Отправить PM | Цитировать


А я не знаю, как быть с Прологом, он мне как-то до лампочки был, без надобности... Даже не смотрел. То есть смотрел по диагонали, не понял для себя ни малейшей выгоды и значимости. А вот Лисп показался весьма перспективным.

Отправлено: 12:26, 11-10-2012 | #6


Ветеран


Сообщения: 2029
Благодарности: 704

Профиль | Отправить PM | Цитировать


Цитата lxa85:
Т.к. это не объектно-оринетированное программирование, а функциональное, то и хочется понять (схемку али что) что это за зверь? »
Язык функционального программирования, это как раз не Prolog, а Lisp. Prolog - это язык предикатов. Его основное отличие от классических языков программирования состоит в том, что в нем не описывается последовательность действий необходимых для получения результата. Во времена перфокарт любили приводить пример, что в идеале (на практике недостижимом) колоду карт с Prolog-программой можно перетасовать и после этого она должна продолжать работать.
Это было теоретически возможно потому, что область видимости переменных ограничивалась одним предикатом (считайте - одним оператором). Программа на Прологе не содержит вообще никаких частей, описывающих процесс достижения результата. Никаких алгоритмов, никаких функций. Только набор логических утверждений. И логический запрос (goal - цель), ответ на который программа должна дать сама, имея своём распоряжении только набор утверждений из которых и состоит весь текст программы.

Я как-то набросал на Prolog'е программу для игры в крестики-нолики на бесконечной доске (известная игра, чем-то напоминающая японскую "Го") и удивился, что она сразу стала неплохо играть, причем добавление каждого следующего правила (предиката), которым программа должна была руководствоваться рассчитывая очередной ход, существенно улучшало её игру. Правда, одновременно с этим в геометрической прогрессии росло и время на расчет каждого хода...

Понятно, что для написания подобной программы на любом другом языке, включая Lisp, потребовалось бы в несколько раз больше времени (правда и работала бы она на два порядка быстрее).

-------
Господа! Убедительная просьба не обращаться за консультациями в ЛС. Поверьте, создать ветку в соответствующем разделе форума гораздо эффективнее.

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:57, 11-10-2012 | #7


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата XPEHOMETP:
Фишка в том, что старичок Лисп годится для любого типа программирования. Вообще. Ну, кроме если в машинных кодах. Надо только заранее все соответствующим образом на нем исходно описать.

Освоите Лисп - сможете абсолютно все.»
Наверное, именно потому Ленат, «впечатлённый» тем, как его программа работает на LISP'е, был вынужден разработать новый язык программирования. Каждый язык имеет свою, достаточно ограниченную сферу применения. И LISP — не исключение.

Цитата AMDBulldozer:
Понятно, что для написания подобной программы на любом другом языке, включая Lisp, потребовалось бы в несколько раз больше времени (правда и работала бы она на два порядка быстрее). »
Не думаю, что быстрее.

lxa85, отправил письмо в личку.
Это сообщение посчитали полезным следующие участники:

Отправлено: 06:17, 13-10-2012 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Теория - Prolog и его современные диалекты

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Смогу ли я играть в современные игры если поставлю 9600gt? Петька Видеокарты 20 10-01-2011 23:02
[решено] Подтормаживают современные игры nikit-xxx Видеокарты 11 13-10-2009 23:22
Почта - Современные чат-программы на основе IRC Wlad-U Программное обеспечение Windows 0 03-04-2009 14:30
Война без победителей (современные тенденции звукозаписи) Tigr Флейм 0 02-01-2009 20:00
Современные текстовые редакторы LuckyStar Программное обеспечение Windows 7 20-09-2006 06:11




 
Переход