[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Несколько вопросов вразброс



Артём Н. -> debian-russian@lists.debian.org  @ Wed, 04 Jul 2012 22:06:17 +0400:

 >>  АН> Да, кстати, Пролог я не понимаю. :-(
 >> 
 >> [...]
 >> 
 >>  АН> И на практике: будь всё так хорошо, как вы пишите, все бы уже давно
 >>  АН> писали на Прологе (по крайней мере, знали бы что это такое). :-)
 >> Ну ведь ты же сам написал, что ты его не понимаешь.  Думаешь, ты один
 >> его не понимаешь?
 АН> Если был он был такой хороший, его бы понимали. Потому что, за это
 АН> бы платили.  :-) И этому учили. C ничуть не проще, чем Пролог. Он
 АН> просто имеет другую парадигму. "Развёрнутую" на 180. У машины
 АН> вывода есть свои недостатки, ограничения и своя область
 АН> применения. По какой-то совокупности причин, Пролог не нашёл
 АН> широкого применения (хотя к нему интерес то падал, то
 АН> возобновлялся).

Понятность среднему хомосапиенсу, как и всякое другое качество, не
бывает бесплатной.  И отнюдь не на всех задачах оно важно.  Если средний
хомосапиенс не может понять саму задачу, то понятность ему инструмента
для ее решения ценности не имеет.

 >> Правильность программы относительно заданных условий будет определяться
 >> правильностью задания нелогических аксиом.
 АН> В смысле - "нелогических"? o.O

В смысле математической логики.  Аксиома, говорящая не о законах
рассуждения, а о предметной области.

 >> Потому что правила
 >> рассуждений с этими законами правильны настолько, насколько правильна
 >> математика (если ты знаешь, что именно формулируется в теореме Геделя,
 >> то ты понимаешь это условие).
 АН> Думаю, что частично понимаю.
 АН> Пролог - аксиоматическая система.
 АН> И, следовательно, любая система, построенная в нём, - такая же.
 АН> Т.е., если "И" - аксиома Пролог, которая задаёт истинность А и Б, при истинности
 АН> и А, и Б, все аксиомы, заданные на её основе будут истинны в границах данной
 АН> системы.
 АН> Доказательство истинности этой аксиомы и непротиворечивости правил её
 АН> взаимодействия с остальными относятся к доказательству истинности и
 АН> непротиворечивости Булевой алгебры.
 АН> В данном случае, математика правильна априори.

 АН> Так?

Последнее предложение неверно.  Скажем так, мы верим, что математика
правильна (в том смысле, что доказанный в ней результат о некоторой
модели можно в рамках ограничения этой модели применить к реальности).
Гедель нам доказал, что ни на что, кроме веры, мы не можем тут
положиться даже на предмет ее внутренней непротиворечивости, не говоря
уж о применениях к реальности.

 >> А вот как соотносится твоя модель,
 >> выраженная в нелогических аксиомах, с реальностью - это уже не к
 >> Прологу.
 АН> Но в точности тоже самое возможно сказать и о других языках.  А
 АН> тесты нужны именно для того, чтобы проверить соответствие модели и
 АН> реальности.  Там тоже самое, даже такие же побочные эффекты могут
 АН> быть.  И программа, на нём написанная не является правильной только
 АН> потому, что она написана на Пролог. Просто тестами надо покрывать
 АН> факты и правила, а не функции и процедуры или я не прав?

В выводе - да, прав.  Но надо учитывать, что большинство наших тестов
для других языков таки работают внутри модели, а не проверяют ее
соответствие реальности.  То есть для прологовской программы не имеют
смысла.  Природа тестов для прологовской программы должна быть
существенно иной, нежели привычно.

 >> Кстати, в процессе у меня сформулировался ответ про ОО.  ОО-парадигма
 >> (не обязательно, кстати, выраженная на ОО-языке) - единственная пока,
 >> похоже, парадигма, позволяющая решать задачи, _постановка_ которых
 >> _начинает появляться_ ближе к завершению стадии альфа-тестирования.
 >> Собственно, метод решения - ты выделяешь в предметной области сущности,
 >> заводишь по типу на каждую, и добавляешь поведение по мере прояснения
 >> задачи.
 >> 
 >> Если задача поставлена лучше, то обычно и парадигму можно найти получше.
 АН> Хм... Может. Но не только для этого случая применимо же..?
 АН> Т.е., вы хотите сказать, что ООП - это для "снизу-вверх"?
 АН> А для наоборот и сама по себе, разве концепция плоха? :-)

Сама по себе любая концепция - это только информационный шум.
Приближение тепловой смерти Вселенной.  А для практических применений
чем концепция унверсальнее, тем меньше полезного мы про нее можем
сказать, и тем, соответственно, меньше пользы она может принести.

ООП лучше, чем ничего, для решения задачи, в постановке которой
структура отлавливается, но плохо.  Как только структура отлавливается
лучше - можно найти что-то лучшее, чем ООП.  Вон в базах данных
реляционная модель напрочь задавила всех предшественников, кроме
нескольких нишевых мест, где другие модели оказались откровенно лучше.
Потому что концепция отношения, когда ее удалось выделить на задачах
обработки табличных данных, оказалась более специфической, а потому
более полезной.  Остатки, т.е. задачи, на которых она была хуже, в своих
нишах сохранились - электронные таблицы, хэши и кое-как разномастные
деревья.

А к "сверху вниз/снизу вверх" ООП, опять же, перпендикулярна.  Она про
другое.  Можно плохо поставленную задачу решать и сверху вниз, начиная
выделение объектов с верхнего уровня.  Так, собственно, обычно и делают
- сверху вниз выделяют объекты, а потом по вкусу, кто снизу, кто сверху,
а кто со случайного места (типа какая информация ближе лежала) строят
поведение.


Reply to: