Blog archive Knowledge and information Technical development General Site updates Articles Opinions Quotes Reviews Work and technology Ego ergo sum About this site
Thu, 20 May 2004 13:00:00 GMT
Binary philosophy stand-still : I don't know how to procede
I'm stuck in a traffic jam created by roadwork somewhere on the information and knowledge highway between computer languages and the philosophy of science. I struggle these days with finding the way to go forward, because my philosophic musings are no longer compatible with my computer actions. Back in the days when object-oriented programming was devised, we all hailed it, and said it was good. And it was, only it is still touted as the Credula Ultima of programming techniques out there.
My own philosophical musings of late tells me a different tale; object class and object instances are a narrow way of going about things. It was a good step from functional abstractions, but what ever happened to the next step? We want to corrolate human understanding with computational logic, yet our current abstractions are in trying to create something viable with our old tools. A class : person. An instance : me. A : problem.
I am not an instance of a class, I am a class. There really is no classification that is true to human cognition; it only mimics it, creating an abstraction that seems to work. My "seems to work" does not equate "does work" or any form of truth. To equal cans of Coke is not exactly equal. The are both unique, as everything else in the world, and thus deserving of being a class all of by themselves. And as such, there really are no classes, only instances. Makes sense?
The class hiarchial systems we create are abstractions so that computers can come close to how humans work. Or, even the other way, they are created as philosophical constructs so that we can understand them, and a nice side effect is that we can put them into a computer and make some logic sense, too.
It is hard to shake the notion of a class system; it is permuted through our language ( a bike, the bike ) and, in speaking of my own profession, our computer languages ( class Bike, instance aBike ), and since it makes almost perfect sense, it must be true? Well, I don't think so. Let's look at the class Bike or the expression "a bike"; it is a non-specific construct of two wheels, you usually sit on it, it has a nice bell, you ride it to go from A to B, and you use your feet on pedals to make it go. Umm, fine, but aren't there enough bikes out there as exceptions to this general idea that the idea shouldn't really be general? In fact "bike" for me means a whole range of constructs, from one, two and three wheelers, lying, standing, tilting, motorised, pedals, water, land, air ... on and on, bikes and bikes. "Yes, " I hear you say, "class inheritance is what you use for these things." True, but is the seat you sit on a property of some sub-class or is it a class of bikes? Ah, enter the wonderfulness of multiple inheritance, that solution to all things.
Multiple inheritance also appeals to us because the most flaglant example of it is very close to us; we all have a mum and a dad; we inherited bits from both. But any similarity between the computer language construct and nature ends there, because even if the basic idea is the same, the reality totally bangs out; I didn't inherit my mums blue eyes. My biggest problem with multiple inheritance is that it is a hack, a cludge, jolted on to the class-instance solution in trying to solve the notion that the class-instance model is flawed. Multiple inheritance is an abstract construct created to make classification work. Why?
When classes came along it was meant to make it simpler to create datatypes and encapsulation of code to work on those datatypes. As we all know, the datatype is fundamental to our programming languages. There is no such thing in real life, mind you, but computers being invented by people we needed a few kludges, and datatypes fitted the bill. It makes sense too, I'm not bashing the construction of the datatype; it was nescessary then and probably still is, as we need simple abstraction to work with and to fit into our bits and bytes of our given problem. But there is no such thing in real life. None, not even the atom is a fixed datatype, if you want to meddle in such a level of detail. Can you see the link here between how we try to classify things and how there is no real life datatypes?
There is no "a bike", but "that bike" exist. Yet, when we see a bike, we think "that is a bike." The classification "Sonata for two recorders and Basso Continuo" is broken the instance someone dares to play that sonata with two flutes. Do we call Bach's keyboard concertoes for Piano, Cembalo, Harpsichord or Keyboard concertoes? I've heard it played on guitars. Is it then a "originally keyboard concerto that can be played on other instruments as well"? What if someone hums it? What is it in notation form?
Classification is a human invention of quick guiding us from a general class to a specific instance, but is - in my opinion - not the way we do cognitive thinking at all; I think it is much more evolved than that. In this old way of thinking, our cognitive minds are reduced to keywords and associations between them, and they are - and note this! - words. I think we hear a word, picture something in our minds, and do visually lookups for similarities in "word - picture" until the right picture comes along, and we nail the final word. Studies with blind people show they have a very active inner minds, and they always have an idea of what things look like, even though they've never actually seen anything. How come?
Humans are visual beings. The reason we are able to think about complex things stems totally from being able to visualise what you're talking about. How many times haven't you heard something being explained, and uttered "I'm trying to visualise what you're saying ..." Maybe you see a figure or graph, and Wham! it hits you. A picture says a million words, because words are secondary, at least at our stage in the evolution of things. Maybe it will change, but right now we are highly visual beings.
Which bring me back to the beginning; a class and an instance are things - words - we use to describe what things are. We can visualise instances just fine, but abstractions like classes are harder to get. So why are we doing it? In knowledge technologies we're obsessed with classification, almost seeing it for the Holy Grail, yet no one has proven it to work very well, after how many years of high-tech AI research? The psychologists of the world are in agreement that classification is the way we work, but I am not convinced. It is all instances, and properties don't exists in as so far you don't want to call certain instances for properties. What is really the property "brown" of my eyes? In the instance of "Alexander" it is this specific combination of colors, patterns and tissue that makes my eyes. The "brown eyes" section of my passport is not more specific than "bike", yet it is the best we've come up with so far for identification.
Things are just instances in a geographical environment, nothing more. The troubling thing with this, and which is why we're trying to meddle in all these abstractions, is that the world is in constant change, and things move about, and change, and we want to stop the world, if only for a second, so we can write it down and record it. of course, the problem is that the world moves again, and a lot of our work is futile. Things happen in real life a long time before they happen in the computer abstractions; my homepage says my daughter Lilje is not yet one year, however she had her one year birthday yesterday, and I haven't updated the page yet. What's up with that?
So what's my problem? What's this stand-still you're talking about? It is just that; for the world to work in the way we do programming now, it needs to stop. The computer languages I use in attempts of trying to express the information and knowledge I want to express are not designed in such a way to probmote these goals, they are created to express something lying down, stopped in its tracks, or even dead. I create classes and instances and multiple inheritence and all the OOP marvels of the world and yet can't seem to get any closer to the core knowledge of my highly moving data.
I'm gonna go away for a few and have a think on what to do next, which way to go, what computer language and constructs to create. I need to find some more human way of doing things, or else I'll lose my mind. Again. Another paradigm shift in the making. I can feel it. The air is thick with mositure, and the cold is embracing me as I face the outdoors.Permalink (Thu, 20 May 2004 13:00:00 GMT)| Comments (11) | Opinions