Re[17]: Принцип подстановки Барбары Лисков
От: IT Россия linq2db.com
Дата: 04.01.07 21:56
Оценка:
Здравствуйте, IB, Вы писали:

IB>Так проблема была в том, что я назвал это "контракт"? Ок, слово "спецификация" тебя устроит? )


Теплее
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[14]: Принцип подстановки Барбары Лисков
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.01.07 22:32
Оценка: 27 (1) :)
Здравствуйте, Cyberax, Вы писали:

>> C>То есть, контракты можно представить в виде набора аксиом. Для того же

>> C>sqrt у нас есть аксиома "sqrt(x)*sqrt(x)=x".
>> Согласись, что такой конктракт уже ничего общего с тем о чем говорил
>> Ваня не имеет.
C>Да, согласен.

Ну, так мы с Синклером как раз и говорим, о том, что нельзя с мерилом из ООП, где понятие контракта очень специфично, подходить к программированию в целом. Так же надо понимать, что правла вроде обсуждаемого здесь имеют смысл только если твое видение мира ограничено ООП-ом. И его опять же нельзя применять на программирование в целом. Так что если нарушение подобных правил делается не по глупости, а просто потому что люди выбрали другой концептуальный подход, то это нормально и в сущьности никаких нарушенпй нет, так как само правило уже не применимо.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: Принцип подстановки Барбары Лисков
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.01.07 22:32
Оценка:
Здравствуйте, IB, Вы писали:

IB>Здравствуйте, VladD2, Вы писали:


VD>>Ты почитай внимательно обсуждение.

IB>

IB>Контракты и интерефейсы тоже догмы той идиологии

IB>Это кто-то другой за тебя писал?

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

VD>> Я говорил о том, что применение данного принципа становится бессмысленным как только ты отходишь от приципов ООП

IB>А я говорил, что нет, по пятому кругу пойдем?

Ты говоришь совершенно бездоказательно и твои суждения рушатся на совершенно банальных вещах. К сожалению объяснить тебе ничего не удастся так как ты видел только одну сторону медали (ООП).

VD>> Иначе разговор не получится.

IB>Да он и так не очень-то.

Остльные вроде бы потихоничку пришли к консенсусу.
Автор: Cyberax
Дата: 04.01.07
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: Принцип подстановки Барбары Лисков
От: IB Австрия http://rsdn.ru
Дата: 04.01.07 22:58
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Это было сказано в ответ на твою попытку перевести разговор на обсуждение контрактов.

Я не пытался перевести разговор, я с самого начала о них говорил.

VD>Тут как раз очень хорошо было показано, что твое понимание контракта очень узко.

=)
Я формулировочку контракта специально упростил, чтобы тебе понятнее было. И в ее ширину вполне влезает все что было показано.

VD> И что в том же ФП контракты тоже есть, но они другие и их нелзя выразить средствами ООП.

Где я говорил, что контракт надо выражать средствами ООП? Я говорил совершенно обратное.

VD>К сожалению объяснить тебе ничего не удастся так как ты видел только одну сторону медали (ООП).

Влад, я устал. Давай сойдемся на том что я и ООП-то не очень знаю и покончим с этим.
Мы уже победили, просто это еще не так заметно...
Re[15]: Принцип подстановки Барбары Лисков
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 05.01.07 10:23
Оценка: 1 (1) +2
Здравствуйте, VladD2, Вы писали:

VD>Ну, так мы с Синклером как раз и говорим, о том, что нельзя с мерилом из ООП, где понятие контракта очень специфично, подходить к программированию в целом.


С ОО-мерилами обычно подходят к декомпозиции задачи. Притом, подходить так начали задолго до появления самого "ООП". Так что, по всей видимости, кое-что очень рациональное в таком подходе есть, как ни крути.

VD>Так же надо понимать, что правла вроде обсуждаемого здесь имеют смысл только если твое видение мира ограничено ООП-ом. И его опять же нельзя применять на программирование в целом.


LSP прекрасно работает начиная с того момента, когда мы определяем некие "слоты" для дальнейшего расширения системы. Совершенно не важно, как именно мы будем определим сами "слоты": как соглашения для функций (сигнатуры и требования к функциям), или для классов (интерфейсы в смысле "interface"). Когда соглашения слота будут определены, следующим шагом с большой вероятностью этот набор будет объявлен "типом", ибо так проще ссылаться на него в дальнейшем. А те внешние "штуки", которые должны будут подключаться к этому слоту — будут называться реализациями типа, или же — подтипами. Вуаля! Здравствуй, критерий допустимости подстановки Лисковой.

VD>Так что если нарушение подобных правил делается не по глупости, а просто потому что люди выбрали другой концептуальный подход, то это нормально и в сущьности никаких нарушенпй нет, так как само правило уже не применимо.


Естественно, нет необходимости блюсти LSP, если не возникает тех самых "слотов" расширения.

PS.: Ты это, бросай уже на "догмомировзгляды" ссылаться. Это всё забавно, конечно, но ощущение возникает, что читателю мозги промыть пытаются.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[13]: Принцип подстановки Барбары Лисков
От: deniok Россия  
Дата: 05.01.07 15:14
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, palm mute, Вы писали:

PM>>Понятие контрактов вполне применимо в ФП. Смущает отсутствие классов/интерфейсов? Их можно заменить модулями ML или классами типов Haskell.
PM>>Контракт в ФП — это логическое утверждение об алгебраических свойствах функции или семейства функций. Например, применив функцию reverse дважды, мы должны получить исходный список.
S>Угу. Это все здорово, но не мог бы ты применить принцип подстановки Лисков к функции reverse и заменить ее чем-то другим?
PM>> Функция сравнения, передаваемая в функцию сортировки, должна быть рефлексивной, транзитивной и антисимметричной.
S>Ну, при этом у нас нет такого понятия как "базовая рефлексивная функция", которое можно использовать как базу для наследования/субтипизации.

Ну, если вернуться к монадическим законам,

1. (return x) >>= f == f x
2. m >>= return == m
3. (m >>= f) >>= g == m >>= (\x -> f x >>= g)

то таки да, в Хаскелле любой тип, являющийся экземпляром класса Monad должен им удовлетворять. Правда это не проверяется на языковом уровне, но palm mute давал ссылки на внешние системы проверки.
Re[3]: Принцип подстановки Барбары Лисков
От: dr.Chaos Россия Украшения HandMade
Дата: 05.01.07 17:11
Оценка:
Здравствуйте, Кирилл Лебедев, Вы писали:

КЛ>Здравствуйте, LaptevVV, Вы писали:


LVV>>Обратное — неверно! Всякий будильник (производный тип) является часами (базовый тип), но не всякие часы — будильник.


КЛ>Я бы сказал несколько иначе. Существуют две функции:


КЛ>1) Измерение времени.

КЛ>2) Выдача сообщения (например, звонка) по сигналу.

КЛ>Эти функции могут быть реализованы как в одном устройстве, так и в разных. Это я к тому, что далеко не всякий будильник является или может являться часами.


Любой будильник измеряет время, он его может не показывать, это как раз комбинация тех двух устройств : измерителя и сигнала
Побеждающий других — силен,
Побеждающий себя — Могущественен.
Лао Цзы
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.