Re[58]: ООП головного мозга
От: Sinclair Россия https://github.com/evilguest/
Дата: 05.10.11 08:51
Оценка:
Здравствуйте, Lloyd, Вы писали:
L>Хорошо, выкрутился.
L>А как будет выглядеть identity для COM-а, например? Там QueryInterface вполне может вернуть разные адреса.
L>Identity тут все еще будет применимо или же COM с ООП не совсем совместим?
В COM для проверки идентичности надо запрашивать всегда IUnknown.

Remarks

For any one object, a specific query for the IUnknown interface on any of the object's interfaces must always return the same pointer value. This enables a client to determine whether two pointers point to the same component by calling QueryInterface with IID_IUnknown and comparing the results. It is specifically not the case that queries for interfaces other than IUnknown (even the same interface through the same pointer) must return the same pointer value.

Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[58]: ООП головного мозга
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 05.10.11 08:55
Оценка:
Здравствуйте, Lloyd, Вы писали:

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


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

L>>>Опа, а откуда еще классы нарисовались?
S>>Оттуда, что пример — на C#. В терминах дотнета контракт объекта определяется классом, которому он принадлежит.

L>Хорошо, выкрутился.

L>А как будет выглядеть identity для COM-а, например? Там QueryInterface вполне может вернуть разные адреса.
И пусть возвращает разные, но это ссылки на один объект.
Как уже писал Синклер понятие "адреса" тут лишнее и только вводит в заблуждение, лучше оперировать ссылками.

Кстати QueryInterface(IUknown) для одного объекта обязан всегда возвращать один адрес.
Выделенное — требование к реализации COM.


L>Identity тут все еще будет применимо или же COM с ООП не совсем совместим?

Как видишь очень даже совместим. COM может быть не совместим с реализацией идентичности на конкретном языке. Например C++, где мы можем явно оперировать адресами.
Re[59]: ООП головного мозга
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 05.10.11 08:57
Оценка:
Здравствуйте, gandjustas, Вы писали:

S>>Это не одно и то же, т.к. адрес объекта или ссылка на объект — это не внутренний атрибут объекта и он не имеет отношения к поведению объекта в общем случае.

G>Да ну? Покажи как в C# получить ссылку отдельно от самого объекта?

В C# этого нет в языке, но при этом в дотнет есть такой тип — ссылки. Т.е. это вопрос только конкретного языка.

S>>Наоборот, получив отрицательный результат сравнения ссылок на равенство, можно делать вывод лишь о том что мы имеем разные экземпляры. Но идентичность этим самым не опровергнута.

G>Еще раз, не идентичность, а идентифицируемость. В C# для объектов reference-типов идентифицируемость по ссылке.

Здесь под идентичностью пониматся не идентичность а идентифицируемость, надо бы уже привыкнуть

G>Метафора identity — паспорт. Если два человека выглядят и ведут себя одинаково, но у них разные паспорта, то это разные люди. Если один паспорт — то это один человек.


А если паспорт заменили, то это уже будет другой человек что ли ?
Re[66]: ООП головного мозга
От: Sinclair Россия https://github.com/evilguest/
Дата: 05.10.11 09:05
Оценка:
Здравствуйте, samius, Вы писали:
G>>Для конкретного языка — следует, можешь обратный пример привести? Я таких не знаю.
S>Для C# две строки с одинаковым содержимым.
Нет, это не так. Опровергнуть идентичность этих строк можно, правда для этого придётся выйти в unsafe.
S>Придумать я могу все что угодно, что приведет к проблеме при общении со мной. Мне важно знать что я под термином понимаю именно то, что понимают другие. Для этого я открываю вики и шарюсь по книжкам.
Пока что ты понимаешь под термином идентичность совсем не то, что понимают все остальные. И пытаешься углядеть в вики скрытый смысл, которого там нет.

S>Ссылочная эквивалентность эквивалентна физической идентичности.

Нет. В частном случае COM, который тут по соседству упомянули, ссылочная эквивалентность не эквивалентна физической идентичности (даже если мы введём этот термин строгим образом).
"Физически идентичный" объект может иметь две различные ссылки — It is specifically not the case that queries for interfaces other than IUnknown (even the same interface through the same pointer) must return the same pointer value.

S>На то что для существования ООП нужно что бы идентичные объекты всегда были эквивалентны. Откуда это?

Эм-м, с точки зрения математики эквивалентностью может быть любое симметричное транзитивное рефлексивное отношение. Это понятно?
Из рефлексивности следует, что объект всегда эквивалентен сам себе.
А поскольку объекты с одинаковой идентичностью — это один и тот же объект, то объекты с одинаковой идентичностью эквивалентны.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[67]: ООП головного мозга
От: samius Япония http://sams-tricks.blogspot.com
Дата: 05.10.11 09:12
Оценка:
Здравствуйте, gandjustas, Вы писали:

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


G>>>Для конкретного языка — следует, можешь обратный пример привести? Я таких не знаю.

S>>Для C# две строки с одинаковым содержимым.

G>Они эквивалентны, но не идентичны.

Можешь это доказать? Строго, делая верифицируемые выкладки из определения. Только без догадок о том что физический адрес это атрибут объекта.

S>>Придумать я могу все что угодно, что приведет к проблеме при общении со мной. Мне важно знать что я под термином понимаю именно то, что понимают другие. Для этого я открываю вики и шарюсь по книжкам.

G>Тем не менее надо думать головой. Вики и книги пишут люди и им свойственно ошибаться.
Придумывать свои определения — это прямая дорога к непониманию.
G>Вот есть два понятия: эквивалентность и идентичность. Придумай им формальные определения (разные определения).
Я не придумываю определения, я ими пользуюсь.

S>>логическая идентичность и эквивалентность — это разные термины.

G>Чем разные?
Обозначают разные вещи.

S>>a и b структурно эквивалентны, но логически не идентичны, что можно увидеть, присвоив a.Name другое значение и обнаружив что в b.Name осталось прежнее значение.

G>То что они "структурно эквивалентны" C# не знает, там нет такого понятия.
Я могу определить отношение экивалентности классов A и реализовать его формально и математически строго.
G>В данном случае Object.ReferenceEquals(a,b) == false и a.Equals(b) == false. Других формальных утверждений про данный код ты сделать не можешь.
G>Ты ничего не доказал.
Я показал что эквивалентность и идентичность могут обозначать разные вещи.

S>>Для строк доказать их логическую неидентичность невозможно.

G>Я не понимаю уже что такое логическая идентичность. Как она в языке выражается?
Никак
G>Если никак, то её нет, или ты просто ошибся с понятием.
Это следствие не верифицируемо

S>>На то что для существования ООП нужно что бы идентичные объекты всегда были эквивалентны. Откуда это?

G>http://msdn.microsoft.com/en-us/library/system.object.equals.aspx
G>Для любого другого языка с возможность переопределить equals можно найти подобные правила.
Эти правила требуют формального соответствия вводимому отношению эквивалентности математическому понятию отношения эквивалентности, т.к. фреймворк в своей работе полагается на свойства отношения эквивалентности (рефлексивность, транзитивности, симметричность + кое-что из floating-point специфики). Рефлексивность требует что бы объект был эквивалентен самому себе. Но ни слова об идентичности.
Твоя ссылка не доказывает твоего утверждения.

S>>>>Вообще это не всегда выполняется. Из логической идентичности ссылочная эквивалентность не следует.

G>>>Покажи пример.
S>>пример с двумя строками равного содержимого.
G>Они эквивалентны, но не идентичны.
Докажи что логически не идентичны.
Re[67]: ООП головного мозга
От: samius Япония http://sams-tricks.blogspot.com
Дата: 05.10.11 09:23
Оценка:
Здравствуйте, Sinclair, Вы писали:

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

G>>>Для конкретного языка — следует, можешь обратный пример привести? Я таких не знаю.
S>>Для C# две строки с одинаковым содержимым.
S>Нет, это не так. Опровергнуть идентичность этих строк можно, правда для этого придётся выйти в unsafe.
Выйдя в unsafe можно опровергнуть идентичность строки самой себе.

S>>Придумать я могу все что угодно, что приведет к проблеме при общении со мной. Мне важно знать что я под термином понимаю именно то, что понимают другие. Для этого я открываю вики и шарюсь по книжкам.

S>Пока что ты понимаешь под термином идентичность совсем не то, что понимают все остальные.
вижу
S>И пытаешься углядеть в вики скрытый смысл, которого там нет.
Еще как минимум один источник говорит о наличии логической идентичности. AFAIR, вы на него ссылались весной.

S>>Ссылочная эквивалентность эквивалентна физической идентичности.

S>Нет. В частном случае COM, который тут по соседству упомянули, ссылочная эквивалентность не эквивалентна физической идентичности (даже если мы введём этот термин строгим образом).
S>"Физически идентичный" объект может иметь две различные ссылки — It is specifically not the case that queries for interfaces other than IUnknown (even the same interface through the same pointer) must return the same pointer value.
ок, COM особый случай.

S>>На то что для существования ООП нужно что бы идентичные объекты всегда были эквивалентны. Откуда это?

S>Эм-м, с точки зрения математики эквивалентностью может быть любое симметричное транзитивное рефлексивное отношение. Это понятно?
S>Из рефлексивности следует, что объект всегда эквивалентен сам себе.
Верно
S>А поскольку объекты с одинаковой идентичностью — это один и тот же объект
Это справедливо для физической эквивалентности но не для логической.
S>, то объекты с одинаковой идентичностью эквивалентны.
с физической — да. Логическая эквивалентность двух различных объектов не ведет к ссылочной эквивалентности.
Re[60]: ООП головного мозга
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 05.10.11 09:26
Оценка:
Здравствуйте, Ikemefula, Вы писали:

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


S>>>Это не одно и то же, т.к. адрес объекта или ссылка на объект — это не внутренний атрибут объекта и он не имеет отношения к поведению объекта в общем случае.

G>>Да ну? Покажи как в C# получить ссылку отдельно от самого объекта?
I>В C# этого нет в языке, но при этом в дотнет есть такой тип — ссылки. Т.е. это вопрос только конкретного языка.
Нет. Есть более общее, математическое понятие ссылки. Где-то оно может быть адресом или каким-то другим представлением. Но суть в том что эти ссылки можно сравнить и для идентичных (одинаковых, same) объектов они совпадут.

S>>>Наоборот, получив отрицательный результат сравнения ссылок на равенство, можно делать вывод лишь о том что мы имеем разные экземпляры. Но идентичность этим самым не опровергнута.

G>>Еще раз, не идентичность, а идентифицируемость. В C# для объектов reference-типов идентифицируемость по ссылке.
I>Здесь под идентичностью пониматся не идентичность а идентифицируемость, надо бы уже привыкнуть
Ниче не понял.

G>>Метафора identity — паспорт. Если два человека выглядят и ведут себя одинаково, но у них разные паспорта, то это разные люди. Если один паспорт — то это один человек.

I>А если паспорт заменили, то это уже будет другой человек что ли ?
Еще один умник... Ну возьми не паспорт, а SSN.
Re[68]: ООП головного мозга
От: samius Япония http://sams-tricks.blogspot.com
Дата: 05.10.11 09:30
Оценка:
Здравствуйте, samius, Вы писали:

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


S>>Пока что ты понимаешь под термином идентичность совсем не то, что понимают все остальные.

S>вижу
S>>И пытаешься углядеть в вики скрытый смысл, которого там нет.
S>Еще как минимум один источник говорит о наличии логической идентичности. AFAIR, вы на него ссылались весной.
Прошу прощения, это я ссылался
Автор: samius
Дата: 17.03.11
на тот источник.
Re[69]: ООП головного мозга
От: samius Япония http://sams-tricks.blogspot.com
Дата: 05.10.11 09:34
Оценка:
Здравствуйте, samius, Вы писали:

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


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


S>>>Пока что ты понимаешь под термином идентичность совсем не то, что понимают все остальные.

S>>вижу
S>>>И пытаешься углядеть в вики скрытый смысл, которого там нет.
S>>Еще как минимум один источник говорит о наличии логической идентичности. AFAIR, вы на него ссылались весной.
S>Прошу прощения, это я ссылался
Автор: samius
Дата: 17.03.11
на тот источник.


Вот еще один источник.

What makes up the identity of an object in an object-oriented system? A common answer is "object identity" is defined by being in the same spot in memory, which is called "reference equality" and matches Java's == operator. A consequence of this situation is if two objects are identical, a change to one will always affect the other. This distinguishes identity from the notion of "being equal," which can change over time. In fact, multiple notions of being equal are possible, such as String.equals() and String.equalsIgnoreCase().

Using reference equality as the only notion of object identity seems a good solution at first, but unfortunately this point of view is a little naive.

Re[68]: ООП головного мозга
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 05.10.11 09:40
Оценка:
Здравствуйте, samius, Вы писали:

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


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


G>>>>Для конкретного языка — следует, можешь обратный пример привести? Я таких не знаю.

S>>>Для C# две строки с одинаковым содержимым.

G>>Они эквивалентны, но не идентичны.

S>Можешь это доказать? Строго, делая верифицируемые выкладки из определения. Только без догадок о том что физический адрес это атрибут объекта.

Да

var a = "string";
var b = "string"

Debug.Assert((object)a != (object)b); //(1)
Debug.Assert(Object.Equals(a,b)); //(2)


Очевидно что приведение типа не изменяет объект, таким образом a и b разные объекты (1), то есть не идентичны, но они эквивалентны (2)


S>>>Придумать я могу все что угодно, что приведет к проблеме при общении со мной. Мне важно знать что я под термином понимаю именно то, что понимают другие. Для этого я открываю вики и шарюсь по книжкам.

G>>Тем не менее надо думать головой. Вики и книги пишут люди и им свойственно ошибаться.
S>Придумывать свои определения — это прямая дорога к непониманию.
G>>Вот есть два понятия: эквивалентность и идентичность. Придумай им формальные определения (разные определения).
S>Я не придумываю определения, я ими пользуюсь.
В википедии определение откровенно слабое, неформальное.

S>>>логическая идентичность и эквивалентность — это разные термины.

G>>Чем разные?
S>Обозначают разные вещи.
Ну так приведи определения. Я не понимаю что ты имеешь ввиду под этими разными вещами.

S>>>a и b структурно эквивалентны, но логически не идентичны, что можно увидеть, присвоив a.Name другое значение и обнаружив что в b.Name осталось прежнее значение.

G>>То что они "структурно эквивалентны" C# не знает, там нет такого понятия.
S>Я могу определить отношение экивалентности классов A и реализовать его формально и математически строго.
G>>В данном случае Object.ReferenceEquals(a,b) == false и a.Equals(b) == false. Других формальных утверждений про данный код ты сделать не можешь.
G>>Ты ничего не доказал.
S>Я показал что эквивалентность и идентичность могут обозначать разные вещи.
В данном случае ты показал два объекта, которые не эквивалентны и не идентичны.
То есть ничего не доказал.

S>>>Для строк доказать их логическую неидентичность невозможно.

G>>Я не понимаю уже что такое логическая идентичность. Как она в языке выражается?
S>Никак
То есть его просто нет, его нельзя на доказать\ни опровергнуть\и выразить в программе.

S>>>На то что для существования ООП нужно что бы идентичные объекты всегда были эквивалентны. Откуда это?

G>>http://msdn.microsoft.com/en-us/library/system.object.equals.aspx
G>>Для любого другого языка с возможность переопределить equals можно найти подобные правила.
S>Эти правила требуют формального соответствия вводимому отношению эквивалентности математическому понятию отношения эквивалентности, т.к. фреймворк в своей работе полагается на свойства отношения эквивалентности (рефлексивность, транзитивности, симметричность + кое-что из floating-point специфики). Рефлексивность требует что бы объект был эквивалентен самому себе. Но ни слова об идентичности.
Выделенное есть идентичность.

"Эквивалентен самому себе" формально записывается как Object.ReferenceEquals(a, b) == true => a.Equals(b)
Ты только что упоминул то что я тебе уже раз 10 написал.

S>Твоя ссылка не доказывает твоего утверждения.


Прочитай, там явное требование чтобы x.Equals(x) == true, но внутри Equals у тебя две ссылки this и obj. И единственная реализация данного требования делать Object.ReferenceEquals(this, obj), то есть опираться на совпадение ссылок. Причем такое можно найти и для java.

S>>>>>Вообще это не всегда выполняется. Из логической идентичности ссылочная эквивалентность не следует.

G>>>>Покажи пример.
S>>>пример с двумя строками равного содержимого.
G>>Они эквивалентны, но не идентичны.
S>Докажи что логически не идентичны.
Я не знаю что такое "логически идентичны", ты не привел определение.
Re[61]: ООП головного мозга
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 05.10.11 09:48
Оценка:
Здравствуйте, gandjustas, Вы писали:

I>>В C# этого нет в языке, но при этом в дотнет есть такой тип — ссылки. Т.е. это вопрос только конкретного языка.

G>Нет. Есть более общее, математическое понятие ссылки. Где-то оно может быть адресом или каким-то другим представлением. Но суть в том что эти ссылки можно сравнить и для идентичных (одинаковых, same) объектов они совпадут.

Есть масса способов сделать ссылки побитово различными при этом они будт ссылаться на один и тот же объект.

G>>>Еще раз, не идентичность, а идентифицируемость. В C# для объектов reference-типов идентифицируемость по ссылке.

I>>Здесь под идентичностью пониматся не идентичность а идентифицируемость, надо бы уже привыкнуть
G>Ниче не понял.

Да вроде всё просто — на этом форуме термин "identity" используется в русском варианте как "идентичность", но означает "идентифицируемость"
То есть как минимум для ООП-тем нужно иметь ввиду, что здесь "идентичность" есть "идентифицируемость".
Re[62]: ООП головного мозга
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 05.10.11 09:56
Оценка:
Здравствуйте, Ikemefula, Вы писали:

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


I>>>В C# этого нет в языке, но при этом в дотнет есть такой тип — ссылки. Т.е. это вопрос только конкретного языка.

G>>Нет. Есть более общее, математическое понятие ссылки. Где-то оно может быть адресом или каким-то другим представлением. Но суть в том что эти ссылки можно сравнить и для идентичных (одинаковых, same) объектов они совпадут.

I>Есть масса способов сделать ссылки побитово различными при этом они будт ссылаться на один и тот же объект.


Ну так и я про то же, поэтому оперируем "математической" ссылкой, которая инварианта битовому представлению и другим особенностям реализации.
Для простоты берем ссылки как в C#, внутрь их влезть нельзя.
Re[69]: ООП головного мозга
От: samius Япония http://sams-tricks.blogspot.com
Дата: 05.10.11 10:03
Оценка: -1
Здравствуйте, gandjustas, Вы писали:

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


G>>>Они эквивалентны, но не идентичны.

S>>Можешь это доказать? Строго, делая верифицируемые выкладки из определения. Только без догадок о том что физический адрес это атрибут объекта.

G>Да


G>
G>var a = "string";
G>var b = "string"

G>Debug.Assert((object)a != (object)b); //(1)
G>Debug.Assert(Object.Equals(a,b)); //(2)

G>


G>Очевидно что приведение типа не изменяет объект, таким образом a и b разные объекты (1), то есть не идентичны, но они эквивалентны (2)

Ты показал отличие ссылочной эквивалентности от эквивалентности, определенной для строки по умолчанию. К логической идентичности ни то ни другое не имеет отношения.
Давай так. Ты допускаешь существование понятия "логическая идентичность" или ты будешь все время игнорировать "логическая" и подразумевать при этом "физическую идентичность"? Если для тебя нет понятия логической идентичности, то мы просто обсуждаем разные понятия и наши доказательства ни к чему не приведут.

S>>Я не придумываю определения, я ими пользуюсь.

G>В википедии определение откровенно слабое, неформальное.
http://www.objectarchitects.de/ObjectArchitects/orpatterns/index.htm?OID/index.htm
По ссылке выше три формальных определения. Допускают ли они трактовку, в которой логическая эквивалентность имеет место? Если нет, почему бы там сразу не написано "один и тот же объект"?

S>>>>логическая идентичность и эквивалентность — это разные термины.

G>>>Чем разные?
S>>Обозначают разные вещи.
G>Ну так приведи определения. Я не понимаю что ты имеешь ввиду под этими разными вещами.
Ссылку на определения идентичности я дал, отношение эквивалентности — вот

G>>>В данном случае Object.ReferenceEquals(a,b) == false и a.Equals(b) == false. Других формальных утверждений про данный код ты сделать не можешь.

G>>>Ты ничего не доказал.
S>>Я показал что эквивалентность и идентичность могут обозначать разные вещи.
G>В данном случае ты показал два объекта, которые не эквивалентны и не идентичны.
Следует добавить в пример реализацию отношения эквивалентности? Я могу это сделать.
G>То есть ничего не доказал.

S>>>>Для строк доказать их логическую неидентичность невозможно.

G>>>Я не понимаю уже что такое логическая идентичность. Как она в языке выражается?
S>>Никак
G>То есть его просто нет, его нельзя на доказать\ни опровергнуть\и выразить в программе.
Опровергнуть можно, я показал как. Доказать — нельзя. Так же нельзя доказать логическую идентичность объекта самому себе.

G>>>Для любого другого языка с возможность переопределить equals можно найти подобные правила.

S>>Эти правила требуют формального соответствия вводимому отношению эквивалентности математическому понятию отношения эквивалентности, т.к. фреймворк в своей работе полагается на свойства отношения эквивалентности (рефлексивность, транзитивности, симметричность + кое-что из floating-point специфики). Рефлексивность требует что бы объект был эквивалентен самому себе. Но ни слова об идентичности.
G>Выделенное есть идентичность.
Физическая но не логическая. Перестань игнорировать термины, описание которых я приводил неоднократно. Или мы обсуждаем одну и ту же вещь, либо не обсуждаем вовсе за бессмысленностью.

G>"Эквивалентен самому себе" формально записывается как Object.ReferenceEquals(a, b) == true => a.Equals(b)

Object.ReferenceEquals(a,b) не факт что выполняется для логической идентичности.
G>Ты только что упоминул то что я тебе уже раз 10 написал.
Мы говорим не об одном и том же.

G>Прочитай, там явное требование чтобы x.Equals(x) == true, но внутри Equals у тебя две ссылки this и obj. И единственная реализация данного требования делать Object.ReferenceEquals(this, obj), то есть опираться на совпадение ссылок. Причем такое можно найти и для java.

x.Equals(x) — требование рефлексивности. Оно будет удовлетворено и для логической идентичности. Я забыл, о что мы доказывали.

S>>Докажи что логически не идентичны.

G>Я не знаю что такое "логически идентичны", ты не привел определение.
Определения идентичности я приводил. Нужно еще формально показать что из него вытекает лишь физическая идентичность и никак не логическая. Покуда это не сделано строго и формально, я считаю что понятие логической идентичности вытекает из определения идентичности. Описание того, что такое логическая идентичность я приводил.

допустим

"object identity — identity is that property of an object that distinguishes each object from all others" [Khos-86]

Откуда тут следует что под that property подразумевается физическая уникальность экземпляра? Для меня это не очевидно. А значит могут существовать другие свойства объекта. Наблюдаемое поведение объекта — вполне одно из таких свойств.

Если ты отбрасываешь понятие логической идентичности потому как не видишь, как оно может вытечь из определения идентичности, давай на этом закончим. Ну или по крайней мере приостановим доказательства друг-другу своих утверждений до тех пор, пока не разберемся с определением идентичности и не найдем общее понимание его.
Re[70]: ООП головного мозга
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 05.10.11 10:31
Оценка:
Здравствуйте, samius, Вы писали:

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


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


G>>>>Они эквивалентны, но не идентичны.

S>>>Можешь это доказать? Строго, делая верифицируемые выкладки из определения. Только без догадок о том что физический адрес это атрибут объекта.

G>>Да


G>>
G>>var a = "string";
G>>var b = "string"

G>>Debug.Assert((object)a != (object)b); //(1)
G>>Debug.Assert(Object.Equals(a,b)); //(2)

G>>


G>>Очевидно что приведение типа не изменяет объект, таким образом a и b разные объекты (1), то есть не идентичны, но они эквивалентны (2)

S>Ты показал отличие ссылочной эквивалентности от эквивалентности, определенной для строки по умолчанию.
То что ты называешь ссылочной эквивалентностью является по идентичностью.

S>К логической идентичности ни то ни другое не имеет отношения.

К логической идентичности ничего не имеет отношения как так ты её выразить не можешь, ни словами ни кодом, ни доказать её отсутствие или присутствие.

S>Давай так. Ты допускаешь существование понятия "логическая идентичность" или ты будешь все время игнорировать "логическая" и подразумевать при этом "физическую идентичность"? Если для тебя нет понятия логической идентичности, то мы просто обсуждаем разные понятия и наши доказательства ни к чему не приведут.

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

S>>>Я не придумываю определения, я ими пользуюсь.

G>>В википедии определение откровенно слабое, неформальное.
S>http://www.objectarchitects.de/ObjectArchitects/orpatterns/index.htm?OID/index.htm
S>По ссылке выше три формальных определения. Допускают ли они трактовку, в которой логическая эквивалентность имеет место? Если нет, почему бы там сразу не написано "один и тот же объект"?
Потому что "один и тот же" можно сказать когда есть два объекта. А тут попытались написать определение identity для одного.


S>>>>>логическая идентичность и эквивалентность — это разные термины.

G>>>>Чем разные?
S>>>Обозначают разные вещи.
G>>Ну так приведи определения. Я не понимаю что ты имеешь ввиду под этими разными вещами.
S>Ссылку на определения идентичности я дал, отношение эквивалентности — вот
Да нет, меня как раз интересует твое понимание идентичности.

G>>>>В данном случае Object.ReferenceEquals(a,b) == false и a.Equals(b) == false. Других формальных утверждений про данный код ты сделать не можешь.

G>>>>Ты ничего не доказал.
S>>>Я показал что эквивалентность и идентичность могут обозначать разные вещи.
G>>В данном случае ты показал два объекта, которые не эквивалентны и не идентичны.
S>Следует добавить в пример реализацию отношения эквивалентности? Я могу это сделать.
Ну, ты сделаешь два экивалентных, но не идентичных объекта.

S>>>>>Для строк доказать их логическую неидентичность невозможно.

G>>>>Я не понимаю уже что такое логическая идентичность. Как она в языке выражается?
S>>>Никак
G>>То есть его просто нет, его нельзя на доказать\ни опровергнуть\и выразить в программе.
S>Опровергнуть можно, я показал как.
Ты ничего не показал. Покажи как свойство "логической идентичности" можно выразить в программе.


G>>>>Для любого другого языка с возможность переопределить equals можно найти подобные правила.

S>>>Эти правила требуют формального соответствия вводимому отношению эквивалентности математическому понятию отношения эквивалентности, т.к. фреймворк в своей работе полагается на свойства отношения эквивалентности (рефлексивность, транзитивности, симметричность + кое-что из floating-point специфики). Рефлексивность требует что бы объект был эквивалентен самому себе. Но ни слова об идентичности.
G>>Выделенное есть идентичность.
S>Физическая но не логическая. Перестань игнорировать термины, описание которых я приводил неоднократно. Или мы обсуждаем одну и ту же вещь, либо не обсуждаем вовсе за бессмысленностью.
Чем физическая отличается от логической, приведи код. Рассуждения без кода не нужны.

G>>"Эквивалентен самому себе" формально записывается как Object.ReferenceEquals(a, b) == true => a.Equals(b)

S>Object.ReferenceEquals(a,b) не факт что выполняется для логической идентичности.
G>>Ты только что упоминул то что я тебе уже раз 10 написал.
S>Мы говорим не об одном и том же.
Возможно. Ты придумываешь вещи, которые отсутствуют.

G>>Прочитай, там явное требование чтобы x.Equals(x) == true, но внутри Equals у тебя две ссылки this и obj. И единственная реализация данного требования делать Object.ReferenceEquals(this, obj), то есть опираться на совпадение ссылок. Причем такое можно найти и для java.

S>x.Equals(x) — требование рефлексивности. Оно будет удовлетворено и для логической идентичности. Я забыл, о что мы доказывали.
Object.ReferenceEquals(this, obj) это какая идентичность? После этого сразу напиши код для получения другой идентичности.

S>>>Докажи что логически не идентичны.

G>>Я не знаю что такое "логически идентичны", ты не привел определение.
S>Определения идентичности я приводил.
Формально, код давай. Без кода это пустой треп.

S>Нужно еще формально показать что из него вытекает лишь физическая идентичность и никак не логическая. Покуда это не сделано строго и формально, я считаю что понятие логической идентичности вытекает из определения идентичности. Описание того, что такое логическая идентичность я приводил.

В чем отличия физической и логической идентичности? Кодом.

S>допустим

S>

S>"object identity — identity is that property of an object that distinguishes each object from all others" [Khos-86]

S>Откуда тут следует что под that property подразумевается физическая уникальность экземпляра? Для меня это не очевидно. А значит могут существовать другие свойства объекта. Наблюдаемое поведение объекта — вполне одно из таких свойств.
Концептуально — ниоткуда, а в контретной реализации ООП — очень даже понятно откуда. Других реализаций ООП не видел.

S>Если ты отбрасываешь понятие логической идентичности потому как не видишь, как оно может вытечь из определения идентичности, давай на этом закончим. Ну или по крайней мере приостановим доказательства друг-другу своих утверждений до тех пор, пока не разберемся с определением идентичности и не найдем общее понимание его.


Я его отбрасываю потому что оно неформализуемо.

Вообще странно ты пытаешься поступить. Есть вполне формальное определение identity — отличить объект от всех остальных, для этого в C# например еcть Object.ReferenceEquals, который как-бы говорит нам о сравнении ссылок. Ты придумываешь какое-то определение, которое неформализуемо и непредставимо в языке и разводишь на основании этого демагогию.
Re[71]: ООП головного мозга
От: samius Япония http://sams-tricks.blogspot.com
Дата: 05.10.11 11:13
Оценка: -1
Здравствуйте, gandjustas, Вы писали:

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


S>>Ты показал отличие ссылочной эквивалентности от эквивалентности, определенной для строки по умолчанию.

G>То что ты называешь ссылочной эквивалентностью является по идентичностью.
Тебе недостаточно различных определений, ты продолжаешь настаивать, но не приводишь ссылки на то что это одно и то же.

S>>К логической идентичности ни то ни другое не имеет отношения.

G>К логической идентичности ничего не имеет отношения как так ты её выразить не можешь, ни словами ни кодом, ни доказать её отсутствие или присутствие.
Словами: идентичность — это такое свойство объекта, которое позволяет отличать его от остальных.
Опровергнуть идентичность можно следующими способами — сравнить поведение объектов. Если изменение состояния одного объекта не приводит к изменению состояния другого — объекты не идентичны. Если такие отличия не могут быть найдены, то это свидетельствует об идентичности, но быть уверенным что они идентичны нельзя.
Ссылка на объект не является атрибутом объекта и не может быть наблюдаема через его поведение концептуально, а не в С#.
Описать кодом?

S>>Давай так. Ты допускаешь существование понятия "логическая идентичность" или ты будешь все время игнорировать "логическая" и подразумевать при этом "физическую идентичность"? Если для тебя нет понятия логической идентичности, то мы просто обсуждаем разные понятия и наши доказательства ни к чему не приведут.

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

S>>По ссылке выше три формальных определения. Допускают ли они трактовку, в которой логическая эквивалентность имеет место? Если нет, почему бы там сразу не написано "один и тот же объект"?

G>Потому что "один и тот же" можно сказать когда есть два объекта. А тут попытались написать определение identity для одного.
Дай определение идентичности, которому ты доверяешь.

S>>Ссылку на определения идентичности я дал, отношение эквивалентности — вот

G>Да нет, меня как раз интересует твое понимание идентичности.
Выше

S>>Следует добавить в пример реализацию отношения эквивалентности? Я могу это сделать.

G>Ну, ты сделаешь два экивалентных, но не идентичных объекта.
Ты можешь показать их неидентичность не используя сравнение ссылок? ПОчему ты вообще используешь ссылки для определения идентичности? На каком формальном основании? Где в определении идентичности ссылки? Почему ты ссылку считаешь свойством объекта?

S>>Опровергнуть можно, я показал как.

G>Ты ничего не показал. Покажи как свойство "логической идентичности" можно выразить в программе.
Существование отличий в поведении дает логическую неидентичность. Показать тебе все способы нахождения отличий?

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

G>Чем физическая отличается от логической, приведи код. Рассуждения без кода не нужны.
Логическая определяется через поведение объекта, а не через ссылку. Проверять всевозможное поведение объекта слишком муторно для форума.

S>>Мы говорим не об одном и том же.

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

S>>x.Equals(x) — требование рефлексивности. Оно будет удовлетворено и для логической идентичности. Я забыл, о что мы доказывали.

G>Object.ReferenceEquals(this, obj) это какая идентичность? После этого сразу напиши код для получения другой идентичности.
Это ссылочная эквивалентность а не идентичность. Из нее следует физическая идентичность. Из физической идентичности следует ссылочная эквивалентность. Но это не одно и то же. Понятия разные, но наблюдаются они у объекта одновременно. Смотри определения.

S>>Определения идентичности я приводил.

G>Формально, код давай. Без кода это пустой треп.
Если для тебя это треп, то давай завязывать. Я тебе уже устал повторять, что доказать идентичность даже объекта самому себе кодом невозможно. Формально определение идентичности ссылается на свойства, которые позволяют отличать объекты друг от друга.
Возьми var a = "a"; var b = a; и докажи кодом что у a и b нет свойств, которые бы их отличали.
Потом требуй от меня код.

S>>Нужно еще формально показать что из него вытекает лишь физическая идентичность и никак не логическая. Покуда это не сделано строго и формально, я считаю что понятие логической идентичности вытекает из определения идентичности. Описание того, что такое логическая идентичность я приводил.

G>В чем отличия физической и логической идентичности? Кодом.
Докажи идентичность объекта самому себе кодом, что бы сошлось с определением.

S>>Откуда тут следует что под that property подразумевается физическая уникальность экземпляра? Для меня это не очевидно. А значит могут существовать другие свойства объекта. Наблюдаемое поведение объекта — вполне одно из таких свойств.

G>Концептуально — ниоткуда, а в контретной реализации ООП — очень даже понятно откуда. Других реализаций ООП не видел.
Это не значит, что других реализаций не может быть.

S>>Если ты отбрасываешь понятие логической идентичности потому как не видишь, как оно может вытечь из определения идентичности, давай на этом закончим. Ну или по крайней мере приостановим доказательства друг-другу своих утверждений до тех пор, пока не разберемся с определением идентичности и не найдем общее понимание его.


G>Я его отбрасываю потому что оно неформализуемо.

Оно формализуемо. Неформализуемо следствие по которому существует лишь физическая идентичность.

G>Вообще странно ты пытаешься поступить. Есть вполне формальное определение identity — отличить объект от всех остальных, для этого в C# например еcть Object.ReferenceEquals, который как-бы говорит нам о сравнении ссылок.

ReferenceEquals для сравнения ссылок, он не определяет идентичность формально. В нескольких источниках написано что неравенство ссылок не приводит к различным идентичностям. Оспаривай эти источники.

G> Ты придумываешь какое-то определение, которое неформализуемо и непредставимо в языке и разводишь на основании этого демагогию.

Я пользуюсь формальным определением. То что из него следует лишь физическая идентичность — не факт для меня. И еще раз — мопед не мой. Я указал как минимум 3 источника. Почему ты обвиняешь в придумывании и демагогии именно меня?

Скажи что все мои источники нагло врут, либо я их неверно понимаю. На этом закончим.
Re[53]: ООП головного мозга
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 05.10.11 11:29
Оценка: 15 (1)
Здравствуйте, gandjustas, Вы писали:

G>Если рассматривать ООП с точки зрения Кея, то и erlang с процессами более чем соответствует.

Это упрощение. Ты из акцента на messaging (подразумевается наличие чего-то еще), оставил *только* messaging. А ведь была еще и концепция "только объект", которая подразумевает "рекурсивный дизайн", когда объекты состоят из объектов на макро и микро уровне. В Erlang процессы (как единица хранения состояния) и сообщения есть только на макро уровне.
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[68]: ООП головного мозга
От: Sinclair Россия https://github.com/evilguest/
Дата: 05.10.11 11:49
Оценка: 12 (1)
Здравствуйте, samius, Вы писали:

S>>И пытаешься углядеть в вики скрытый смысл, которого там нет.

S>Еще как минимум один источник говорит о наличии логической идентичности. AFAIR, вы на него ссылались весной.
Логическая идентичность — термин, выдуманный лично вами.
Больше им не пользуется никто. Все остальные отличают идентичность от иных видов эквивалентности.
Идентичность — это такое отношение эквивалентности, при котором объект эквивалентен себе и не эквивалентен больше никакому другому объекту.

S>ок, COM особый случай.

И именно для него и изоморфных ему случаев введена оговорка в Wiki о том, что ссылочная эквивалентность достаточное, но не необходимое условие для идентичности.

Ещё раз повторю банальые истины:
1. эквивалентность объектов и эквивалентность ссылок — разные вещи, т.к. ссылка не есть объект. Именно поэтому две различных ссылки могут указывать на один и тот же объект.
2. для любого отношения эквивалентности, заданного для объектов, идентичность ==> эта эквивалентность. В силу рефлексивности.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[72]: ООП головного мозга
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 05.10.11 11:56
Оценка:
Здравствуйте, samius, Вы писали:

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


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


S>>>Ты показал отличие ссылочной эквивалентности от эквивалентности, определенной для строки по умолчанию.

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

S>Словами: идентичность — это такое свойство объекта, которое позволяет отличать его от остальных.

S>Опровергнуть идентичность можно следующими способами — сравнить поведение объектов.
Identity не зависит от поведения и состояния.
http://www.objectarchitects.de/ObjectArchitects/orpatterns/index.htm?OID/index.htm

object identity — a characteristic of an object that provides a means to uniquely denote or refer to the object independent of its state or behavior

Сам же приводил.



S>>>Давай так. Ты допускаешь существование понятия "логическая идентичность" или ты будешь все время игнорировать "логическая" и подразумевать при этом "физическую идентичность"? Если для тебя нет понятия логической идентичности, то мы просто обсуждаем разные понятия и наши доказательства ни к чему не приведут.

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

S>>>По ссылке выше три формальных определения. Допускают ли они трактовку, в которой логическая эквивалентность имеет место? Если нет, почему бы там сразу не написано "один и тот же объект"?

G>>Потому что "один и тот же" можно сказать когда есть два объекта. А тут попытались написать определение identity для одного.
S>Дай определение идентичности, которому ты доверяешь.
http://www.objectarchitects.de/ObjectArchitects/orpatterns/index.htm?OID/index.htm
всем трем доверяю, причем одновременно, а не по-отдельности.

S>>>Ссылку на определения идентичности я дал, отношение эквивалентности — вот

G>>Да нет, меня как раз интересует твое понимание идентичности.
S>Выше
Оно неверно

S>>>Следует добавить в пример реализацию отношения эквивалентности? Я могу это сделать.

G>>Ну, ты сделаешь два экивалентных, но не идентичных объекта.
S>Ты можешь показать их неидентичность не используя сравнение ссылок?
Нет, потому что ссылка и есть identity. Ты можешь показать другое — показывай. Формально, кодом.

S>ПОчему ты вообще используешь ссылки для определения идентичности? На каком формальном основании? Где в определении идентичности ссылки? Почему ты ссылку считаешь свойством объекта?

В концептуальном определении их нет, но реализация identity во всех известных мне языках с поддержкой ООП опирается на ссылки в том или ином виде. Вообще слабо себе представляю ООП без ссылок.

S>>>Опровергнуть можно, я показал как.

G>>Ты ничего не показал. Покажи как свойство "логической идентичности" можно выразить в программе.
S>Существование отличий в поведении дает логическую неидентичность. Показать тебе все способы нахождения отличий?
Идентичность не зависит от поведения. Отличия в поведении — неидентичны. Зачем разделять на физическую и логическую?

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

G>>Чем физическая отличается от логической, приведи код. Рассуждения без кода не нужны.
S>Логическая определяется через поведение объекта, а не через ссылку. Проверять всевозможное поведение объекта слишком муторно для форума.
Идентичность не зависит от поведения. Совпадения поведения в некотором смысле, который ты заранее задаешь, дает эквивалентность, а не идентичность.

S>>>Мы говорим не об одном и том же.

G>>Возможно. Ты придумываешь вещи, которые отсутствуют.
S>Их не я придумал. Есть несколько источников, где эти вещи описаны. Отрицай существование этих источников.
Да пусть хоть на каждом шагу написано, но оно не становится от этого формализуемым, ты не можешь доказать что что-то есть, следовательно этого нет.

S>>>x.Equals(x) — требование рефлексивности. Оно будет удовлетворено и для логической идентичности. Я забыл, о что мы доказывали.

G>>Object.ReferenceEquals(this, obj) это какая идентичность? После этого сразу напиши код для получения другой идентичности.
S>Это ссылочная эквивалентность а не идентичность. Из нее следует физическая идентичность. Из физической идентичности следует ссылочная эквивалентность. Но это не одно и то же. Понятия разные, но наблюдаются они у объекта одновременно. Смотри определения.

Если A -> B && B -> A, то A == B, это формальная логика, можешь с ней не спорить. Ты только что доказал что совпадение ссылок есть "физическая идентичность", теперь осталось выяснить чем логическая идентичность отличается от физической идентичности.

Для этого просто приведи код, где будет "логическая идентичность" как некоторое выражение, возвращающее true для двух объектов, но не будет "физической идентичности" (равенства ссылок). Ну и естественно это должно быть выражение для любого типа, а не для какого-то класса.

S>>>Определения идентичности я приводил.

G>>Формально, код давай. Без кода это пустой треп.
S>Если для тебя это треп, то давай завязывать. Я тебе уже устал повторять, что доказать идентичность даже объекта самому себе кодом невозможно. Формально определение идентичности ссылается на свойства, которые позволяют отличать объекты друг от друга.
Я просто поверю создателям языка что Object.ReferenceEquals — сравнивает identity. Причем ссылки, которые сравниваются, вполне соответствуют всем трем определениям отсюда.
А ты, если не веришь, попробуй доказать обратное.
Одним написанием определений ты ничего не докажешь. Нужен код.

S>>>Нужно еще формально показать что из него вытекает лишь физическая идентичность и никак не логическая. Покуда это не сделано строго и формально, я считаю что понятие логической идентичности вытекает из определения идентичности. Описание того, что такое логическая идентичность я приводил.

G>>В чем отличия физической и логической идентичности? Кодом.
S>Докажи идентичность объекта самому себе кодом, что бы сошлось с определением.
Идентичность не нужно доказывать, она или есть, или нет. Это неотъемлемое свойство объекта. Идентичность и позволяет отличить объект от других, то есть id(a) == id(b) только когда a и b это один и тот же объект.

S>>>Откуда тут следует что под that property подразумевается физическая уникальность экземпляра? Для меня это не очевидно. А значит могут существовать другие свойства объекта. Наблюдаемое поведение объекта — вполне одно из таких свойств.

G>>Концептуально — ниоткуда, а в контретной реализации ООП — очень даже понятно откуда. Других реализаций ООП не видел.
S>Это не значит, что других реализаций не может быть.
Приведи реализацию, я склонен считать что если в программировании что-то невозможно сделать в коде, то этого просто нет. Программирование не требует затрат больших энергии на проведение эксперимента.

S>>>Если ты отбрасываешь понятие логической идентичности потому как не видишь, как оно может вытечь из определения идентичности, давай на этом закончим. Ну или по крайней мере приостановим доказательства друг-другу своих утверждений до тех пор, пока не разберемся с определением идентичности и не найдем общее понимание его.


G>>Я его отбрасываю потому что оно неформализуемо.

S>Оно формализуемо.
Так приведи код, который проверит "логическую идентичность".

G>>Вообще странно ты пытаешься поступить. Есть вполне формальное определение identity — отличить объект от всех остальных, для этого в C# например еcть Object.ReferenceEquals, который как-бы говорит нам о сравнении ссылок.

S>ReferenceEquals для сравнения ссылок, он не определяет идентичность формально. В нескольких источниках написано что неравенство ссылок не приводит к различным идентичностям. Оспаривай эти источники.
Уже писали про это: наприемр если взять указатель на область памяти или на COM объект, то он может иметь разные адреса при указании на один объект, но в любом случае существует "инвариантный" указатель, который будет совпадать. Вот этот инвариантный указатель можно считать ссылкой в общем (в математическом понимании). Ссылки в C# инварианты, и внутрь залезть нельзя.
В соответствии с высказыванием ты утверждаешь что бывает так что Object.ReferenceEquals(a,b) == false, но это один и тот же объект.
Приведи пример языка где инвариантные ссылки не совпадают, но это один и тот же объект.


G>> Ты придумываешь какое-то определение, которое неформализуемо и непредставимо в языке и разводишь на основании этого демагогию.

S>Я пользуюсь формальным определением. То что из него следует лишь физическая идентичность — не факт для меня. И еще раз — мопед не мой. Я указал как минимум 3 источника. Почему ты обвиняешь в придумывании и демагогии именно меня?
Потому что ты опираешься на неформализуемое определение логической идентичности.

S>Скажи что все мои источники нагло врут, либо я их неверно понимаю. На этом закончим.

Во-ервых не все, во-вторых не врут, а заблуждаются или смешивают концепцию с деталями реализации.
Re[54]: ООП головного мозга
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 05.10.11 11:59
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

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


G>>Если рассматривать ООП с точки зрения Кея, то и erlang с процессами более чем соответствует.

ANS>Это упрощение. Ты из акцента на messaging (подразумевается наличие чего-то еще), оставил *только* messaging. А ведь была еще и концепция "только объект", которая подразумевает "рекурсивный дизайн", когда объекты состоят из объектов на макро и микро уровне. В Erlang процессы (как единица хранения состояния) и сообщения есть только на макро уровне.

Да, я это написал именно к вопросу о попытке натянуть некоторые свойства ООП на SOA.
Re[69]: ООП головного мозга
От: samius Япония http://sams-tricks.blogspot.com
Дата: 05.10.11 12:15
Оценка:
Здравствуйте, Sinclair, Вы писали:

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


S>>>И пытаешься углядеть в вики скрытый смысл, которого там нет.

S>>Еще как минимум один источник говорит о наличии логической идентичности. AFAIR, вы на него ссылались весной.
S>Логическая идентичность — термин, выдуманный лично вами.
Я не могу это опровергнуть, могу лишь дать ссылку на статью, автор которой не я http://c2.com/cgi/wiki?ObjectIdentity
Со своей стороны могу сказать что то что логическую идентичность выдумал я, выдумали лично вы.

S>Больше им не пользуется никто. Все остальные отличают идентичность от иных видов эквивалентности.

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

S>Идентичность — это такое отношение эквивалентности, при котором объект эквивалентен себе и не эквивалентен больше никакому другому объекту.

Это ниоткуда не следует.

S>>ок, COM особый случай.

S>И именно для него и изоморфных ему случаев введена оговорка в Wiki о том, что ссылочная эквивалентность достаточное, но не необходимое условие для идентичности.
Не уверен в этом. Классические определения, данные до появления кома, допускают логическую эквивалентность.

S>Ещё раз повторю банальые истины:

S>1. эквивалентность объектов и эквивалентность ссылок — разные вещи, т.к. ссылка не есть объект. Именно поэтому две различных ссылки могут указывать на один и тот же объект.
Очевидно.
S>2. для любого отношения эквивалентности, заданного для объектов, идентичность ==> эта эквивалентность. В силу рефлексивности.
Я говорил о том что логическая идентичность не ведет к ссылочной эквивалентности. Физическая идентичность ведет к любым эквивалентностям в силу рефлексивности.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.