OO modelling and the real-world

NOTE HXA7241 2011-01-16T09:49Z

A philosophical answer to a post at Lambda The Ultimate (wbcvsn-answer:http://lambda-the-ultimate.org/node/3265) (pointed out by axisofeval) which asks: “Why are objects that we use in programming so vastly different from real-world objects?”

First, software is not really supposed to match the real world anyway. It is a set of building blocks. It is defined by, it takes its form and structure from, how and what it is used for: purposive building of useful artifacts. This is doing something quite different to human descriptions of objects. There must still be some relation to the real world (or mental conceptions of it), but that relation only means something according to the context of building something.

Ultimately, there cannot be a match because there is not really any stable human conception of objects. ‘Mental’ objects have no definition, no boundaries. They are all ever-changing clouds in one big network of overlapping concepts. For humans, there is always a new, different way to see, describe, or relate to something. No fixed abstraction can ever accommodate that or ‘converge’ on it over time.

Software's job (its use) is to be a construction-set for computing definite effects. A human's ‘job’ is to continually create new ways of seeing and doing things. In software, there may be a background aspiration to make a single design, a single final artifact, but because of the unfixed ambiguity of human concepts this will always fail eventually. We know it from experience, but theoretically it is essential too.

Imagining that software should match a mental/real-world object is like saying you want to solve a problem, but without ever finally saying what the problem is. It is impossible – it does not even make sense. The activity of solving presupposes a definite problem.

To paraphrase Wittgenstein:

When the solution cannot be put into bits, neither can the problem be put into bits. The puzzle does not exist. If a problem can be framed at all, it is also possible to solve it.