есть здесь знатоки ПРОЛОГа?
очень сильно не хватает интерактивности при принятии решений
очень сильно не хватает легкой стыковки с внешним миром (императивные языки, ФЯ и т.д.)
а чем он, коренным образом, отличается от остальных?
всем
это как?
тем, что это логический язык (один из немногих)
а остальные языки являются: императивными, функциональными или декларативными.
причем список можно продолжать до бесконечности.
![](/images/graemlins/smile.gif)
![](/images/graemlins/smile.gif)
параллельное программирование и т.д.
те парадигмы, что я вспомнил:
1. ооп
2. параллельное
3. стековое
4. аспектное
и т.д.
являются ортогональным к вышеперечисленному делению.
т.е. деление императивный, функциональный, логический, декларативный - показывает каким образом мы описываем "поток управления" программы: либо явно- императивный, либо совсем не описываем - декларативный, либо описываем косвенно - фя и логические.
P.S.
Вообще-то не хотелось бы тут устраивать флейм о парадигмах ЯП, т.к. область не устаканилась и совсем не формализована.
короче, ничего я не понял, но все равно всем спасибо!
изучать не стоит, если не заставляют
изучить стоит, но только ради факультативного развития.
т.е. если цель - развиваться в программирование - то изучить стоит, иначе - нафиг
очень сильно не хватает интерактивности при принятии решений
это простите как?
по поводу изучать или нет - скажу все таки НЕТ, если в этом нет крайней необходимости. А вообще например на visual prolog можно легко создавать несложные win32 приложения с формочками , с диалогами.
Вот пишишь ты простенькую прогу на лог. языке.
Запускаешь ее и она на пару месяцев задумывается - а потом говорит извини решения нет.
так вот хочется, чтобы вместо этого прога сказала - что вот в этих местах и в этих местах - прога будет много думать, далее хочеться чтобы в этих местах - можно было добавить или ручное принятие решения, или вставить кусок, например, на каком-то внешнем языке.
ps
формочки - это совсем не то.
Про формочки это я так - чтоб знали
![](/images/graemlins/wink.gif)
А вообще , если очень захотеть , и на прологе можно декларативно писать. Я именно так и писал, когда делал практикум.Хотя некоторые алгоритмические решения на прологе реализовать куда быстрее , но от этого они проще не становятся.
Она работает неделю, другую.
Ты думаешь, что она повисла, останавливаешь.
Долго думаешь, в чём дело, вносишь какие-то исправления. Запускаешь.
Программа работает одну неделю, другую.
И так далее.
Через несколько таких заходов ты наконец может быть и задумаешься,
существует ли оно, решение, вообще.
Но никакой поддержки от ВМ ты всё равно не дождёшься ---
будешь закатывать солнце вручную.
---
...Я работаю антинаучным аферистом...
Вот представляешь, пишешь ты огромадную программу на своих любимых приплюсях, запускаешь её.Я думаю, ты недооцениваешь интеллектуальные способности Даркгрея =)
Она работает неделю, другую.
Ты думаешь, что она повисла, останавливаешь.
Правильная прога на произвольном языке периодически пишет что-нибудь куда-нибудь. 34,788% complete, например.
Возможно ли написать такую правильную прогу на прологе, вот в чём вопрос!
допустим, так все и происходит.
далее я понимаю - что идеальное решение не проходит, и соглашаюсь на "достаточно хорошее" решение, например, вместо поиска по всему графу решений делаю рандомный поиск почти лучшего решения по части графа решений и т.д.
в прологе:
во-первых, очень тяжело диагностировать вот такие узкие места
во-вторых, очень муторно вставлять такие частичные решения
> что-нибудь куда-нибудь. 34,788% complete, например.
Если ты не знаешь, сколько до решения, ты не сможешь написать "% сделано",
"(кило)метров пройдено" --- в лучшем случае.
"День 13-й, я работаю."
---
...Я работаю антинаучным аферистом...
метод такой - я значительно больше всех жру ресурсов.
А оно надо?
"Machine cycles are cheap."
> далее я понимаю - что идеальное решение не проходит,
> и соглашаюсь на "достаточно хорошее" решение,
Ввёл ограничение --- задача упростилась.
Что сложного?
Ну да, разумеется, описать ограничение сложнее, чем тыкаться случайно во все стороны.
---
...Я работаю антинаучным аферистом...
ню-ню, попробуй описать на прологе, что надо обходить дерево решений в ширину random-но и не дольше, чем 5 минут.
Скажи, а если тебе ОС не предоставит часов, ты как время замерять будешь?
---
...Я работаю антинаучным аферистом...
почему нет?
задача пролога облегчать процесс принятия решения - у меня такое решение.
> Скажи, а если тебе ОС не предоставит часов, ты как время замерять будешь?
никак не буду замерять, пусть на такой ОС прога тормозит и честно ищет решение
Может ли твой си проводить все сложения с насыщением, а не в дополнении до двух?
С 21 разрядом?
Как мне это сделать?
>> Скажи, а если тебе ОС не предоставит часов, ты как время замерять будешь?
> никак не буду замерять
Вот.
Пусть этим занимается ОС.
---
...Я работаю антинаучным аферистом...
int MyAdd(int a, int b)
{
int res = (a + b);
if (res < MyAdd_MinValue)
return MyAdd_MinValue;
if (res > MyAdd_MaxValue)
return MyAdd_MaxValue;
}
> Пусть этим занимается ОС.
так пусть занимается, кто спорит.
вопрос-то в том, как это прологу объяснить...
int x = y + z;
он тоже проведёт насыщение?
Кстати, ты даже не в курсе, как работает стандартный, дополнительный до двух си.
Никогда не видел "warning: comparison is always true/false due to..."?
>> Пусть этим занимается ОС.
> так пусть занимается, кто спорит.
> вопрос-то в том, как это прологу объяснить...
Сначала со своими недоприплюснутыми сями разберись.
---
...Я работаю антинаучным аферистом...
А если я напишу:А если ты будешь писать вместо y+z - MyAdd(y,z)?
code:-------------------------------------------------------------------------------- int x = y + z;--------------------------------------------------------------------------------
он тоже проведёт насыщение?
Никогда не видел "warning: comparison is always true/false due to..."?Где оно тут может возникнуть?
А зачем мне вместо "+" писать какое-то "sum", если принято писать "+"?
---
...Я работаю антинаучным аферистом...
Ладно, вместо int - MyInt (для доприплюснутых сей).
По-твоему, из-за того, что насильники неспособны решать такие простые задачи,
я должен во всех исходниках поменять "int" на "MyInt"?
А если слово "MyInt" уже используется, тогда как?
---
...Я работаю антинаучным аферистом...
насильники неспособны решать такие простые задачиСпособны.
я должен во всех исходниках поменять "int" на "MyInt"?Почему поменять?
Ты уже написал какие-то исходники?
Поздравляю - ты написал их неправильно.
А если слово "MyInt" уже используется, тогда как?Надо думать, когда начинаешь писать, а не когда у тебя есть уже готовый неработающий код.
А если способны, то где рецепт?
>> я должен во всех исходниках поменять "int" на "MyInt"?
> Почему поменять?
А как, по-твоему, называется целый тип?
> Поздравляю - ты написал их неправильно.
С какой стати?
>> А если слово "MyInt" уже используется, тогда как?
> Надо думать, когда начинаешь писать, а не когда у тебя есть уже готовый неработающий код.
У меня есть готовый работающий код для архитектуры с вот такими целыми.
---
...Я работаю антинаучным аферистом...
А если способны, то где рецепт?Рецепт тебе уже дан.
А как, по-твоему, называется целый тип?Низкоуровневый целый - int.
Тот целый, который тебе нужен - так, как тебе больше понравится.
С какой стати?С такой, что работает неправильно.
У меня есть готовый работающий код для архитектуры с вот такими целыми.Его тебе выдал генератор кода? Или всё-таки этот код кем-то написан?
> Рецепт тебе уже дан.
Это не рецепт, а подмена задачи.
Задача стоит именно так: объяснить си, что int у него заданной разрядности,
а сложение --- с заданными свойствами.
>> С какой стати?
> С такой, что работает неправильно.
Объявлять белое чёрным --- это, очевидно, единственное, на что способны насильники.
>> У меня есть готовый работающий код для архитектуры с вот такими целыми.
> Его тебе выдал генератор кода?
> Или всё-таки этот код кем-то написан?
Не только написан, но ещё и отработан.
---
...Я работаю антинаучным аферистом...
Задача стоит именно так: объяснить си, что int у него заданной разрядности,Объясни это моему x86-процессору.
а сложение --- с заданными свойствами.
Объявлять белое чёрным --- это, очевидно, единственное, на что способны насильники.То есть, работает правильно?
В чём тогда проблема?
Не только написан, но ещё и отработан.Как же он отработан, если он не удовлетворяет твоим требованиям?
Авторам кода - незачёт, они слишком сильно привязаны к низкому уровню - по крайней мере, использованием int.
>> а сложение --- с заданными свойствами.
> Объясни это моему x86-процессору.
Си настолько низкоуровневый, что абстракцией там и не пахнет?
>> Объявлять белое чёрным --- это, очевидно, единственное, на что способны насильники.
> То есть, работает правильно?
> В чём тогда проблема?
Отмотай назад, если не понял.
>> Не только написан, но ещё и отработан.
> Как же он отработан?..
Работает надёжно.
> Авторам кода - незачёт, они слишком сильно привязаны
> к низкому уровню - по крайней мере, использованием int.
_Насильникам_ незачёт.
Автор-то как раз вполне способен и целый тип переопределить, и сложение.
---
...Я работаю антинаучным аферистом...
Си настолько низкоуровневый, что абстракцией там и не пахнет?Пахнет.
Но если авторы кода решили не использовать абстракции, а писать нанизком уровне - это их решение и их проблемы.
Работает надёжно.В чём тогда проблема?
Автор-то как раз вполне способен и целый тип переопределить, и сложение.Так почему не переопределил?
Си настолько низкоуровневый, что абстракцией там и не пахнет?Си - довольно-таки низкоуровневый язык. При этом очень гибкий и удобный. Например, на нём написан горячо любимый тобой guile. Не было бы Си, guile был бы написан на другом низкоуровневом (или близком к таковому) языке.
Автор-то как раз вполне способен и целый тип переопределить, и сложение.
Если автор на это способен, пусть это и делает. Пишет Int, вместо int. Или он способен переопределить, а написать - вовсе не способен?
> а писать нанизком уровне - это их решение и их проблемы.
То есть, если я пишу "int" --- это всегда машинный тип, так?
Получается, что никакой абстракции нет и в помине,
поскольку я всегда вижу машинное представление
и никак не могу запретить пути обхода.
---
...Я работаю антинаучным аферистом...
То есть, если я пишу "int" --- это всегда машинный тип, так?Так.
Получается, что никакой абстракции нет и в помине,Если тебе разрешают пользоваться машинными представлениями, это не значит, что абстракций нет.
Если он такой гибкий, то где решение поставленной задачи?
И если он такой удобный, то почему он идёт в паре с уродским cpp?
---
...Я работаю антинаучным аферистом...
Да, но если не предоставляют средств запретить использование машинных представлений, то абстракций --- нет.
Ибо что это за абстракция, где всегда возможен незаметный низкоуровневый хак.
---
...Я работаю антинаучным аферистом...
Если он такой гибкий, то где решение поставленной задачи?Тебе уже сказали, где. И ответили, что если тебе не нравится - это исключительно твоя проблема. А никак не всех окружающих людей, которых решение устраивает.
если он такой удобный, то почему он идёт в паре с уродским cpp?
С уродским чем?
Ибо что это за абстракция, где всегда возможен незаметный низкоуровневый хак.Кто тут говорил о насильниках? По мне так изнасилование - это когда не дают чего-то сделать.
Тебе уже объяснили, что это не решение поставленной задачи.
>> если он такой удобный, то почему он идёт в паре с уродским cpp?
> С уродским чем?
То есть, ты тоже про си не в курсе.
Записали.
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."
Ибо что это за абстракция, где всегда возможен незаметный низкоуровневый хак.Твой любимый ЯП не умеет вызывать внешние программы?
У насильников превратные понятия не только о читаемости и модульности, но ещё и об абстракции.
---
...Я работаю антинаучным аферистом...
Тебе уже объяснили, что это не решение поставленной задачи.Тебе уже сказали, что это решение. И ответили, что если тебе не нравится - это исключительно твоя проблема. А никак не всех окружающих людей, которых решение устраивает.
Кстати, любая программа, написанная тобою на schema для guile, выражается в итоге в программу на Си. Просто потому, что guile написан на Си. Кстати, я так и не дождался от тебя решения с сортировкой внутри ДФ. И ещё, как такой фанат schema, как ты, мог допустить целых две ошибки при решении настолько простой задачи, как упрощение КНФ? Что-то мне начинает казаться, что ФЯ вовсе не спасают от глупых ошибок; а, наоборот, настолько сложны, что даже опытные программисты не могут с их помощью решить простенькую задачку без ошибок.
То есть, ты тоже про си не в курсе.
Записали.
У тебя вообще всё с мозгами-то в порядке? Кто и чего записал?
![](/images/graemlins/grin.gif)
У насильников превратные понятия не только о читаемости и модульности, но ещё и об абстракции.Вопрос, сколько людей, с которыми ты споришь в программинге - насильники? Просто интересно, сколько в мире нормальных людей типа тебя, а сколько насильников, типа меня. И у какого процента программистов нормальные понятия о читаемости, модульности и абстракции?
Кстати, когда тебя в дестве спрашивали "сколько у тебя в детском садике хороших девочек и мальчиков?", ты случаем не отвечал "один - я".
Прикинь, это нельзя сделать настолько незаметно, как в сях.
И хотя никто не мешает сделать глобальный низкоуровневый хак,
разрешающий такой беспредел, этого никто не делает.
---
...Я работаю антинаучным аферистом...
Просто интересно, сколько в мире нормальных людей типа тебя, а сколько насильников, типа меня.Каждый человек считает, что первых - меньшинство, а вторых, соответственно - большинство (зачастую - подавляющее).
Кстати, когда тебя в дестве спрашивали "сколько у тебя в детском садике хороших девочек и мальчиков?", ты случаем не отвечал "один - я".Тебе в детстве задавали такие вопросы?
И хотя никто не мешает сделать глобальный низкоуровневый хак,То, что никто этого не делал, не означает, что никто этого не сделает.
разрешающий такой беспредел, этого никто не делает.
> Твой любимый ЯП не умеет вызывать внешние программы?Зато очень незаметно можно подменить все + на -, разве нет? И чем это лучше?
Прикинь, это нельзя сделать настолько незаметно, как в сях.
Ты и в голове что-ли тоже думаешь на прологе?
и тоже как и пролог не можешь понять такой простой вещи, что если не получается получить идеальное решение, то можно просто воспользоваться "достаточно хорошим" решением?
ps
для данной задачи с int-ами достаточно хорошим решением будет сделать через define замену int-а на MyInt
"Я не тормоз."
Условие:
"Может ли твой си проводить _все_ сложения с насыщением, а не в дополнении до двух?
С 21 разрядом?"
Программирование на сях повреждает мозг настолько,
что русское слово "все" перестаёт восприниматься полностью?
> Кстати, я так и не дождался
Уже отвечено.
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."
для данной задачи с int-ами достаточно хорошим решением будет сделать через define замену int-а на MyIntА если в коде, который ты подключаешь - полно define и undef для этого самого int?
>> разрешающий такой беспредел, этого никто не делает.
> То, что никто этого не делал, не означает, что никто этого не сделает.
Ну и огребёт по полной!
Только это будет уже совсем другой язык.
В конечном счёте.
---
...Я работаю антинаучным аферистом...
Условие:Тебе ответили - складывай всё с помощью int NSum double FSum и так далее.
"Может ли твой си проводить _все_ сложения с насыщением, а не в дополнении до двух?
С 21 разрядом?"
Программирование на сях повреждает мозг настолько,
что русское слово "все" перестаёт восприниматься полностью?
Уже отвечено.
На что ты ответил? Что типа заказчика устраивает? Это отмазки. Покажи мне, пожалуйста, код с сортировкой! Чего тебе стоит - ведь на схеме так просто работать со списками! Почему эта фигня не была устранена так же легко за пять минут?
На что ещё ответил? Как ты сделал ДВЕ ошибки на ФЯ при решении очень простой задачи? Почему ты сам не нашёл эти ошибки? Почему ты при споре даже не попытался найти ошибки, например, в программах от меня или DarkGraя? Не вижу ответа. Не вижу коментариев к замечанию, что ФЯ вовсе не спасают от глупых ошибок; а, наоборот, настолько сложны, что даже опытные программисты не могут с их помощью решить простенькую задачку без ошибок.
> И чем это лучше?
Тем, что твой код универсален: он применим ко всему,
на чём определена операция, совпадающая по свойствам,
используемым тобой, с операцией "+".
Вот это и называется, если ты не знал, абстракцией.
---
"Расширь своё сознание!"
Тем, что твой код универсален: он применим ко всему,Этот пост был не про абстракцию, а про возможность изнасилования всего проекта путём написания с первого взгляда незаметной конструкции.
на чём определена операция, совпадающая по свойствам,
используемым тобой, с операцией "+".
Вот это и называется, если ты не знал, абстракцией.
это будет те самые одна тысячная процента, когда достаточно хорошее решение не сработало.
ps
напомню - что программист - это тот кто, решает то, что нужно - так как можно, а не наоборот.
>> С 21 разрядом?"
>> Программирование на сях повреждает мозг настолько,
>> что русское слово "все" перестаёт восприниматься полностью?
> Тебе ответили - складывай всё с помощью int NSum double FSum и так далее.
"Я не тормоз?"
"int x = y + z;" --- вот этот код должен работать с 21-разрядными целыми.
Это --- _условие_задачи_, если ты всё ещё не понял.
Ты не только неспособен решать задачи, ты ещё и неспособен понимать условия.
Действительно, программирование на сях повреждает мозг.
> На что ещё ответил?
На вопрос.
> Как ты сделал ДВЕ ошибки на ФЯ при решении очень простой задачи?
> Почему ты сам не нашёл эти ошибки?
Потому что меня не заботят эти ошибки, ибо код нужен не мне.
> Почему ты при споре даже не попытался найти ошибки,
> например, в программах от меня или DarkGraя?
Потому что, в отличие от насильников, я не пытаюсь читать
совершенно нечитаемый код, если только мне это не нужно.
---
...Я работаю антинаучным аферистом...
> Это --- _условие_задачи_, если ты всё ещё не понял.
где в условии задачи написано, что решением этой задачи не является следующее?:
1. распарсить приведенный код
2. все типы int заменить на MyInt
3. сгенерить новый код
4. собрать программу
ps
причем в качестве исполнителя - может выступать, как машина, так и человек.
Человека не рассматриваем.
Разве что ты не пойдёшь ко мне в негры.
> 1. распарсить приведенный код
> 2. все типы int заменить на MyInt
> 3. сгенерить новый код
Офигеть!
А теперь вернись к тому, с чего всё это началось, и подумай, что ты сделал не так.
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."
"int x = y + z;" --- вот этот код должен работать с 21-разрядными целыми.
Это --- _условие_задачи_, если ты всё ещё не понял.
Если ты всё ещё не понял, то тебе для решения этой задачи сказали переписать все "int x = y + z;" на "int x = Sum(y, z);"
> На что ещё ответил?
На вопрос.
Ok, верно ли что ты не можешь быстро поправить свой код на schema так, чтобы ДФы были с сортировкой? Чего тебе стоит - ведь на схеме так просто работать со списками, это такой простой язык. Почему эта фигня, которая могла бы быть аргументом в нашем споре, до сих пор не сделана за 5-10 минут?
> Как ты сделал ДВЕ ошибки на ФЯ при решении очень простой задачи?
> Почему ты сам не нашёл эти ошибки?
Потому что меня не заботят эти ошибки, ибо код нужен не мне.
Эээ, товарищ. Вы взялись помогать человеку решить какую-то задачу и сделали это с ошибками. Почему же такой простой, удобный и спасающий от хаков язык не был гарантом правильного решения? Задача-то простая. Насильники решили её на С++ и C#, да ещё и без ошибок. Всё ещё не вижу коментариев к замечанию, что ФЯ вовсе не спасают от глупых ошибок; а, наоборот, настолько сложны, что даже опытные программисты не могут с их помощью решить простенькую задачку без ошибок. (Что же тогда говорить про сложные задачи...)
Потому что, в отличие от насильников, я не пытаюсь читатьЛадно, больше при споре с тобой не буду читать твой совершенно нечитаемый код. Надеюсь, что тогда я перестану быть насильником.
совершенно нечитаемый код, если только мне это не нужно.
PS Да, приучись уже отвечать на все вопросы, а не только на часть. Уже надоело, что ты льёшь воду без дела и не можешь чётко и полностью защищать свои позиции.
"int x = y + z;" --- вот этот код должен работать с 21-разрядными целыми.Тебе надо, чтобы код работал не так, как он должен работать?
Можно ли это сделать на твоём любимом ПЯ?
Как ты вообще хочешь это сделать?
> random-но и не дольше, чем 5 минут
а на более модном языке, например XQuery, это как описывается?
никак, в xquery нет деревьев решений
>> Это --- _условие_задачи_, если ты всё ещё не понял.
> Если ты всё ещё не понял, то тебе для решения этой задачи
> сказали переписать все "int x = y + z;" на "int x = Sum(y, z);"
Пойдёшь ко мне в негры?
> Ok, верно ли
Нет.
> Чего тебе стоит
Времени.
> Почему эта фигня, которая могла бы быть аргументом
> в нашем споре, до сих пор не сделана за 5-10 минут?
Потому что это займёт время: в отличие от тебя я не считаю,
что нечитаемый код является хорошим.
> Эээ, товарищ. Вы взялись помогать человеку решить какую-то задачу
Я и помог.
А писать очередную "Максиму" я не подряжался.
> Насильники решили её на С++ и C#, да ещё и без ошибок.
Нечитаемо.
Поэтому не стоит рассматривать их решения.
> PS Да, приучись уже отвечать на все вопросы, а не только на часть.
Я отвечаю на все вопросы.
Если ты не понимаешь, как из ответа на один вопрос
естественно проистекает ответ на многие последующие,
это твои личные трудности.
> Уже надоело, что ты льёшь воду без дела
> и не можешь чётко и полностью защищать свои позиции.
Мне куда проще не защищать некоторые утверждения,
чем объяснять, что внешний преобразователь программ
ну никаким боком не относится к языку.
Особенно, если иметь в виду, что отдельные оппоненты
не понимают даже постановок задач и очевидных фактов.
---
"...Мелочи меня не интересуют."
далее я понимаю - что идеальное решение не проходит, и соглашаюсь на "достаточно хорошее" решение, например, вместо поиска по всему графу решений делаю рандомный поиск почти лучшего решения по части графа решений и т.д.например, программа на твоём любимом языке, решающая задачу о расстановке N ферзей, не нашла решения за день
как ты оценишь, имеет ли смысл ждать ещё день, или может:
* поискать баг в программе,
* решить, что нужно обходить только часть дерева (какую?)
* или задача в такой формулировке неподъёмна, и надо поставить её по-другому,
и чем твой любимый язык лучше пролога в этом отношении?
ну не надо, если join сделать, тут же появляются деревья, а если с условием, то и отсечения
аналогичный вопрос про sql
а разве вопрос должен стоять не так "чем пролог лучше моего любимого языка?"?
или вернее так "Что такого хорошего предлагает пролог, что окупит отказ от моего любимого языка?"
деревья есть, нет деревьев решений.
В своей области - более простой и понятный код, очевидно.
куда ж они денутся, если ту же самую задачу запрограммировать?
тем, что позволяет быстро найти ответ на вопросы:
1. какая часть программы сожрала такую кучу времени?
2. какая примерно размерность решаемой задачи?
3. какая часть этой задачи решается за n-времени?
4. позволяет в произвольное место вставить доп. эвристику.
и т.д.
> Ok, верно лиВсё ясно, просто ты из тех людей, которые не могут подтвердить свои слова фактами. Ты сказал "нет", но подтвердить это не можешь. Пустослов или, выражаясь некультурно, пиздобол. (Впрочем, я открыл Америку...) Думаю, что нормальный программист на ФЯ уже давно смог бы написать и предъявить код, учитывая, сколько времени ты тратишь на флуд на форуме. Можешь не писать тут отмазок, ты пиздобол ровно до тех пор, пока не предъявишь работающий код с сортировкой ДФ.
Нет.
> Чего тебе стоит
Времени.
Потому что это займёт время: в отличие от тебя я не считаю,
что нечитаемый код является хорошим.
Я уже написал, что тот твой код был абсолютно нечитаем. Я поглядел туториалы по schema, они были более понятны, чем твои излияния в соседнем топике. То, что ты говоришь "нечитаемо" для меня абсолютно ничего в этом случае не значит. Это субъективно, всё равно что утверждать, что огурцы на вкус - полное гавно. Кажется, эта тема была уже обмусолена в соседнем топике. Поэтому я буду игнорировать все замечания вида "нечитаемо", "неабстрактно", "немодульно" и т.п.
> Эээ, товарищ. Вы взялись помогать человеку решить какую-то задачу
Я и помог.
То есть решение с ошибками - это помощь? Это многое говорит о качестве производимого тобою софта...
Если ты не понимаешь, как из ответа на один вопрос
естественно проистекает ответ на многие последующие,
это твои личные трудности.
Если ты не можешь что-то кому-то объяснить - это вовсе не проблемы того, кому ты пытаешься что-то объяснить. Иначе это подход а-ля "я дартаньян, а все вокруг - пидарасы". Если так, то см. мой пост пенартуру2.
что это за простой и понятный код - если на прологе нельзя даже написать, что вырожденный случай - это частный случай общего подхода.
1. какая часть программы сожрала такую кучу времени?как ты собрался это оценивать для задачи перебора с отсечениями?
2. какая примерно размерность решаемой задачи?
3. какая часть этой задачи решается за n-времени?
4. позволяет в произвольное место вставить доп. эвристику.с чего ты взял, что в прологе это нельзя?
через экстраполяцию, и примении такой-то мате.. математики.
см. хотя бы ремарку про вырожденные случаи.
Иначе это подход а-ля "я дартаньян, а все вокруг - пидарасы".Если ты не согласен хотя бы с принципом такого подхода - ты болен.
обошли мы 10^8 узлов дерева
сколько ещё осталось?
> и примении такой-то мате.. математики
а что она знает про задачу расстановки ферзей?
на логических языках имхо как раз и надо писать переборы, для которых ответы на эти вопросы неизвестны
> сколько ещё осталось?
мало информации
обычно еще есть информация: средний процент отсечений и общая размерность задачи (без отсечений)
success story для большого проекта привести можешь?
ничего не знает.
но зато она знает про оценку сложности, ряды, сходимость и т.д.
вблизи решения он предположительно может быть совсем другим
так что, если мы ещё не приблизились к решению, процент ничего не даст
например, если твой поисковик обходит дерево файловой системы, проиндексировал только часть каталога films, а до каталога windows ещё не дошёл, то как оценить прогресс?
> общая размерность задачи (без отсечений)
в расстановке ферзей - N! или N^N, а как это поможет?
в обходе файловой системы - ну что-то вроде размера раздела, делённого на минимальный раздел одной записи в каталоге, а как это поможет?
там даже неизвестно, совпадают ли P и NP
> ряды, сходимость и т.д.
а это вообще не в кассу
> так что, если мы ещё не приблизились к решению, процент ничего не даст
значит все плохо - и наше предположение было неверным - и что?
> например, если твой поисковик обходит дерево файловой системы, проиндексировал только часть каталога films, а до каталога windows ещё не дошёл, то как оценить прогресс?
по среднему кол-ву подкаталогов и по средней глубине.
> в расстановке ферзей - N! или N^N, а как это поможет?
в расстановке ферзей - поможет, потому что задача "равномерная".
соответственно после нескольких итераций - будет примерно понятно, как меняется кол-во отсечений от кол-ва итераций.
> в обходе файловой системы - ну что-то вроде размера раздела, делённого на минимальный раздел одной записи в каталоге, а как это поможет?
никак - дальше что?
вот тут что-то есть про это, rtfm типа
http://gnu-prolog.inria.fr/manual/manual063.html
> и не дольше, чем 5 минут
это можно сделать внешним таймером, или внутренними проверками, как впрочем и на императивном языке
> а это вообще не в кассу
а как по твоему считаются сложности задач?
как раз через ряды и их сходимость они и решаются.
Я тоже смог бы, но уже давно решил, что не буду принципиально, о чём и написал.
> Это субъективно
Пойди и найди ссылку на "Psychological Review", где чётко и ясно показано,
что субъективно, а что объективно.
Если тебя не обучили тому, что есть субъективное, а что объективное,
то возьми и прочитай об этом самостоятельно.
> То есть решение с ошибками - это помощь?
Человек остался удовлетворён, а значит твоё мнение выеденного яйца не стоит.
> Это многое говорит о качестве производимого тобою софта...
Это ничего не говорит.
Равно как и набросок ничего не говорит о том, что из него сделают в дальнейшем.
> Если ты не можешь что-то кому-то объяснить - это вовсе не проблемы того,
> кому ты пытаешься что-то объяснить.
Я не подряжался что-либо тебе объяснять, а следовательно
и не обязан разжёвывать до той степени, когда ты окажешься ---
наконец-то-
"Юношеству занятий масса."
ну так ты не знаешь, верно оно или нет
так будешь ждать ещё день, или нет?
> расстановке ферзей - поможет, потому что задача "равномерная"
откуда знаешь?
> так будешь ждать ещё день, или нет?
не знаю, зависит от контекста.
> откуда знаешь?
экстраполируется на основе нескольких первых итераций.
в интересных случаях - никак (кроме тестовых прогонов)
специально не искал
вот случайно нашлось (по словам prolog time constrained): http://www.pdc.dk/uk/aviation-uk/airlines.htm
так про вырожденные случай - что-нибудь скажешь?
что с ним?
и что круг тоже поддерживает операцию "дай оси симметрии".
я не сабж, но наверное что-то вроде
square(X) :- ellipse(X axes(X, Y, Y)
> и что круг тоже поддерживает операцию "дай оси симметрии"
что такое операция?
а квадраты здесь причем?
![](/images/graemlins/smile.gif)
> что такое операция?
функция, отображение и т.д.
ps
тест на то, что ты дал правильное описание эллипса и круга:
при решении задачи "повернуть имеющиеся фигуры так, чтобы они были симметричны относительно осей координат":
1. описания круга и эллипса не должны корректироваться
2. не должно быть необходимым рассматривать отдельно вариант круга
в прологе есть такие понятия?
> 1. описания круга и эллипса не должны корректироваться
не настолько знаком с прологом
зато, как мы ранее выясняли, в модных языках так (тоже) не бывает
но как конкретно в прологе с этим - не в курсе
хреново там с добавлениями фактов
очень и очень хреново.
как и C# и SQL
ellipse(X) :- circle(X)
axes(X, Y, Y) :- circle(X diameter(X, Y)
это что круг - всегда эллипс, и оси всегда есть
а поворот длину осей вообще не тронет, будет оперировать с углами:
transform(X1, X2) :- ellipse(X1 ellipse(X2 axes(X1, Y, Z axes(X2, Y, Z angle(X2, A right_angle(A)
интерпретатор должен вывести, что
circle(C) => transform(C, C)
если какой-то конкретный интерпретатор пролога это не осилит, то может есть другой, который справится
как и в случае SQL
Тем, что твой код универсален: он применим ко всему,Не хочу тебя расстраивать, но код "int a = b + c;" на различных типах данных и реализациях сложения будет выдавать разные ответы. Ну, там, если int это bit, а + это or, то 1 + 1 = 1.
на чём определена операция, совпадающая по свойствам,
используемым тобой, с операцией "+".
Вот это и называется, если ты не знал, абстракцией.
Поэтому "абстрактный" алгоритм, использующий "абстрактную" операцию сложения "абстрактных" интов как правило будет совершенно бессмысленным. Полная Абстрактность - это довольно опасная иллюзия.
Далее, если у тебя архитектура с 21-битным словом, то компилятор С под эту архитектуру наверняка будет определять инт как 21-битное слово. Что, кстати, на мой взгляд довольно плохо, так как существующий код будет компилиться без ошибок, но может работать неправильно. В этом смысле языки, в которых ясно сказано, что int - это 32битное знаковое целое с дополняющей записью отрицательных чисел гораздо более надёжны, хотя и менее эффективны на извращённых архитектурах.
> уже давно смог бы написать и предъявить кодПонятно, ты просто не можешь это написать. Пустой теоретик.
Я тоже смог бы, но уже давно решил, что не буду принципиально, о чём и написал.
Пойди и найди ссылку на "Psychological Review", где чётко и ясно показано,
что субъективно, а что объективно.
Если тебя не обучили тому, что есть субъективное, а что объективное,
то возьми и прочитай об этом самостоятельно.
Вообще не ясно, к чему ты это написал. Если ТВОЁ и только ТВОЁ мнение объективно, то это ты не понимаешь разницы между этими понятиями. На этом закончим разговор о "пределах читабельности" и вернёмся к земным так сказать темам.
> То есть решение с ошибками - это помощь?Ещё раз. Вопрос был: решение с ошибками - это помощь? Или может ты будешь теперь утверждать, что решил задачу сразу без ошибок?
Человек остался удовлетворён, а значит твоё мнение выеденного яйца не стоит.
> Это многое говорит о качестве производимого тобою софта...Нет, это как раз о многом говорит. Ты умеешь теоретизировать и очень сильно любишь выражаться на одному тебе понятном языке. (Тебя хоть по-человечески учили выражаться?) При этом утверждаешь, что твой и только твой код правильно отформатирован и не перекрывает пределы читаемости.
Это ничего не говорит.
Равно как и набросок ничего не говорит о том, что из него сделают в дальнейшем.
Я не подряжался что-либо тебе объяснять, а следовательно
и не обязан разжёвывать до той степени, когда ты окажешься ---
наконец-то!--- способен употребить.
А мне уже не надо ничего объяснять. Всё уже видно из якобы решённой тобою задачи. Ты много болтал, а выучить как следует тему на практике так и не удосужился. Когда дело доходит до практики - ты делаешь кучу ошибок и пассуешь перед простыми задачами. На этом думаю можно закончить наш спор, пока ты не научишься писать программы.
Не понятно --- отматывай по ссылкам и перечитывай.
> Ещё раз. Вопрос был: решение с ошибками - это помощь?
Да, и это очевидно.
> При этом утверждаешь, что твой и только твой код правильно
> отформатирован и не перекрывает пределы читаемости.
Форматирование не произвольно, и пределы читаемости не перекрывает.
См. ссылку на "Psychol. Rev."
> Когда дело доходит до практики
Когда дело доходит до практики, я, в отличие от тебя, умею читать.
Задача стояла --- побыстрее.
Твоего кода там не было, равно как не было вообще других вариантов.
Постановщик остался удовлетворён, так что всё в порядке.
В отличие от тебя, я задачу --- исходную, а не следующую --- решил.
---
...Я работаю...
Не понятно --- отматывай по ссылкам и перечитывай.
Да иди ты на хер, буду я чего-то вынюхивать среди твоих задрипанных ботанских высказываний. Тебя понять нереально, и это твои проблемы.
> Ещё раз. Вопрос был: решение с ошибками - это помощь?Так же, как очевидно и то, что это некачественная помощь.
Да, и это очевидно.
Форматирование не произвольно, и пределы читаемости не перекрывает.Всем офисом до сих пор смеёмся. Ф цытаты.
Когда дело доходит до практики, я, в отличие от тебя, умею читать.Да, ты умеешь читать. А вот писать не умеешь. Причём в обоих смыслах: ни по-русски, ни программы. На этом радостном утверждении окончим этот бесполезный спор.
Советую тебе где-нибудь полечить психику, чтобы люди вокруг могли тебя понимать, могли с тобой общаться, и чтобы тебя избавили от твоего заскорузлого комплекса какой-то особенной неполноценности.
"Быстро, качественно, дёшево."
Качественной помощи никто не обещал.
> Да, ты умеешь читать. А вот писать не умеешь.
> Причём в обоих смыслах: ни по-русски, ни программы.
Ты у нас умеешь программы писать.
Что-то от тебя даже равнозначной читаемости никто не добился.
> На этом радостном утверждении окончим этот бесполезный спор.
Разумеется, бесполезно спорить с человеком, который не знает
элементарнейших вещей, навроде модульности.
> Советую тебе где-нибудь полечить психику
Очередной врач?
Да ты даже в своей специализации не разбираешься, а уже диагнозы лезешь ставить.
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."
> Так же, как очевидно и то, что это некачественная помощь.99% людей, которые отвечают в этом разделе помогают качественно. Ты к ним не относишься.
"Быстро, качественно, дёшево."
Качественной помощи никто не обещал.
> Да, ты умеешь читать. А вот писать не умеешь.
> Причём в обоих смыслах: ни по-русски, ни программы.
Ты у нас умеешь программы писать.
Что-то от тебя даже равнозначной читаемости никто не добился.
Я, в отличие от тебя, писать программы умею. Не спорю, есть те, кто делает это лучше. Но, увы - это не ты. Опять же, какой-то там читабельности не добился только один человек - ты. И это, как ни печально, твои личные проблемы. Почему твои? Да потому, что ты даже не потрудился что-то прочитать или понять, а сразу начал плакаться, что какие-то там "пределы читаемости перекрыты". И ты всегда игнорируешь все мыслимые и немыслимые аргументы других людей, всё время рассуждая о чём-то своём. Надоело тебя убеждать в том, что каждый язык для своей задачи.
> На этом радостном утверждении окончим этот бесполезный спор.
Разумеется, бесполезно спорить с человеком, который не знает
элементарнейших вещей, навроде модульности.
Нет, бесполезно спорить с бараном, который говорит на своём языке и никого не слушает. Речь уже давно не о модульностях.
> Советую тебе где-нибудь полечить психикуНе очередной, но уже давно присылал ссылки на твои посты знакомым с психфака. Двое уже выпускники, могу дать их аськи, пообщаешься. Ребята неплохие.
Очередной врач?
Оставить комментарий
prusakov
как впечатление?