Артём Н. -> debian-russian@lists.debian.org @ Thu, 05 Jul 2012 19:56:29 +0400:
>> >> АН> Да, кстати, Пролог я не понимаю. :-( >> >> >> >> [...] >> >> >> >> АН> И на практике: будь всё так хорошо, как вы пишите, все бы уже давно >> >> АН> писали на Прологе (по крайней мере, знали бы что это такое). :-) >> >> Ну ведь ты же сам написал, что ты его не понимаешь. Думаешь, ты один >> >> его не понимаешь? >> АН> Если был он был такой хороший, его бы понимали. Потому что, за это >> АН> бы платили. :-) И этому учили. C ничуть не проще, чем Пролог. Он >> АН> просто имеет другую парадигму. "Развёрнутую" на 180. У машины >> АН> вывода есть свои недостатки, ограничения и своя область >> АН> применения. По какой-то совокупности причин, Пролог не нашёл >> АН> широкого применения (хотя к нему интерес то падал, то >> АН> возобновлялся). >> Понятность среднему хомосапиенсу, как и всякое другое качество, не >> бывает бесплатной. И отнюдь не на всех задачах оно важно. Если средний >> хомосапиенс не может понять саму задачу, то понятность ему инструмента >> для ее решения ценности не имеет. АН> Хм... И про какие задачи, которые выше понимания среднего, идёт АН> речь? Т.е. где сейчас реально используются Пролог системы? Вот это уже не вполне ко мне вопрос, я сам на Прологе не работаю. Насколько я понимаю, целевая его ниша - это задачи аналитического типа. Ответ на вопросы "что из этих данных может следовать?" >> >> Потому что правила >> >> рассуждений с этими законами правильны настолько, насколько правильна >> >> математика (если ты знаешь, что именно формулируется в теореме Геделя, >> >> то ты понимаешь это условие). >> АН> Думаю, что частично понимаю. >> АН> Пролог - аксиоматическая система. >> АН> И, следовательно, любая система, построенная в нём, - такая же. >> АН> Т.е., если "И" - аксиома Пролог, которая задаёт истинность А и Б, при >> истинности >> АН> и А, и Б, все аксиомы, заданные на её основе будут истинны в границах >> данной >> АН> системы. >> АН> Доказательство истинности этой аксиомы и непротиворечивости правил её >> АН> взаимодействия с остальными относятся к доказательству истинности и >> АН> непротиворечивости Булевой алгебры. >> АН> В данном случае, математика правильна априори. >> АН> Так? >> Последнее предложение неверно. Скажем так, мы верим, что математика >> правильна (в том смысле, что доказанный в ней результат о некоторой >> модели можно в рамках ограничения этой модели применить к реальности). >> Гедель нам доказал, что ни на что, кроме веры, мы не можем тут >> положиться даже на предмет ее внутренней непротиворечивости, не говоря >> уж о применениях к реальности. АН> Я понимаю, что Гедель показал это для формальной системы, которой АН> является математика. Но, если используется Пролог, то решается АН> практическая задача. В таком случае, математика используется АН> потому, что она работает. Т.е. предполагается, что она верна? Это АН> аксиома. :-) Очень полезно все же помнить, что предположение о правильности математики - это тоже предположение. Такое же, как предположение о том, что выполняется закон сохранения импульса. Кстати, законы рассуждений, используемые в Прологе, не эквивалентны тем, которым нас учат в школе и даже в вузе. >> >> А вот как соотносится твоя модель, >> >> выраженная в нелогических аксиомах, с реальностью - это уже не к >> >> Прологу. >> АН> Но в точности тоже самое возможно сказать и о других языках. А >> АН> тесты нужны именно для того, чтобы проверить соответствие модели и >> АН> реальности. Там тоже самое, даже такие же побочные эффекты могут >> АН> быть. И программа, на нём написанная не является правильной только >> АН> потому, что она написана на Пролог. Просто тестами надо покрывать >> АН> факты и правила, а не функции и процедуры или я не прав? >> >> В выводе - да, прав. Но надо учитывать, что большинство наших тестов >> для других языков таки работают внутри модели, а не проверяют ее >> соответствие реальности. То есть для прологовской программы не имеют >> смысла. Природа тестов для прологовской программы должна быть >> существенно иной, нежели привычно. АН> Хм... А как тест может работать не внутри модели? Программа - АН> модель. Даже, если тест получает данные извне, он всё-равно АН> работает в данной модели. Не обязательно в данной. Это существенно. Скажем, тест, который получает сигнал с реального датчика, сует его в программу, получает из программы команду на управление реальным железом, выдает ее в железо, и потом измеряет угол его поворота, например, другим датчиком, таки выходит за пределы той же модели. И его работа уже существенно ближе к реальности, чем модель, в которой написана программа. АН> Чем тут отличается Пролог от императивного языка, например? Здесь АН> я просто вижу те же самые ошибки человека: неверное задание правил АН> (неполнота, неточность или ошибочность) и неверное задание фактов. АН> Что и должны покрывать тесты. Ведь так? Так. А теперь внимание: что значит словосочетание "верное задание фактов"? Скорее всего, тестировать соответствие этого задания опять же модели не очень практично - дешевле доказать, что оно соответствует. Потому что от модели до фактов - это всего лишь перевод с одного языка на другой, причем перевод весьма формальный, тут доказательство оказывается довольно простым. Интересно проверять соответствие задания фактов реальности, считая, что набор фактов - это и есть модель. А это уже формулируется не "написать тест", а "построить тест". В железе, ага. >> ООП лучше, чем ничего, для решения задачи, в постановке которой >> структура отлавливается, но плохо. Как только структура отлавливается >> лучше - можно найти что-то лучшее, чем ООП. Вон в базах данных >> реляционная модель напрочь задавила всех предшественников, кроме >> нескольких нишевых мест, где другие модели оказались откровенно лучше. >> Потому что концепция отношения, когда ее удалось выделить на задачах >> обработки табличных данных, оказалась более специфической, а потому >> более полезной. Остатки, т.е. задачи, на которых она была хуже, в своих >> нишах сохранились - электронные таблицы, хэши и кое-как разномастные >> деревья. АН> Хм... Т.е., она так популярна именно потому, что специфична для задачи - АН> хранения данных (в большинстве случаев)? Ну, во-первых, все-таки не хранения, а обработки. Во-вторых, несколько хитрее. Реляционная модель, вернее, лежащая под ней реляционная алгебра, позволяет при формулировке задачи в рамках этой модели автоматически создать и, что существенно, соптимизировать ее решение. Эффект оказался настолько убедительным, что и немалое количество задач, к которым сама модель не шибко применима, тоже стали формулировать в ее рамках. АН> Любопытно: а для написания кода возможно выделить такую же специфическую концепцию? Вероятно, нет. Задачи существенно разнообразнее. -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/87y5myupgo....@wizzle.ran.pp.ru