Re: Why is OO Popular?
From: Jeff Brooks (jeff_brooks_at_nospam.com)
Date: 05/01/04
- Next message: cstb: "Re: Why is OO Popular?"
- Previous message: H. S. Lahman: "Re: Messages as first class objects"
- Maybe in reply to: Jeff Brooks: "Re: Why is OO Popular?"
- Next in thread: Mark S. Hathaway: "Re: Why is OO Popular?"
- Reply: Mark S. Hathaway: "Re: Why is OO Popular?"
- Reply: Eric Kaun: "Re: Why is OO Popular?"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Fri, 30 Apr 2004 23:31:34 GMT
cstb wrote:
> Jeff Brooks:
>
>>... Actually, i think OO is the way people actually think.
>
> There appears to be a relationship, yes.
> However, people are capable of thinking in ways that are much
> richer than the results obtained by orienting on Objects alone.
Are you sure?
The research that created Smalltalk was done by looking at how very
young children interact and think about the world and they based the GUI
+ Smalltalk on that (the first gui was made by this research group).
This research allows us to understand the basics of understanding
because they looked at the primitive thoughts of people.
For example:
To interact with a thing you have to identify it. Children can identify
things by pointing at them even if they don't know the word for it. This
resulted in a pointing device being created called the mouse which would
allow people to point at what they want to use. All access to objects in
Smalltalk are done via references so there is a uniform way to "point"
at an object in code.
Children can't read well, but they can identify shapes and understand
how to move things. So they concluded making an interface based on
shapes and moving them is more natural than text interfaces. This
resulted in shapes and the ability to pick them up and put them where
you want them. Some of the shapes were icons, windows, etc.
Children understand certain things behave in certain ways. Things that
behave in similar ways are easier for children to learn.
Allowing things in a computer that are different to behave in similar
ways allows people to learn them faster and those things feel more
natural. This is why actions like opening a document is done in the same
way no matter what type of document it is in a GUI. The concept of
allowing different things to behave in similar ways effects both the GUI
and the programming language.
I think people can think in more complex ways as they get older but that
doesn't mean they don't think in an object oriented way. Children don't
understand logic, but they understand objects and classifications. I
think people can learn logic but i think we understand it by
understanding things, and classifications.
Another way of putting it is we can program different types of languages
using object oriented languages. That doesn't mean that OO isn't at the
core of the new languages. Children first understand an
objects/classifications so i think it is likely the basis of our
understanding.
>>When we learn about our first chair we treat it as a unique object. When we see our second
>>chair we see it has similar properties to the first chair and we begin to form an
>>understanding of chairness (the type chair).
>>
>>If I said i have a unique chair i built and asked if a person could sit
>>on it what would you say? Odds are you know that chair like things are
>>meant to be sat on so my unique chair can be sat on.
>
> Perhaps - but playing these odds can lead to unexpected results.
>
> Suppose that in addition to a shared understanding of "properties",
> we *presume* a shared understanding of "inheritance" and "hierarchy".
I think we have a shared understand of types and how they mix. People
try to formalize them for programming purposes while the brain is much
more dynamic. Our understanding of programming inheritance may be
different but i doubt our basic understanding of types is different.
If we both understand "big", and "chair" we should both understand "big
chair" as a combination of those two things. We also understand "brown
cows", "big ugly rock", "a broken mouse without a scroll wheel". These
are ideas that are combinations of other things. We combine them in the
same way because if we didn't we couldn't communicate with each other
because our language is based combinations of things.
My personal view on OO in computers is it represents a very static type
of OO while our brains are a more dynamic OO. Our brains have the
ability to deal with ambiguity without crashing. If you found out that
not all chairs can be sat on (like a model chair is to small to sit on)
you brain doesn't suddenly fail even though every other chair you know
of can be sat on. Having one instance that doesn't behave like other
instances of the same type violates strict type rules in most
programming languages.
> One might be tempted to apply something like
> the "Liskov Substitution Principle" in arriving
> at the expectation alluded to above.
I think the Liskov rule is a step to formalize OO usage because we
haven't figured out how to have computers respond to ambiguity. I don't
think the brain has this problem.
> Would you be surprised if I suggested that more information
> was required to know whether I should agree?
>
No, but i would be surprised if you couldn't read my post and understand
the little bit of knowledge i did send.
> I fully expect that, on reflection, you would see the problem.
>
> We might detour a bit into a discussion of principles, and beliefs,
> and chatter a bit about notions of class, and of delegation and
> prototypes, of encapsulation and name spaces and bindings,
> and of future performance and cached values, of identity
> and persistance and referential integrity.
>
> We might then return to the original question,
> and realizing that "everything is an object"
> is not to be taken *literally*, agree that we
> really do need something more to describe
> how people think - something akin to
> *perspective*.
>
I think perspective is just based on our own personal knowledge. We both
understand what a chair is but if you grew up with a more artistic
family your first chair may of had a single leg that was shaped like an
upside down funnel.
So your view of chair may be "likely has 1, or 4 legs", while mine is
"likely has for legs". These differences in our knowledge is what i view
as perspective. We both know different things so we have a slightly
different view of the same things because "chair" means slightly
different things to both of us.
> And so we might now remember to ask:
>
> " How long did it take you to build this chair? "
> or
> " What makes this chair of yours unique? "
> or, even
> " How many legs does this chair have?
>
> before we decide
>
> " if a person could sit on it."
I agree, but i think we both understand generally that "chairs are meant
to be sat on" even if we both have different criteria for sitting on it.
Also, having different criteria doesn't change that we both understand
chair as a classification.
> .... remainder snipped, including the rather excellent
>
>>Quotes from "Design Principals behind Smalltalk" - byte mag Aug 1981
>
>>The complete article is available here:
>>http://users.ipa.net/%7edwighth/smalltalk/byte_aug81/design_principles_behind_smalltalk.html
Seriously, that document i included a link to is just amazing. It really
shows why OO is they way it is. I think everyone should read it even if
they don't like like dynamic programming languages.
Jeff Brooks
- Next message: cstb: "Re: Why is OO Popular?"
- Previous message: H. S. Lahman: "Re: Messages as first class objects"
- Maybe in reply to: Jeff Brooks: "Re: Why is OO Popular?"
- Next in thread: Mark S. Hathaway: "Re: Why is OO Popular?"
- Reply: Mark S. Hathaway: "Re: Why is OO Popular?"
- Reply: Eric Kaun: "Re: Why is OO Popular?"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|