Opinions on object oriented programming

BlitzMax Forums/BlitzMax Programming/Opinions on object oriented programming

Belief systems come into it as follows... When you create some software you *probably* try to do the `best job` you can, put your heart and soul into it, make it be the best quality or highest vision that you can muster. So I asked myself, what would be the highest vision or philosophy that I could come up with that could be the inspiration for software that I create? The answer for you might be `other games you like` or `cool ideas` or maybe you draw particular inspiration from chaos theory or see a lot of sense in open systems or object orientation - whatever.

For me, my personal sense of spirituality and my grasp of metaphysics (albeit incomplete) is the highest most refined aspect of my world and something that I felt could be applied to software engineering. I will usually base everyday actions on those beliefs and understandings, so I figured why not base software creation on such things also. Since a highly refined philosophical outlook probably makes the most sense, why not apply such philosophies to software?

Wouldn't you seek to express yourself from your highest vision and clearest awareness? And if you are, for example, religious, wouldn't you try to bring God or Jesus or some such beliefs into your work? Just because I happen to favor metaphysics means that I like to try and use those concepts in my work. So when you are attacking my work you are attacking my beliefs. For me it is not just about talking about programming in isolation, it is talking about ethics and sense of reality and the source of my inspiration that I respect.

Maybe if you personally don't take things that far and focus instead perhaps on pure computer science or pulling together favorite game genre's to create something new, or whatever your method is, that's fine too. I just happen to use other kinds of resources and guidelines in my work. So when I bring something close to my heart into my work, such as spiritual concepts or metaphysics or my sense of God or whatever, yes it does mix `business with pleasure` and puts my beleifs right out there on the programming plate. So please have some respect for that instead of trying to score points with aggressive impatience. Just because my ways are different and you might not prefer them doesn't mean you should persecute them or me.

I apologize if my way of writing seems esoteric or alludes to but doesn't convey concepts with enough clarity for you, or doesn't speak your language or match your way of thinking. I am used to thinking and writing this way because of the familiarity I have with certain things, and it's also the way I think laterally or create new perspectives. I am trying to convert these ideas into your `plain english`.

It doesn't come down to what response I expect, Robert, but such a response is ALL I can apparently expect from you. I'm sorry but you've offended me.

"No relative differences": The human bodily senses can only sense changes. Something needs to move for the eye to detect it - look at the exact same spot for a while and you become temporarily `blind`. You need a `relative` change, something which is in contrast to how things currently are, in order to sense it. There must be a difference and that difference must be in relation to the current state. So what's wrong with referring to such a thing as "relative difference"? The absence of relative difference would essentially mean that separation disappears and things seem to all blend together indistinguishably. Two objects with no relative difference simply means they appear to be one object.

"While maintaining some very small degree of detachment allowing the union to be divided later if desired": I'm using the word detachment to refer to having some kind of a handle on an object that doesn't get involved in the merging or unification of the content of two objects. The handle is detached and allows you to keep control of the fact that the objects are unique, even though they may be acting identically. You couldn't have absolute unity otherwise you'd completely lose track of there being two objects and their original separate state would be irrecoverable. In order for one object not to lose itself in another when they unite, there must be at least a small degree of detatchment from each other.

"what does a mirror have to do with it": Copying the content of one object to the content of another could be described as mirroring could it not? Or perhaps causing the content of one object to temporarily mirror that of another, to later revert to its original state?

"And I suspect you don't know yourself": Did that make you feel better cus that doesn't add anything to the conversation.

Robert, it is a different way of thinking about what objects are and how they relate to each other. Thinking of object boundaries as tangible differences between parts of the world, is to me a little short of how the world models itself. If I say okay, I have this object, let's call it a tree and lets move it around independently and place it on the landscape, that's all very well. But because that tree is now confined to the definition of what a tree is, you can't think of that tree as anything else. You can maybe compose it of branches or leaves or whatever, but this is still thinking of trees.

If for example you ask a Buddhist they might ask you, what is a tree? They might tell you actually the qualities of what makes it a tree are fleeting. It is not the bark because the bark changes. It is not the branches because they move and grow and eventually die. It is no that it is separate of the ground because it came from the ground and eventually returns to it. There is nothing inherantly permanently real about any object. But object-oriented programming treats objects as though they have a permanent fixed reality. That really stems from the fact that computers have an extreme sense of state - on or off, black and white, exists or doesn't. To me that is shortsighted and filters out some otherwise interesting possibilities of what you might otherwise do with that `object`. I also see it as the legacy of every software design principle having been in some way a dirivative of a `binary reality`, since that is the computer's native condition. You'd be surprised just how huge an influence 2^n is on all aspects of software creation.

It is more accurate, metaphysically, to say that the tree is a field of energy held in a given configuration and that it never really achieves a permanent fixed state - it is approximately a tree. It just moves `through` stages of tree life in constant transformation. So I am figuring it would be more expressive to model a world not based on `objects` that have to exactly match given specifications, but based on mediums, whereby a medium can contain a given form but that form is never fixed in a permanent condition. There is always openness and accessibility and mediums are transcendent of what they might contain. I am thinking this is going to be a better way to model the world. It would give more flexibility, efficiency and is an even more natural and accurate representation of reality - for me anyway.

I'm sure there are benefits to it that I haven't realized yet because I am still refining it and designing an implementation of it. I would hope that in a given game project, for example, it will make things much easier to model, to organize, and to interrelate. It should make sharing between objects much more intuitive and direct. It allows a system to be completely decentralized with the option of centralization at the same time. It frees objects from being in a hierarchy and allows any kind of dynamic structure between them. It ultimately gives the user more freedom and should be easier to create with.

Does that help?