To, že neumím rozlišit mezi dvěma objekty, může znamenat:
a. Jsou objektivně k nerozeznání.
b. Moje schopnosti rozlišit tyto dva objekty jsou nedostatečné, ale rozdíl tam je – možná to poznám později, možná to umí rozlišit někdo jiný.
Varianta b je asi celkem častý případ v reálném světě. Máme dvě sklenice vody. Na první pohled stejné, ale voda se může lišit složením, a rozdíl může být v extrémním případě otázkou života a smrti. V OOP podobná situace může nastat, když se budu pokoušet objekty rozlišit bez práce s jejich identitou. V Javě bez ==, != na objektech, bez identityHashCode apod.
V případě mutability to může být ještě zajímavější. Mohu mít dva na první pohled nerozeznatelné objekty se stejným obsahem, ale každý bude na jiné adrese. Časem se jeden z nich změní. Najednou se projeví odlišná identita, která dříve nebyla patrná.
Já k těmto věcem přistupuju podle efektu.
Pokud má objekt identitu, nezajímá mě, jak je to interně implementovaný, ale zajímá mě, že když ho změním, ovlivní či neovlivní to další věci?
V případě Theseovi lodě, záleží na tom, zda je to ta samá loď? V jednom článku na Oslu (navzdory tomu, že je to děsně pavědeckej site) bylo pěkné vyjádření, že zloděj včera ukradl tisícovku, ale dneska (díky výměně buněk, etc) už to není týž člověk co včera. A to mě přivedlo k zamyšlení - jenže tu tisícovku stále má. To, zda je či není týž nikoho nezajímá.
Pokud mám cenný obraz, a udělám z něho nějakým supr přístrojem stoprocentní kopii, tak filozoficky to první je originál a má hodnotu, to druhé je kopie, nemá hodnotu - ale v praxi mě takové otázky zajímat nebudou, a budu se spíše ptát po tom, zda ten obraz někdo koupí (nebo naopak, sběratele trefil šlak, protože zničil vzácný obraz, který byl sice padělek, ale to on nevěděl).