I was allowed to ask at meta because my question was locked.
Probably I had to start with revising what programming mainstream tells about the topic. That is after all the core of my concern, inappropriate terminalogy, that I believe deep-rooted in the community. The first stop learning about MI is Wikipedia. The article is basically reduced to the Diamond problem and its mitigation. It is not surprising therefore that the most popular question at programmers, why do you hate MI also identifies MI problem with diamond problem. Google engeneers answer to that with a proposal to fix the language, propose fixes to the language saying that
MI can be enabled through enabling the Diamond and give us an example with a simple join (3 points),
class OrderedSet extends Set, Sequence
with Set and Sequence providing collection-specific toString implementation. My question however stems from the fact that this class hierarchy corresponds to
which is not a diamond because diamond. The diamond has 4 points
I have nothing left with but to read about the Diamond problem.
The diamond problem says that we get (naming) conflicts because D obtains two copies of same properties of A. And we see that programmers blame the common ancestor for the conflicts. However, question what if we inherit from
graphic, both of which have a
draw method, what does it mean to draw the resulting object? (I had less far-fetched example with digital circuits in my locked question if you ask
why do we need to merge deck with graphics) clearly demonstrates how naming clash without the common ancestor, simply, likewise Guava language demo above. Guava demo does not have the diamond problem. These are examples of having the naming clash, due to simple Join, without the Diamond. You can have naming clash without the common ancestor. But, the programmers seem to identify MI-caused naming conflicts with Diamond problem. For me, it is a logical fallacy, like saying that "all birds are ducks because we know that all ducks are birds". Indeed, all ducks are birds but I see that there are other birds, who are not ducks. Why do you keep telling me that pigeon is a duck, like Guava designers do? Why do you call something
Join is assumed?
I also suggested that Diamond may solve the problem, created by Join. In this light, reducing MI-caused naming conflicts to the Diamond problem is even more rediculous. Why do you do so? I ask only because I like order and feel really uncomfortable when everybody says
white when black is demonstrated. How can you feel otherwise?
I would also ask why do you hate that question? How should I appreciate comments like
this question cannot have the answer (how did you know? by closing the question?) or
it was answered already or
stop telling us the trivial things or
it is not clear at all. And all these controversial attacks can come from a single person. I welcome only analysis of my question. This question does not let me sleep. How can I make it sharp?