So much of object oriented programming revolves around classification. And yet classification is subjective. Classification is simply an artifice that helps us to organize a dis-organized world. If gives us a way to think about things in a general way.
There are many properties that we can infer from an item in a classification hierarchy. But such inference can also get in the way of understanding an item. It is just another form of generalization. Anyone that has had injury done to them because they were miss-classified, understands the problems with generalization.
But it is an expedient without which the world is a chaotic mess.
Part of what we consider 'reason' is our innate ability to classify, to generalize a set of classes, and then to be able to make predictions about new classes that appear to belong to a set. We don't see the particulars of this process, we just accept it as part of our thinking ability.
But this expedient that gives us thought fails when we try to apply it in any sort of absolute sense, especially when modeling reality. It works well, however when we apply it to artifices that we've built ourselves. So we can build a system that fits into a classification scheme, but that system is artificial. Reality resists classification.
Another problem with classification is that we tend to classify based on properties, especially static properties. So we classify animals based on whether they have feathers or fur. We might be better served by classification based on behavior, but anything that is worth understanding has complex behavior. Behavior is based on state, which is an expression of properties. So classification falls back to distinguishing properties, and inferring behavior from that. We may wish to skip the observation of properties, and simply consider behavior instead, since behavior the the expression of change that we wish to predict in the first place.
In the Java programming world, we classify behavior with interfaces, which ignore properties and state, in favor of defining the verbs that an object is capable of. I see a slow transition in the object-oriented programming world away from classification based on properties, to classification based on behaviors. This allows us to define a behavior without being specific about the properties and state that manifest it. It sometimes means that we have to define the specifics of a behavior more than once, but that can be mitigated by creating a new artifice that defines these specifics for the majority cases, without imposing them on the exceptional cases.
What a mess, there must be a better way of dealing with these computing/communication devices, but I fear that our own thinking processes are getting in the way. We force our computers to see the world in this way because we see the world in this way. Philosophy has taken over thinking about computers, but maybe we should get back to looking simply at mechanics without using the terms that we have come up with to define our own imperfect thinking.
No comments:
Post a Comment