В этом форуме очень редко всплывают вопросы/советы/отзывы/.../ о применении методов логического программирования (Prolog, Mercury, ...).
Это потому что:
-Логическое программирование никому не интересно в современном мире?
-Не имеет никаких, сколько-нибудь приближенных к практике применений в последние годы?
-Просто "непопацански"?
M>В этом форуме очень редко всплывают вопросы/советы/отзывы/.../ о применении методов логического программирования (Prolog, Mercury, ...).
наверное потому что за 12 лет в СПб (к примеру) вакансия программиста на Prolog была встречена только 2 раза и та размещалась от производителя Visual Prolog
Здравствуйте, raydac, Вы писали:
R>наверное потому что за 12 лет в СПб (к примеру) вакансия программиста на Prolog была встречена только 2 раза и та размещалась от производителя Visual Prolog
md03t4 пишет:
> В этом форуме очень редко всплывают вопросы/советы/отзывы/.../ о > применении методов логического программирования (Prolog, Mercury, ...).
Вот лично мне пролог уже не интересен потому, что всё, что можно написать
на нём, можно написать и не на нём. В смысле, написать пролог на каком-то
другом языке, например, на питоне, и потом уже на этом прологе написать
всё, что нужно.
Здравствуйте, MasterZiv, Вы писали:
MZ>md03t4 пишет:
>> В этом форуме очень редко всплывают вопросы/советы/отзывы/.../ о >> применении методов логического программирования (Prolog, Mercury, ...).
MZ>Вот лично мне пролог уже не интересен потому, что всё, что можно написать MZ>на нём, можно написать и не на нём. В смысле, написать пролог на каком-то MZ>другом языке, например, на питоне, и потом уже на этом прологе написать MZ>всё, что нужно.
Утверждение верно и в обшем случае. Если какая-либо программа написана на языке Х,
то она может быть переписана на языке Y, даже если Y — это язык машинных команд.
Безусловно есть задачи, которые на языках определеного типа решаются эффективнее,
и/или эффектнее.
Вот и возник вопрос. Неужели задачи современного бизнеса настолько трудно решаемы
языках логического программирования, что их прменение практически сошло на нет.
md03t4 пишет:
> Вот и возник вопрос. Неужели задачи современного бизнеса настолько > трудно решаемы > языках логического программирования, что их прменение практически сошло > на нет.
Проблема в том, что задачи -- комплексные. Есть задачи для логического
программирования, есть -- обрамляющие её. Нужна интеграция
пролога с вшешним миром. А только на прологе всё писать -- плохо
получится. если пролог нужен -- он хорош. Если он не нужен -- он только
тормозит всё и мешает.
В общем-то, когда я читал книжки всякие по прологу, там ровно то
же самое было написано. Ну и дальше -- либо пролог интегрировать
с внешним миром, либо пролог (это на самом деле один алгоритм и
одна структура данных) написать на чём-то ещё, на чём будешь всё
остальное писать. поскольку
0) объём задач лог-программирования обычно от общего объёма мал
1) не факт, что поиск с возвратом будет для данной задачи самым
правильным и
2) уже есть написанные прологи на других языках
я лично для себя уже сделал вывод -- пролог как язык я
использовать не буду.
Здравствуйте, MasterZiv, Вы писали:
MZ>Вот лично мне пролог уже не интересен потому, что всё, что можно написать MZ>на нём, можно написать и не на нём. В смысле, написать пролог на каком-то MZ>другом языке, например, на питоне, и потом уже на этом прологе написать MZ>всё, что нужно.
MZ>так зачем же себя ограничивать этим прологом ?
Это, мягко говоря, совсем нездоровая логика.
Если так рассуждать, то можно написать и:
"Вот лично мне лисп уже не интересен потому, что всё, что можно написать
на нём, можно написать и не на нём. В смысле, написать лисп на каком-то
другом языке, например, на питоне, и потом уже на этом лиспе написать
всё, что нужно.
так зачем же себя ограничивать этим лиспом ?"
Ну, а если Пролог — это один алгоритм и одна cтруктура данных — тогда лисп это два алгоритма и одна структура данных.
Самая очевидная проблема в таких рассуждениях в том, что если реализовать язык X на языке Y и пользоваться потом такой реализацией (хоть в качестве встроенного языка, хоть внешнего) то писать-то придется как раз на языке с семантикой языка X, а то и с синтаксисом X, что конечно, не обязательно но и такого значения как семантика не имеет.
... << RSDN@Home 1.2.0 alpha 4 rev. 1228>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
FR>Здравствуйте, raydac, Вы писали: R>>наверное потому что за 12 лет в СПб (к примеру) вакансия программиста на Prolog была встречена только 2 раза и та размещалась от производителя Visual Prolog FR>Вакансий на Хаскель например больше?
если набрать haskel на joblist.ru то две вакансии находит с его указанием, а prolog только одну пересекающуюся с хаскелем.. хаскель это андеграундный тренд нынче, так что его знать в какой то мере модно в узких кругах
Думаю, просто активные любители логических языков на форуме слабо представлены.
PS: А с чего стоит начать знакомиться с логическим программированием, чтобы у этого чего-то была нормальная имплементация под линупс и чтоб на этом чем-то можно было писать что-то небольшое и полезное (что предполагает наличие некоторого количества готовых биндингов к основным линупсовым прикладным либам и несложную разработку новых биндингов)?
Здравствуйте, raydac, Вы писали: FR>>Вакансий на Хаскель например больше?
R>если набрать haskel на joblist.ru то две вакансии находит с его указанием, а prolog только одну пересекающуюся с хаскелем..
ага там еще упоминается erlang, ASP.NET, PHP, Ruby и т.д., что лично меня наводит на мысли о неадекватности рабодателя R>хаскель это андеграундный тренд нынче, так что его знать в какой то мере модно в узких кругах
на rsdn
R>>если набрать haskel на joblist.ru то две вакансии находит с его указанием, а prolog только одну пересекающуюся с хаскелем.. C>ага там еще упоминается erlang, ASP.NET, PHP, Ruby и т.д., что лично меня наводит на мысли о неадекватности рабодателя R>>хаскель это андеграундный тренд нынче, так что его знать в какой то мере модно в узких кругах C>на rsdn
помню на одном форуме делал для одного студента лабу по прологу, он говорил что опытный программист на с++ и может в замен сделать какойнить непростой проект на оном взамен, т.е. стоимость освоения пролога для него выше чем стоимость написания непростого проекта на с++
вспомнилось, неадекватные работодатели по прологу обычно на письмо помнится с указанием что пролог — неплохой язык, впадали в бешенство и писали в ответ что пролог просто офигенный язык и после этого пропадали навсегда в предрассветном тумане
Здравствуйте, Mr.Cat, Вы писали:
MC>Думаю, просто активные любители логических языков на форуме слабо представлены. MC>PS: А с чего стоит начать знакомиться с логическим программированием, чтобы у этого чего-то была нормальная имплементация под линупс и чтоб на этом чем-то можно было писать что-то небольшое и полезное (что предполагает наличие некоторого количества готовых биндингов к основным линупсовым прикладным либам и несложную разработку новых биндингов)?
Помнится, swi-prolog был ничего в плане библиотек.
Здравствуйте, md03t4, Вы писали:
M>В этом форуме очень редко всплывают вопросы/советы/отзывы/.../ о применении методов логического программирования (Prolog, Mercury, ...). M>Это потому что: M>-Логическое программирование никому не интересно в современном мире?
Оно может быть встроено простым образом в другую программу.
Monadic constraint programming, например. Позволяет описывать и Пролог в том числе.
M>-Не имеет никаких, сколько-нибудь приближенных к практике применений в последние годы?
Имеет, но больше в области ЯП — вывод типов, например.
M>-Просто "непопацански"?
Ещё у Пролога трудности с проверкой типов. Все "функции" тотальны, работают на всех входных данных.
"p(1)." провалилось. Это ошибка в программе, или я подал данные, для которых нет вывода?
Писать на чистом Прологе очень трудно. Чуть программа побольше, и привет, ошибку отыскать невероятно трудно.
Строгая типизация у диалектов есть, но то ж диалекты.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Здравствуйте, md03t4, Вы писали:
M>В этом форуме очень редко всплывают вопросы/советы/отзывы/.../ о применении методов логического программирования (Prolog, Mercury, ...).
В определенном смысле Erlang — наследник пролога. Про него тут говорят.
Здравствуйте, D. Mon, Вы писали:
DM>Здравствуйте, md03t4, Вы писали:
M>>В этом форуме очень редко всплывают вопросы/советы/отзывы/.../ о применении методов логического программирования (Prolog, Mercury, ...).
DM>В определенном смысле Erlang — наследник пролога. Про него тут говорят.
И что же в Erlang'е от Prolog'а? То, что первая версия была на нем написана?
В Erlang'е нет ничего от логической парадигмы, ни унификации, ни поиска с возвратом.
Здравствуйте, Аноним, Вы писали:
А>И что же в Erlang'е от Prolog'а? То, что первая версия была на нем написана? А>В Erlang'е нет ничего от логической парадигмы, ни унификации, ни поиска с возвратом.
По крайней мере унификация aka pattern matching имеется. Или что-то другое имеется ввиду ?
Здравствуйте, md03t4, Вы писали:
M>В этом форуме очень редко всплывают вопросы/советы/отзывы/.../ о применении методов логического программирования (Prolog, Mercury, ...). M> -Логическое программирование никому не интересно в современном мире?
Тоже удивляет. Мне вот пролог нравится гораздо больше хаскеля. Объяснение следующее. Что-то более-менее сложное я бы не стал писать ни на том ни на том. Для этого есть, например Java. В случае необходимости чего-то приближенного к логике/функциональщине можно использовать, например тот же пролог как, думаю, и хаскель в качестве либы. По этому вопрос скорости работы для меня стоит очень слабо. Мне куда интереснее концептуальная простота в сочетании с гибкостью и тут пролог (например, SWI) очень импонирует. Короче, для меня пролог выруливает по параметру (интерес, гибкость) / (сложность освоения, применения).
За других не скажу. Мне в Прологе не понравилось (а) определённая императивность (некоторые правила вызываются только и исключительно ради сайд-эффекта, причём не безопасного (типа вывода чего-то на экран), а, скажем, ради хитрожопого изменения базы), и (б) общее ощущение, что, когда оказывается, что базовая модель поиска с возвратом недостаточно эффективна, Пролого не расширяет базовую модель, а изобретает ad-hoc-хак.
Klapaucius пишет:
> Ну, а если Пролог — это один алгоритм и одна cтруктура данных — тогда > лисп это два алгоритма и одна структура данных.
Да дело как раз в том и состоит, что Пролог -- вообще не язык программирования.
Это синтаксис записи логических предикатов + алгоритм поиска с возвратом.
Всё. Т.е. это -- один алгоритм, и язык описания данных для него.
При этом все вычислительные и алгоритмические задачи на
нём писать -- это использовать поиск с возвратом, с отсечениями,
и побочными эффектами (что кстати уже "нечисто" с теор. точки зрения)
для реализации простой машины Тьюринга.
В общем -- чесать левое ухо пяткой правой ноги.
Можно ? да. Даже прикольно. Нужно ? я лично сомневаюсь.