powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Prolog в качестве языка запросов к РБД (теория и практика)
23 сообщений из 23, страница 1 из 1
Prolog в качестве языка запросов к РБД (теория и практика)
    #32461408
a13x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
собственно, сабж
если у кого есть линки на материалы (на русском или английским), то буду очень признателен =)
(вдвойне - если на русском )
хотя, лучше всего, если бы кто поделился собственным опытом, если таковой имеется
...
Рейтинг: 0 / 0
Prolog в качестве языка запросов к РБД (теория и практика)
    #32461592
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пролог пытался использовать достаточно давно (юзал на протяжении трех месяцев 12 лет назад).
может поэтому я уже смутно представляю, как его можно в качестве языка запросов.
опыт собственно использования пролога - отрицательный.
субьективно - жутко не понравился.
...
Рейтинг: 0 / 0
Prolog в качестве языка запросов к РБД (теория и практика)
    #32464046
a13x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quote]
пролог пытался использовать достаточно давно (юзал на протяжении трех месяцев 12 лет назад).
[/quote]
будучи еще студентом, я полагаю =)

[quote]
может поэтому я уже смутно представляю, как его можно в качестве языка запросов.
[/quote]

http://www.ruc.dk/~henning/adb2003/DatabaseProlog.pdf
или то же самое в html

http://www.google.com.ru/search?q=cache:8k2_G-yfXeUJ:www.ruc.dk/~henning/adb2003/DatabaseProlog.pdf+advanced+topics+in+database+prolog&hl=ru&ie=UTF-8

методология и общие принципы использования пролога в качестве языка для моделирования реляционных бд, а по поводу "языка запросов" - есть модуль (на прологе), называемый компилятором пролога в сиквел, посмотреть можно здесь

http://www-2.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/lang/prolog/code/io/pl2sql/0.html

пожалуй, в настоящее время пролог активно используется лишь в академических исследованиях, и что касается теории, то вопросов не возникает

и все-таки, разве никаких *реально* работающих реализаций нет???



[quote]
опыт собственно использования пролога - отрицательный.
[/quote]
какого рода опыт?
...
Рейтинг: 0 / 0
Prolog в качестве языка запросов к РБД (теория и практика)
    #32464783
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1
пролог как язык запросов ничем не лучше чем sql.
более того, sql точная нижняя(в каком то смысле -))) граница
с точки зрения понятности и минимизации усилий пользователя реляционных баз данных. sql - специализирован под работу с множествами строчек, а пролог это
просто логика. пролог не может быть экономнее в области работы с множествами строчек - отношениями.

2
в конце 80 пролог громогласно и торжественно был принят японцами как язык
пятого поколения (или компьютеров пятого поколения я уже забыл) -
сейчас это все тихо погибло. по крайней мере, не слышно ничего на эту тему.

3
меня (в 92 году, после 12 лет программирования на алмире, фортране, алголе, пл/1, ратфоре, си, sql-е, бейсике и паскале)
настолько выводил из себя этот гребаный фокспро
что я пытался писать на прологе клиенты для работы с дбф файлами.
процесс отладки программ на прологе (в моем исполнении, по крайней мере) не обладал свойством сходимости.
я, никогда не мог предугадать, чем закончится мое очередное изменение в программе.
может это я не подхожу к прологу, конечно.
-))))))))

4
за ссылки спасибо, хотя я узнавать чтото о прологе, сверх того, что уже знаю не хочу.
...
Рейтинг: 0 / 0
Prolog в качестве языка запросов к РБД (теория и практика)
    #32481967
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a13x ты живой еще?

по поводу этой фразы

tchingiz>пролог как язык запросов ничем не лучше чем sql.

мне гораздо больше нравится RAISE Specifiication Language - RSL .
Он содержит предикаты, три квантора (всеобщности, существования и уникального_существования), аппликативный (наряду с императивным - традиционным для программирования) стиль записи программ,
выражения над функциями - лямбда исчисления, предикативной и алгебраическое определение функций, аксиомы, и, более того, символ (и возможности сравнения) счетной бесконечностью - алеф-ноль. Пролог рядом и не стоял.

Я пытался использовать rsl для проектирования субд. Тексты программ на SQL, как специализированном языке оказались гораздо короче, чем соответствующие на RSL. Хотя, в общем полезно было.
вот такой оператор, содержащий простой запрос
множество всех значений в поле pamp таблицы Position
должно включаться во множество всех значений поля id таблицы Pump

Код: plaintext
1.
2.
3.
4.
        alter table Position
          add  constraint pos_pmp_fk
          foreign key (pump) references Pump(id)
          ON DELETE CASCADE;


формулируется приблизительно так ( on delete cascade - не отражен и потребует дополнительных усилий)
Код: plaintext
1.
2.
3.
4.
5.
6.
      [primary_pump]       --  pump must be exist
 
      all pos  : T.Position :- pos isin rng tbl
                        =>
                        T.pump(pos) isin dom R.tbl



для всех записей (pos - это вся запись, кроме первичного ключа id) -
выполняется - если запись принадлежит таблице (Position) , то значение поля
pump принадлежит первичному ключу таблицы R (R - формальный параметр описания имеет значение Pump).

У меня таблица задавалась как отображение из первичного ключа в запись.
rng - множество значений отображения == множество записей таблицы.
dom - множество определения отображения == множество первичных ключей таблицы.
...
Рейтинг: 0 / 0
Prolog в качестве языка запросов к РБД (теория и практика)
    #32482508
a13x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
живее всех живых =)
с rsl не сталкивался, посмотрю, спасибо (вдвойне, за активное участие в обсуждении =))))

наткнулся недавно на RQL (query language for representation layer), базируется на xml

насколько я понял, пробежавшись глазами (www.ontoknowledge.org/countd/countdown.cgi?del9.pdf ), связано с семантическим вебом etc...

и по поводу пролога.
что касается рбд - все понятно... я теперь понял, что в моем вопросе кроется ошибка, и весьма серьезная - о прологе как об альтернативе сиквелу в контексте *извлечения* данных говорить нельзя, а именно так (Prolog vs. SQL - и, кажется, только так =) мой вопрос можно проинтерпретировать...

но если посмотреть на пролог с точки зрения интеллектуального анализа извлекаемых данных, то вот здесь сиквел не будет "работать" в том виде, как он есть - если сиквел "повернут лицом" к структуре данных, то пролог - к их семантике

в свете вышеизложенного поправляю тему сабжа: SQL feat. Prolog (теория и практика)
...
Рейтинг: 0 / 0
Prolog в качестве языка запросов к РБД (теория и практика)
    #32483592
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не допонял я, кто к кому чем повернут.\r
\r
язык, это инструмент, на котором люди пишут свои мысли.\r
мысли может быть удобно излагать или нет.\r
все что можно написать на прологе, можно написать на sql или vdm или z\r
или эйфеле. и даже за более короткое количество строчек.\r
sql - действительно слабее.\r
он не содержит аксиом арифметики\r
пеано\r
-точнее матиндукции - по простому говоря, не содержит цикла.\r
\r
сжатый результат:\r
теория - \r
как математическая теория пролог включает в себя sql.\r
(все что можно написать на sql, можно написать на прологе. обратное неверно)\r
практика - \r
1 sql - очень удобен и экономен в своем классе \r
2 есть другие языки удобнее чем пролог.\r
\r
\r
\r
>пролог с точки зрения интеллектуального анализа извлекаемых данных,\r
\r
я помню, что пролог все решает перебором\r
и, вообще, когда я слышу слово искуственный интелект, я хватаюсь за пистолет.
...
Рейтинг: 0 / 0
Prolog в качестве языка запросов к РБД (теория и практика)
    #32483623
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 tchingiz
Жутко счастлив что мне с тобой довелось только мороженое сравнивать

Magnus
...
Рейтинг: 0 / 0
Prolog в качестве языка запросов к РБД (теория и практика)
    #32484319
black zorro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Увидел тут обсуждение prolog
и не смог удержаться, хотя как и большинство присутствующих работал с ним в последний раз года 4 назад когда учился сам в ВУЗе.

мне тогда в память запала интересная табличка которую приводил наш препод
сравнение пролога и иных языков по времени разработки того или иного вида программ

В общем там пролог по сравнению с C/C++
рулил во всем: в разработке GUI, Баз данных, экспертных систем (что не удивительно), мат расчетов, и т.д.
и причем рулил в отношении 1 к 8, 10 не в пользу C/C++

как то в сетевых решениях была статья о том как одна маленькая компания на далеком диком западе заработала кучу зеленых единиц именно благодаря тому что с помощью пролога они очень быстро разработали какой-то супер мега сайт с кастомизацией содержимого (что-то вроде конструктора онлайн магазинов)

Интересно кто его пользует и если сравнивать то правда ли все это, а если правда то почему я на нем не пишу и еще 99% программеров?
...
Рейтинг: 0 / 0
Prolog в качестве языка запросов к РБД (теория и практика)
    #32484812
Yossarian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>sql - специализирован под работу с множествами строчек, а пролог это
>просто логика. пролог не может быть экономнее в области работы с
>множествами строчек - отношениями

И тем не менее, ИМХО, Пролог намного эффективнее чем SQL именно как
язык запросов. Дело в том, что далеко не все SQL запросы поддаются
оптимизации. Пролог-выражения же оптимизировать намного легче.
Кроме того, на Прологе многие вещи, которые в SQL выглядят искусственно
(например нумерация строчек запроса) пишутся вполне естественным
способом.

Еще одна тонкость : при составлении запросов иногда возникает ситуация
неопределенности. Например :

Из Т1 выбрать все записи связанные с Т2 по полю Ф1. Для групп таких полей
сосчитать сумму по полю Ф2 и выбрать ЛЮБОЕ из значений поля Ф3 и соответствующее ему значение Ф4.

В SQL придется точно определить, что значит ЛЮБОЕ. Например, взять
ПЕРВОЕ :-) В Прологе эта ситуация вполне нормальна. Берется ПЕРВОЕ ПОПАВШЕЕСЯ значение. Поскольку по определению в РБД порядок записей не
определен, получается ЛЮБОЕ. О смысле такого запроса прошу не высказываться.

В Прологе значительно более естественно выглядят рекордсеты.
Это не замороженный снимок базы, из которого отдают по кусочку,
а ПРАВИЛО отбора (формирования) следующей записи.





Washington Irving
...
Рейтинг: 0 / 0
Prolog в качестве языка запросов к РБД (теория и практика)
    #32485182
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yossarian
эффективность мне вообще до лампочки.
сначала нужно решить для чего пишется программа и кому должно быть удобно с ней работать - компьютеру (спотимизировать) или программисту (мысли излагать в ней).

типа: есть что бы жить или жить чтобы есть.
но что бы поддержать беседу -
ты хочешь сказать, что одно и тоже выражение написанное на прологе поддается оптимизанции, а написанное на sql - нет?

---------
Кроме того, на Прологе многие вещи, которые в SQL выглядят искусственно
(например нумерация строчек запроса) пишутся вполне естественным
способом.
---------
в SQL нумерация строчек запроса выглядит исскуственно, по определению таблицы как множества записей. множество не имеет порядка.
кстити, именно, поэтому выбирая первую строчку из таблицы в неупорядоченном фразой order by
запросе ты выбираешь именно произвольную запись.

по поводу неопределенности: пролог и рядом не валялся с другими языками

пример частично определенной функции F, которая из произвольного множества целых чисел выдает произвольное число. поведение функции на пустом множестве не определено.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
scheme x = 
class
  value 
    X: Int-infset,  --X - бесконечное множество
 
    Y: Int-set,     --Y - конечное множество
 
    F: Int-set -~-> Int
    F(z) as e          -- результат работы есть е
 
    post  e isin z     -- пост условие е принадлежит z
 
    pre z ~= {}      -- пред условие z не может быть пустым    
 
  axiom                  -- сравнение мощности бесконечного множества
 
    card X = chaos   -- вполне законное выражение
 
    ,
     card X ~= card Y
end

                          


тут
десятая лекция посвящена недетерминизму и неполным спецификациям
...
Рейтинг: 0 / 0
Prolog в качестве языка запросов к РБД (теория и практика)
    #32487799
a13x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quote]
язык, это инструмент, на котором люди пишут свои мысли.
[/quote]

язык *программирования* - это язык, на котором эти мысли *формализуют*
или?

[quote]
и, вообще, когда я слышу слово искуственный интелект, я хватаюсь за пистолет
[/quote]

я этого не говорил =)... точнее - я не это имел в виду иначе я про лисп, наверное бы спрашивал, про него, кажется чаще упоминают в контексте ИИ...
...
Рейтинг: 0 / 0
Prolog в качестве языка запросов к РБД (теория и практика)
    #32488744
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2black zorro
--В общем там пролог по сравнению с C/C++
рулил во всем: в разработке GUI, Баз данных, экспертных систем (что не удивительно), мат расчетов, и т.д.
и причем рулил в отношении 1 к 8, 10 не в пользу C/C++


что значит рулил ? по кааим критериям ?

стоимости средств разработки, скорости разработки, стоимости разработки, стоимости сопровождения, возможностям разработки, скорости ?

особенно пункт "в разработке GUI" вызывает у меня здоровый скептецизм
...
Рейтинг: 0 / 0
Prolog в качестве языка запросов к РБД (теория и практика)
    #32488755
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a13x>язык *программирования* - это язык, на котором эти мысли *формализуют*
или?

подумать мысль в словах - означает ее формализовать.

так для общего развития - есть подозрение, что санскрит - язык на котором написана бхагаватгита - исскуственно созданный язык. вроде пролога.
его создали для однозначного (а значит формального) описания Бога, не позволяющего ложных интерпретаций.
...
Рейтинг: 0 / 0
Prolog в качестве языка запросов к РБД (теория и практика)
    #32489218
black zorro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Lepsik
Рулил он именно по скорости разработки (значит, в человеко-часах)

А относительно GUI - ну если сравнивать с просто C/C++ для windows (чистый WinAPI) и даже MFC - то по моему скромному рассуждению после просмотра ряда примеров исходников - действительно рулит.
с.м. http://www.visual-prolog.com
Вопрос тут у меня всплыл во время рассмотрения данных исходников
что-то пролог изменился сильно то, и что наиболее неприятно даже в простейших вещах без спецбиблиотек (COM, CGI, ODBC ...) для разных реализаций есть отличия в синтаксисе.
Так что для того чтобы получить общее представление о мире знаний и их обработке лучше чем Turbo Prolog 2 нет ничего. А вопрос в том, что напрягает немного меня сама IDE и поэтому вопрос нет ли у кого идей как выдрать только компилятор я бы написал сам IDE и запуск из него вышеобозначенного компилятора, глядишь кому-нибудь и пригодится.
...
Рейтинг: 0 / 0
Prolog в качестве языка запросов к РБД (теория и практика)
    #32489253
black zorro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да чуть не забыл нашел давеча полезный линк на различные реализации Prolog

http://www.cs.kuleuven.ac.be/~remko/prolog/faq/files/faq.html
...
Рейтинг: 0 / 0
Prolog в качестве языка запросов к РБД (теория и практика)
    #32489490
Yossarian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 tchingiz

> в SQL нумерация строчек запроса выглядит исскуственно, по определению
> таблицы как множества записей.

Не потому. А потому что объектом действия является множество.
Само по себе множество м.б. и упорядоченным.

Пример : есть 2 таблицы, отсортированные через order by.
построить запрос, который первой строке первой таблицы поставит
в соответствие первую строку второй таблицы итд.

>ты хочешь сказать, что одно и тоже выражение написанное на прологе поддается оптимизанции, а написанное на sql - нет?

Я хочу сказать, что в Прологе и Скуле для выполнения одной и той же задачи будут написаны разные выражения. Так вот, во многих случаях Проложные будет легче оптимизировать, чем Скулевые. Разумеется, select a from b
выполнится одинаково...

Washington Irving
...
Рейтинг: 0 / 0
Prolog в качестве языка запросов к РБД (теория и практика)
    #32490870
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yossarian>А потому что объектом действия является множество.
по определению множества, множество линейного порядка не имеет.
(определению больше 100 лет и оно входит в устоявшуюся, стройную и логичную математическую теорию. в отличие от программистких шаманских танцев.)
что бы был линейный порядок, надо ввести такое отношение. то есть сделать доп.
усилие. Еще раз поскольку sql работает (работает == делает селект, делете, инсетр и адрейт) с множествами(а не со списками, где есть порядок), там упорядоченность требует доп усилий.


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


>Я хочу сказать, что в Прологе и Скуле для выполнения одной и той же задачи

выполнить запрос к таблицам

>будут написаны разные выражения. Так вот, во многих случаях Проложные
>будет легче оптимизировать, чем Скулевые

тогда, в тех случаях, когда prolog- выражения легче оптимизировать, разработчики sql должны проконвертить sql-выражения в prolog выражения,
соптимизировать последние выполнить их и отдать результат юзеру, доказав тем самым, что и sql и prolog выражения оптимизируются одинаково.

шутка
...
Рейтинг: 0 / 0
Prolog в качестве языка запросов к РБД (теория и практика)
    #32490983
Фотография Green2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему пролог не вошел в практику программирования?

Я несколько раз пытался разобраться с ним, но у меня ничего не получалось.

Не смог оценить этот язык.
...
Рейтинг: 0 / 0
Prolog в качестве языка запросов к РБД (теория и практика)
    #32497639
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2black zorro
--А относительно GUI - ну если сравнивать с просто C/C++ для windows (чистый WinAPI) и даже MFC - то по моему скромному рассуждению после просмотра ряда примеров исходников - действительно рулит.

после посмотра его интерфейса в стиле эпохе перехода от Win3.1 к Win95 я просто не понимаю о каком сравнении вообще может идти речь.

Визаульные компоненты практически отсутствуют. Любой более-менее сложный интерйес требует чудовищных усилий по программированию.
...
Рейтинг: 0 / 0
Prolog в качестве языка запросов к РБД (теория и практика)
    #32497647
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
---
процесс отладки программ на прологе (в моем исполнении, по крайней мере) не обладал свойством сходимости.
я, никогда не мог предугадать, чем закончится мое очередное изменение в программе.
---
это же другими словами - программировать на нем - неудобно
...
Рейтинг: 0 / 0
Prolog в качестве языка запросов к РБД (теория и практика)
    #32501711
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a13x,
я тут индексер делаю(типа гугля в бд документов, там 4 таблицы из 3 колонок - то есть схема БД простая). удается описывать схему бд проект на rsl.
давай мой rsl сравнивать с твоим прологом? например, сделаешь
аналог view
...
Рейтинг: 0 / 0
Prolog в качестве языка запросов к РБД (теория и практика)
    #32527208
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
погнали наши
городских
копирайт Гаря
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Prolog в качестве языка запросов к РБД (теория и практика)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]