Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Prolog
Перезагрузить страницу Исследуем язык программирования Mercury
Ответ
 
Опции темы Опции просмотра
  (#46 (permalink)) Старый
xonix xonix вне форума
Member
 
Сообщений: 429
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.03.2007
По умолчанию 05.07.2010, 00:21

Цитата:
Ломающим копья по поводу набора парадигм Языка логического программирования: ни унификация, ни бэктрекинг, ни внутрення БД ни коим образом не являются "лакмусовыми бумажками" Пролога. Это просто вкусности. Поэтому предлагаю не ломать копия по этому поводу (хотя ради повышения рейтинга форума можно и эту тему помусолить).
Хм.. сразу вопрос.. Какие концепции (парадигмы) тогда, по-Вашему, являются обязательными составляющими пролога? :upset: :drink:
Ответить с цитированием
  (#47 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,956
Сказал(а) спасибо: 2
Поблагодарили 303 раз(а) в 303 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 05.07.2010, 15:43

Цитата:
Originally posted by xonix
[b]Какие концепции (парадигмы) тогда, по-Вашему, являются обязательными составляющими пролога?
Предикаты.
Ответить с цитированием
  (#48 (permalink)) Старый
Alison Alison вне форума
Member
 
Сообщений: 4,781
Сказал(а) спасибо: 0
Поблагодарили 119 раз(а) в 116 сообщениях
Регистрация: 17.11.2004
По умолчанию 05.07.2010, 16:58

Это лишь необходимое условие. Но не достаточное.
Ответить с цитированием
Ads
  (#49 (permalink)) Старый
xonix xonix вне форума
Member
 
Сообщений: 429
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.03.2007
По умолчанию 05.07.2010, 18:12

Цитата:
Предикаты.
Ну позвольте, ведь если выкинуть унификацию и бэктрекинг, то предикаты будут не более чем функции в других языках программирования, разве нет?
Ответить с цитированием
  (#50 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,956
Сказал(а) спасибо: 2
Поблагодарили 303 раз(а) в 303 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 05.07.2010, 23:11

Цитата:
Ну позвольте, ведь если выкинуть унификацию и бэктрекинг, то предикаты будут не более чем функции в других языках программирования, разве нет?
Не функции, а аналог процедур, при этом, в отличие от последних предикаты могут быть либо истинны, либо ложны как минимум. А если использовать троичную логику истинности и более, то предикаты могут иметь много разных значений в области истинности. Если один из дизъюнктов цели истинен, то конец вычислений, если ложен, то пробуем доказать второй дизъюнкт и т.д. но не на откате, а вычисляем заново, с адреса вызова дизъюнкта.
Ответить с цитированием
Ads.
  (#51 (permalink)) Старый
xonix xonix вне форума
Member
 
Сообщений: 429
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.03.2007
По умолчанию 05.07.2010, 23:31

Цитата:
Не функции, а аналог процедур, при этом, в отличие от последних предикаты могут быть либо истинны, либо ложны как минимум. А если использовать троичную логику истинности и более, то предикаты могут иметь много разных значений в области истинности. Если один из дизъюнктов цели истинен, то конец вычислений, если ложен, то пробуем доказать второй дизъюнкт и т.д. но не на откате, а вычисляем заново, с адреса вызова дизъюнкта.
ок, т.е. PHP - полноценный пролог??? Breaking news!!!</span> :mrgreen: :mrgreen: :mrgreen:
<div class=\'codetop\'>Код PHP</div><div class=\'codemain\'><?php

function pred0(&) {
return pred1() or pred2() or pred3();
}

function pred1(&) {
= '111';
return false;
}
function pred2(&) {
= '222';
return true;
}
function pred3(&) {
= '333';
return true;
}

pred0();
echo ; <span style=\'color:green\'>// 222


?>[/code]

Занятно... :roll: :roll:
Ответить с цитированием
  (#52 (permalink)) Старый
CheshireDog CheshireDog вне форума
Member
 
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 22.06.2010
По умолчанию 06.07.2010, 07:10

Цитата:
Не функции, а аналог процедур, при этом, в отличие от последних предикаты могут быть либо истинны, либо ложны как минимум. А если использовать троичную логику истинности и более, то предикаты могут иметь много разных значений в области истинности. Если один из дизъюнктов цели истинен, то конец вычислений, если ложен, то пробуем доказать второй дизъюнкт и т.д. но не на откате, а вычисляем заново, с адреса вызова дизъюнкта.
не нужно мистику наводить... не морочьте людям голову))
_по определению_ предикат это функция имеющая булевское/логическое значение.
только и всего.
а уж как на этом построено исчисление выжимающее из связей этих функций
нечто полезное - тут возможны варианты. и не нужно смешивать в одну кучу
логику(исчисление) вообще и один частный ущербный механизм резолюции
который похоже уже составляет для вас весь мир... докатились до того
что вы уже рефлекторно мыслите с бэктрекингом))
А ведь Прологи и на других принципах могут быть построены.
конструктивный механизм вывода например. поиск в ширину.
Ответить с цитированием
  (#53 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,956
Сказал(а) спасибо: 2
Поблагодарили 303 раз(а) в 303 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 06.07.2010, 23:07

Цитата:
Originally posted by xonix+-->
Цитата:
ок, т.е. PHP - полноценный пролог???
Да. Ибо вычисления управляются логикой. Только в вызове цели надо проверить то, что pred0 истинен и только тогда выводить значение переменной. Также в программе надо для каждого предиката описать те варианты, когда он не только истинен, но и ложен, ибо вызов предикатов может содержать отрицания.
<!--QuoteBegin-CheshireDog

[b]а уж как на этом построено исчисление выжимающее из связей этих функций
нечто полезное - тут возможны варианты.
Именно это я и имел в виду сказать
Ни бэктрекинг, ни унификация не являются обязательными для Пролога. И привёл пример примитивного языка, основанного на записи цели в виде дизъюнкции конъюнкций предикатов. Можно привести другие примеры. Можно даже вспомнить о Парлоге, у которого механизм параллельного логического вывода встроен в язык. Или тот же поиск вширь вместо вглубь.
Но неизменной основой Пролога является записть программы в виде логических выражений предикатов. При этом машина вывода может меняться и набор вкусностей может быть каким угодно.
Ответить с цитированием
  (#54 (permalink)) Старый
Alison Alison вне форума
Member
 
Сообщений: 4,781
Сказал(а) спасибо: 0
Поблагодарили 119 раз(а) в 116 сообщениях
Регистрация: 17.11.2004
По умолчанию 07.07.2010, 00:04

Цитата:
<div class='quotetop'>Цитата
Цитата:
ок, т.е. PHP - полноценный пролог???
Да. Ибо вычисления управляются логикой.[/quote]
Ну, приехали.
Ответить с цитированием
  (#55 (permalink)) Старый
AD AD вне форума
Member
 
Сообщений: 575
Сказал(а) спасибо: 7
Поблагодарили 3 раз(а) в 3 сообщениях
Регистрация: 15.07.2009
По умолчанию 07.07.2010, 01:02

Цитата:
<div class='quotetop'>Цитата(xonix)
Цитата:
ок, т.е. PHP - полноценный пролог???
Да. Ибо вычисления управляются логикой. Только в вызове цели надо проверить то, что pred0 истинен и только тогда выводить значение переменной.
[/quote]
Винитарх, xonix, если вы не издеваетесь, вы что такое термоядерное курили, чтобы к этому выводу придти? :upset: :smile: :smile: :-D
Ответить с цитированием
  (#56 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,956
Сказал(а) спасибо: 2
Поблагодарили 303 раз(а) в 303 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 07.07.2010, 17:10

Alison, AD_, смотрите последнее предложение в сообщении №45 этой темы и читайте внимательно, не только то, что написано явно, но и то, что хотел неявно сказать автор. :mrgreen:
Ответить с цитированием
  (#57 (permalink)) Старый
xonix xonix вне форума
Member
 
Сообщений: 429
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.03.2007
По умолчанию 07.07.2010, 17:54

Цитата:
Да. Ибо вычисления управляются логикой. Только в вызове цели надо проверить то, что pred0 истинен и только тогда выводить значение переменной. Также в программе надо для каждого предиката описать те варианты, когда он не только истинен, но и ложен, ибо вызов предикатов может содержать отрицания.
Ну и почему тогда Вы пишете на Prolog а не на PHP? Подозреваю, как раз из-за тех самых вкусностей, которые именно и составляют ту самобытность пролога, за которую мы его любим :drink:

Цитата:
И привёл пример примитивного языка, основанного на записи цели в виде дизъюнкции конъюнкций предикатов.
Вот именно. Вы то сами верите, что на этом примитивном языке можно будет запрограммировать хоть сколь-нибудь реальную задачу?

Цитата:
Ни бэктрекинг, ни унификация не являются обязательными для Пролога. И привёл пример примитивного языка, основанного на записи цели в виде дизъюнкции конъюнкций предикатов. Можно привести другие примеры. Можно даже вспомнить о Парлоге, у которого механизм параллельного логического вывода встроен в язык. Или тот же поиск вширь вместо вглубь.
Но неизменной основой Пролога является записть программы в виде логических выражений предикатов. При этом машина вывода может меняться и набор вкусностей может быть каким угодно.
Что-то Вы путаетесь в показаниях. Так к чему все-таки относится прологовский поиск с возвратом - к машине вывода, или к "вкусностям"? Отвечу за Вас - к машине вывода. И вот почему. Для языка логического программирования критически важным является поддержка недетерминизма в языке (и классический пролог, и приведенный вами парлог, как впрочем и исходный mercury это умеют). Вы правы в том, что механизмы этой поддержки могут различаться. Но если в языке нет недетерминизма - это точно не пролог. Впрочем, можно, конечно, спорить на сколько верно обратное утверждение (пролог ли это, если поддерживает недетерминизм).

Кстати, спасибо что напомнили про Parlog. Немного почитал описание.

дока: http://www.parlog.com/shared/parlogw.pdf
туториал, со сравнением вычислительной модели Prolog vs Parlog, весьма познавательно.

Ответить с цитированием
  (#58 (permalink)) Старый
Alison Alison вне форума
Member
 
Сообщений: 4,781
Сказал(а) спасибо: 0
Поблагодарили 119 раз(а) в 116 сообщениях
Регистрация: 17.11.2004
По умолчанию 07.07.2010, 22:36

Цитата:
Alison, AD_, смотрите последнее предложение в сообщении №45 этой темы и читайте внимательно, не только то, что написано явно, но и то, что хотел неявно сказать автор. :mrgreen:
Это ты себе ходы для отступления так заготавливаешь?
Между строк можно читать только в более-менее правильных утверждениях, заявлениях и т.п.
Ответить с цитированием
  (#59 (permalink)) Старый
SergeMukhin SergeMukhin вне форума
Member
 
Сообщений: 260
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 22.06.2006
По умолчанию 08.07.2010, 01:59

прочитал, зевнул раз 6, и чихнул пару раз от пыли
Ответить с цитированием
  (#60 (permalink)) Старый
Винитарх Винитарх вне форума
Специалист
 
Аватар для Винитарх
 
Сообщений: 7,956
Сказал(а) спасибо: 2
Поблагодарили 303 раз(а) в 303 сообщениях
Регистрация: 01.03.2003
Адрес: Краснодар
По умолчанию 17.07.2010, 15:40

Цитата:
Originally posted by xonix+-->
Цитата:
Ну и почему тогда Вы пишете на Prolog а не на PHP?
Потому что в PHP не реализован механизм автоматического поиска на дереве.
Цитата:
Originally posted by xonix@
[b]Вы то сами верите, что на этом примитивном языке можно будет запрограммировать хоть сколь-нибудь реальную задачу?
Вопрос стоит не в решении реальной задачи, а в перечислении неотъемлемых парадигм, которые присущи только Прологу и которые делают абстрактный язык Прологом.
Машины вывода можно менять как перчатки (даже в рантайме) независимо от того используют они откаты или нет; можно разрешать отсечения, ассерты и ретракты, а можно и не разрешать; можно включать унификацию или только сопоставление с образцом, а можно и ничего такого не включать; НО всё равно такой язык будет Прологом только тогда, когда будет использовать предикаты.
<!--QuoteBegin-xonix

[b]Но если в языке нет недетерминизма - это точно не пролог.
Для задания недетерминизма в предложенном мною языке используется дизъюнкция предикатов (независимо от того, как этот недетерминизм реализуется и поддерживается в вычислительной модели языка, сиречь - в машине логического вывода).
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Самый крутой язык программирования Garik Мысли вслух 7103 08.08.2016 13:00
Язык программирования Gwai Prolog 8 17.05.2011 13:42
[ANN] [Mercury] Новый блог по mercury xonix Prolog 0 05.04.2011 14:06
Какой язык программирования выбрать St.Ark Вопросы начинающих программистов 30 16.03.2011 18:58
Разрабатываю язык логического программирования. prokopiy Prolog 71 11.08.2010 22:05
Как создать новый язык программирования на С++ Шоколад Вопросы начинающих программистов 6 15.10.2009 22:52
Язык программирования Barsic Blan Форум программистов 1 22.03.2008 10:26
язык программирования Матрикс Форум программистов 1 07.06.2007 19:16
Скрипт или язык программирования GEV_256 Мысли вслух 24 09.01.2006 01:54
Язык программирования Loid Мысли вслух 17 29.05.2005 23:20
Скриптовый язык vs Язык программирования relonar Мысли вслух 4 24.09.2004 02:14



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов