Klapaucius пишет:
> MZ>так зачем же себя ограничивать этим прологом ? > > Это, мягко говоря, совсем нездоровая логика. > Если так рассуждать, то можно написать и: > "Вот лично мне лисп уже не интересен потому, что всё, что можно написать > на нём, можно написать и не на нём.
Я забыл спросить. Ты пролог-то знаешь ? И лисп ?
Я что-то подозреваю, что пролог -- не очень.
xonixx пишет:
> SWI) очень импонирует. Короче, для меня пролог выруливает по параметру > (интерес, гибкость) / (сложность освоения, применения).
На прологе ты вряд ли будешь что-то писать. А на хаскеле -- запросто.
Т.е. я хочу сказать, что при всей кажущейся академичности обоих языков
практическая применимость Хаскеля гораздо шире, чем пролога.
MigMit пишет:
> За других не скажу. Мне в Прологе не понравилось (а) определённая > императивность (некоторые правила вызываются только и исключительно ради > сайд-эффекта, причём не безопасного (типа вывода чего-то на экран),
Дык, не делай сайд-эффектов. Там проблема -то другая -- как решать
обычные, нелогические задачи, оставаясь в рамках пролога.
Там выхода-то только два: либо побочние эффекты, либо -- не в рамках
пролога
Здравствуйте, MasterZiv, Вы писали:
MZ>MigMit пишет:
>> За других не скажу. Мне в Прологе не понравилось (а) определённая >> императивность (некоторые правила вызываются только и исключительно ради >> сайд-эффекта, причём не безопасного (типа вывода чего-то на экран),
MZ>Дык, не делай сайд-эффектов.
Дык, а как это меня гарантирует от того, что их сделает мой коллега?
X>Тоже удивляет. Мне вот пролог нравится гораздо больше хаскеля. Объяснение следующее. Что-то более-менее сложное я бы не стал писать ни на том ни на том. Для этого есть, например Java.
Это достойно.
Это очень, очень достойно.
Осмелюсь спросить, что же такого сложного ты не доверишь Хаскелю, а доверишь Java?
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Здравствуйте, md03t4, Вы писали:
M>В этом форуме очень редко всплывают вопросы/советы/отзывы/.../ о применении методов логического программирования (Prolog, Mercury, ...). M>Это потому что: M>-Логическое программирование никому не интересно в современном мире? M>-Не имеет никаких, сколько-нибудь приближенных к практике применений в последние годы? M>-Просто "непопацански"?
Не имеет никаких, сколько-нибудь приближенных к практике применений.
Это не очевидно?
Здравствуйте, Mr.Cat, Вы писали:
MC>PS: А с чего стоит начать знакомиться с логическим программированием, чтобы у этого чего-то была нормальная имплементация под линупс и чтоб на этом чем-то можно было писать что-то небольшое и полезное (что предполагает наличие некоторого количества готовых биндингов к основным линупсовым прикладным либам и несложную разработку новых биндингов)?
Здравствуйте, md03t4, Вы писали:
M>-Логическое программирование никому не интересно в современном мире?
Оно используется очень активно — но Пролог тут не при делах. На функциональных языках часто пишут код, подозрительно похожий на логику предикатов. Всякие там rule engines — это тот же Пролог, но с человеческим лицом. Встраиваемые варианты Пролога весьма популярны. Но я понятия не имею, на кой нужен Пролог отдельно и сам по себе.
Здравствуйте, MasterZiv, Вы писали:
MZ>MigMit пишет:
MZ>Дык, не делай сайд-эффектов. Там проблема -то другая -- как решать MZ>обычные, нелогические задачи, оставаясь в рамках пролога.
Так же как логические В университете у нас была курсовая, в рамках которой я реализовывал оптимальное кодирование по Хаффману на Прологе. Алгоритм, кстати, получился раза в два короче, чем та же задача, решеная на С. Правда код обвязки (ввод/вывод) оказался сильно раздутым, что свело все преимущество на нет. Ну и сам интерпертатор был пригоден только для учебных целей. (А Visual Prolog, увы, мертворожденный проект)
KoriBRand пишет:
> Так же как логические В университете у нас была курсовая, в рамках > которой я реализовывал оптимальное кодирование по Хаффману на Пролог
X>Тоже удивляет. Мне вот пролог нравится гораздо больше хаскеля. Объяснение следующее. Что-то более-менее сложное я бы не стал писать ни на том ни на том. Для этого есть, например Java.
Я осторожно напомню о своём желании увидеть по настоящему сложную задачу, которую нельзя доверить Хаскелю, но можно доверить Джаве.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Здравствуйте, thesz, Вы писали:
T>Здравствуйте, xonixx, Вы писали:
T>Я осторожно напомню о своём желании увидеть по настоящему сложную задачу, которую нельзя доверить Хаскелю, но можно доверить Джаве.
Тут я скорее имел в виду сложное не столько в плане собственно алгоритмической сложности, сколько в плане размера/масштаба. Например, те же веб-приложения. Да, я слышал что для Хаскеля есть HappS, но думаю, будет лишним напоминать, что распространен он дай бог хотя бы на 1/1000 от явовских решений, причем, подкрепленных стандартами (JEE, JSP, JDBC, J* ...). А распространение это: 1) Комьюнити/поддержка/легкость решения проблем 2) библиотеки/модули на все случаи жизни. 3) и потом, превосходный выбор инструментария для разработки/отладки (чего только стоит Intelij Idea, например) (а для хаскеля что-нибудь удобнее дебага в командной строке существует?). Сорри за разведение оффтопа
Вот и получается, что чтоб писать что-то посложнее Hello World или счетчика посещений надо по крайней мере:
1) Досконально знать Haskell (который, заметим, сложнее Явы)
2) Быть готовым к самостоятельному решению возникающих проблем (гугл не сможет вам помочь)
3) Довольствоваться скудным инструментарием
И это не говоря об особенностях самого языка. Сразу скажу, хаскель знаю довольно посредственно, по этому, вероятно я где-то ^^^ наврал, но я лишь высказываю свое имхо. Меня кстати напрягает чрезмерная purity языка. Помню, как-то захотел добавить отладочную печать в некоторых местах алгоритма, так пришлось менять сигнатуры функций...
Здравствуйте, MasterZiv, Вы писали:
MZ>Да дело как раз в том и состоит, что Пролог -- вообще не язык программирования. MZ>Это синтаксис записи логических предикатов + алгоритм поиска с возвратом. MZ>Всё. Т.е. это -- один алгоритм, и язык описания данных для него.
Ох...
Да дело как раз в том и состоит, что Лисп -- вообще не язык программирования.
Это синтаксис записи списков + алгоритм вычисления с окружениями.
Всё. Т.е. это -- один алгоритм, и язык описания данных для него.
Видимо, мне придется все разжевывать.
Если реализовать язык просто — это не значит, что это "вообще не язык программирования". Если уж на то пошло, то наивная реализация лиспа, может еще и проще наивной реализации пролога. Ну так что с того? То, что реализовать пролог относительно просто — не отвечает на вопрос "почему так мало говорят о прологе?". По той просто причине, что сложность реализации языка никак не связана с тем, как часто о нем говорят.
Если же встроить пролог в другой язык и писать на этом встроенном eDSL — это все равно означает писать на прологе. И если писать какой-нибудь нетривиальный код, то рано или поздно придется переписать этот код в синтаксисе пролога и опубликовать его, например, здесь с соотвествующими вопросами. Поэтому, нет никакой разницы используют пролог как внешний язык или встроенный DSL — на то как много говорят здесь о прологе это никак не повлияет.
MZ>В общем -- чесать левое ухо пяткой правой ноги. MZ>Можно ? да. Даже прикольно. Нужно ? я лично сомневаюсь.
Ну теперь добавилось еще и третье бессмысленное соображение. Ну да, для человека, который к прологу не привык — это все равно что "чесать левое ухо пяткой", а для того, кто привык — это совершенно естественно. А о том нужно это или нет, конечно, с вами забыли посоветоваться.
Предположение о сомнительной практической ценности — может быть нормальным объяснением того, "почему о прологе мало говорят", и то, что сейчас программисты чаще развлекаются другими языками тоже может быть объяснением (ну, вышел пролог из моды) и даже более правдоподобным чем первое — ничто не мешает обсуждать тут совершенно бесполезные с практической точки зрения языки. Но то что пролог это "один алгоритм и одна структура данных" и что его можно встроить в другой язык вообще никакого отношения к тому, обсуждают ли здесь пролог не имеет.
... << 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
Здравствуйте, xonixx, Вы писали:
X>Здравствуйте, thesz, Вы писали:
T>>Здравствуйте, xonixx, Вы писали:
T>>Я осторожно напомню о своём желании увидеть по настоящему сложную задачу, которую нельзя доверить Хаскелю, но можно доверить Джаве.
X>Тут я скорее имел в виду сложное не столько в плане собственно алгоритмической сложности, сколько в плане размера/масштаба.
X>Например, те же веб-приложения. Да, я слышал что для Хаскеля есть HappS, но думаю, будет лишним напоминать, что распространен он дай бог хотя бы на 1/1000 от явовских решений, причем, подкрепленных стандартами (JEE, JSP, JDBC, J* ...).
А чего стоят эти стандарты, если я не могу подключить к ним ядро логики, написанной на языке, отличном от Java? Да ничего не стоят.
И кстати, почему Java, почему не Эрланг (чёрт с ним, с Хаскелем)?
X>А распространение это: 1) Комьюнити/поддержка/легкость решения проблем 2) библиотеки/модули на все случаи жизни. 3) и потом, превосходный выбор инструментария для разработки/отладки (чего только стоит Intelij Idea, например) (а для хаскеля что-нибудь удобнее дебага в командной строке существует?).
Удобнее дебага в командной строке дебаг с помощью типов и дебаг в голове.
X>Вот и получается, что чтоб писать что-то посложнее Hello World или счетчика посещений надо по крайней мере: X>1) Досконально знать Haskell (который, заметим, сложнее Явы)
Преувеличение.
X>2) Быть готовым к самостоятельному решению возникающих проблем (гугл не сможет вам помочь)
Преувеличение. См. неподалёку "Жизнь без IDE".
X>И это не говоря об особенностях самого языка. Сразу скажу, хаскель знаю довольно посредственно, по этому, вероятно я где-то ^^^ наврал, но я лишь высказываю свое имхо. Меня кстати напрягает чрезмерная purity языка. Помню, как-то захотел добавить отладочную печать в некоторых местах алгоритма, так пришлось менять сигнатуры функций...
1) unsafePerformIO
2) Debug.Trace.trace
И вообще, язык должен менять мышление. А тут налицо попытка натянуть старое мышление на новый язык.
Кстати, purity позволяет делать par/pseq и ndp. В виде библиотеки.
Что на менее чистом камле сделать будет, как минимум, труднее.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Klapaucius пишет:
> Ох... > Да дело как раз в том и состоит, что Лисп -- вообще не язык > программирования. > Это синтаксис записи списков + алгоритм вычисления с окружениями. > Всё. Т.е. это -- один алгоритм, и язык описания данных для него. >
Ты, видимо, большой любитель пролога, и я, видимо, бросил тень
на твою святыню, да ? Ну, извини.
Проблема-то в том, что на лиспе, как и на любом другом языке,
можно написать любой алгоритм, а на прологе ты все алгоритмы
будешь выражать через один. Зачем ? Я не понимаю.
> Если же встроить пролог в другой язык и писать на этом встроенном eDSL — > это все равно означает писать на прологе. И если писать какой-нибудь
Против такого пролога я ничего не имею.
> нетривиальный код, то рано или поздно придется переписать этот код в > синтаксисе пролога и опубликовать его, например, здесь с соотвествующими > вопросами. Поэтому, нет никакой разницы используют пролог как внешний > язык или встроенный DSL — на то как много говорят здесь о прологе это > никак не повлияет.
Есть разница. На прологе только один алгоритм вывода.
Во встроенном я могу применить и другие.
> Ну теперь добавилось еще и третье бессмысленное соображение. Ну да, для > человека, который к прологу не привык — это все равно что "чесать левое > ухо пяткой", а для того, кто привык — это совершенно естественно. А о
А зачем привыкать к плохому ? Я в смысле -- писать нелогические
программы на логическом языке программирования ?
> практической точки зрения языки. Но то что пролог это "один алгоритм и > одна структура данных" и что его можно встроить в другой язык /вообще > никакого отношения/ к тому, обсуждают ли здесь пролог не имеет.
Ну, на мой взгляд имеют. Я, в общем-то , все свои соображения
высказал на эту тему.
Здравствуйте, MasterZiv, Вы писали:
MZ>Ты, видимо, большой любитель пролога, и я, видимо, бросил тень MZ>на твою святыню, да ?
Вообще-то нет. А вы, видимо, большой любитель по говорить о том, что я люблю? Я, конечно, польщен таким интересом к моей персоне, но может быть мы вернемся к онтопичной теме разговора?
MZ>Проблема-то в том, что на лиспе, как и на любом другом языке, MZ>можно написать любой алгоритм, а на прологе ты все алгоритмы MZ>будешь выражать через один. Зачем ? Я не понимаю.
Не на любом. На SQL, например, любой алгоритм не напишешь. Ну так что, никто про SQL не говорит? Ох нет... что-то опять не сходится.
MZ>Ну, на мой взгляд имеют.
Это понятно. Иначе вы бы так, видимо, не написали. Только связь эта не прослеживается. Было бы неплохо эти связи раскрыть или, хотя-бы, предметно ответить на мои возражения.
... << 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
Здравствуйте, Klapaucius, Вы писали:
K>Не на любом. На SQL, например, любой алгоритм не напишешь. Ну так что, никто про SQL не говорит? Ох нет... что-то опять не сходится.
Klapaucius пишет:
> Это понятно. Иначе вы бы так, видимо, не написали. Только связь эта не > прослеживается. Было бы неплохо эти связи раскрыть или, хотя-бы, > предметно ответить на мои возражения.
Я все свои соображения на этот счёт изложил уже в данной теме.
Более мне добавить нечего. Для себя я уже решил этот вопрос:
если я не буду писать чисто экспертную систему, то есть
у меня в системе будет код как обычный, так и для логического
программирования, пролог в чистом виде там использоваться не
будет. Будет использоваться реализация пролога на других
языках в виде библиотек, или вообще другие системы логического
программирования.