LINUX.ORG.RU
Ответ на: комментарий от dave

> Чтобы написать грамотное сравнение объектов (equals в яве), нужно

понимать, что такое отношение эквивалентости: что такое рефлексия,

симметрия и транзитивность



Я не знаю что такое equals в яве. Что-то специфичное? Ибо, абстрактное сравнение на практике не нужно.

archimag ★★★
()
Ответ на: комментарий от dave

> Нет, не специфичное и не абстрактное.

Тогда зачем для написания операции сравнения «нужно понимать, что такое отношение эквивалентости: что такое рефлексия, симметрия и транзитивность.»?

archimag ★★★
()
Ответ на: комментарий от archimag

Будь добр, изъясняйся лучше. Я иногда тебя плохо понимаю. А объяснять тебе, почему равенство должно являться отношением эквивалентности не стану. Для этого есть хорошие учебники. Например, книга «Programming in Scala», глава «Object Equality». Только ведь ты не любишь читать книги.

dave ★★★★★
()
Ответ на: комментарий от dave

> объяснять тебе, почему равенство должно являться отношением

эквивалентности не стану.


Потому что не сможешь.

archimag ★★★
()
Ответ на: комментарий от dave

> Тебе, вообще, бесполезно что-то объяснять. Давно заметил.

Ну так ты же и не пытался. Я вообще не помню, что бы ты пытался что-ли объяснить, ты только кидаешься общими словами и ссылками на литературу, а что бы самому что-то сказать - нет.

archimag ★★★
()
Ответ на: комментарий от archimag

> Я не знаю что такое equals в яве. Что-то специфичное?

а чем разные формы сравнения в лиспе (eq, equal, equal, equalp) отличаются, ты знаешь?

anonymous
()
Ответ на: комментарий от archimag

> тогда зачем для написания операции сравнения «нужно понимать, что такое отношение эквивалентости: что такое рефлексия, симметрия и транзитивность.»?

разжуй примеры
http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node74.html
и переложи их на С++ с конструктором копирования и смарт-поинтерами.
Как ты напишешь реализацию конструкторов копирования и смарт-поинтеров?

anonymous
()
Ответ на: комментарий от anonymous

> разжуй примеры

Может как-нибудь сами справитесь?

archimag ★★★
()
Ответ на: комментарий от anonymous

> потому что это — та же самая задача, что тебе dave написал.

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

paranonymous
()
Ответ на: комментарий от paranonymous

> сравнение по ссылке и по значению являются как раз таки отношениями эквивалентности.

формально да, в реальности для тяжёлых объектов одна операция сравнения может быть тяжёлой, другая лёгкой. И как реализовать сравнение — напрямую влияет на эффективность (насколько влияет, это надо исследование операций и профилирование проводить, измерять).

anonymous
()
Ответ на: комментарий от anonymous

> формально да, в реальности для тяжёлых объектов одна операция сравнения может быть тяжёлой, другая лёгкой. И как реализовать сравнение — напрямую влияет на эффективность (насколько влияет, это надо исследование операций и профилирование проводить, измерять).

Да, это ведь разные операции. И как здесь мне поможет формальное определение отношения эквивалентности?

paranonymous
()
Ответ на: комментарий от paranonymous

> И как здесь мне поможет формальное определение отношения эквивалентности?

если оно одно, то никак. А в лиспе вон аж 4 штуки накропали.

anonymous
()
Ответ на: комментарий от anonymous

> если оно одно, то никак. А в лиспе вон аж 4 штуки накропали.

И вот не задача, все эти типы равенств являются отношениями эквивалентности.

paranonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.