From: topmind on


AndyW wrote:
> On Sat, 12 Jan 2008 17:55:50 -0800 (PST), topmind
> <topmind(a)technologist.com> wrote:
>
> >
> >
> >Daniel T. wrote:
> >> alexcpn <alexcpn(a)gmail.com> wrote:
> >>
> >> > Maybe I should frame the question more clearly- what is it so special
> >> > in OO that makes it so successfully industrially. I really don't
> >> > 'believe' that it is because of the way OO entity help us in closely
> >> > modeling real life etc
> >>
> >> Here I must disagree. I think OO does help us to more closely model the
> >> real world.
> >
> >Note that a good many OO proponents disagree that OO is mostly about
> >"modeling the real world". Bertrand Meyer, for example, dismisses the
> >idea that modeling the real world is the key point of OO. Further, the
> >real world sometimes is not the ideal approach. We wouldn't want to
> >model a physical card catalog in a library, for example. We have
> >technology that transcends 3D card cabinets. Why be stuck in the 3D
> >world when a virtual world (indexing) can have gazillion dimensions?
>
> There are actually many different philosophies on how to approach OO.
> For example, I am what is called a purist, so I believe that an
> object has to be a tangible [real world] thing, with services and
> mixins used to deal with rule violations. Others think that if
> something has a name, its an object, yet others have even more
> esoteric rules.

The problem is that the real world is limiting. With computers we can
transcend limits of the real world to a fair extent; and if you don't
take advantage of this, you lose some of the power and flexibility
that computers can provide, putting your client at a disadvantage.

Take for example car parts. Now, a CADD system may find it very useful
and efficient to treat the parts as hierarchical sub-assemblies, or at
least object pointers to each other that reflect their touching in the
real world (inside the car). Skimming around among the parts on the
CADD screen closely matches the object pointers in a typical real-
world-based OO model.

However, materials experts, inventory experts, vendor/supplier
experts, safety experts, and accountants are also interested in the
very same parts. However, their interest does not generally reflect
the part's place in the car. Their categories and groupings and
classifications are all different. We need something more powerful
than a bunch of pointers that reflect real-world touching. We need a
"relative perspective engine", and OO is not that because it would
become a huge pasta bowl of pointers if we try to scale the same
technique that worked for CADD to all these different users.

And if you factor it right, "behavior" becomes a secondary issue and
thus "behavioral wrappers" that OO likes are less useful and
meaningful. The real "meat" of the system is in its attributes and
meta-data, NOT behavior per se.

>
> ----------------
> AndyW,
> Mercenary Software Developer

-T-
From: Dmitry A. Kazakov on
On Thu, 24 Jan 2008 21:26:24 -0800 (PST), topmind wrote:

> The problem is that the real world is limiting. With computers we can
> transcend limits of the real world to a fair extent;

Computers are a part of the real world. They cannot transcend the limits of
themselves.

> Take for example car parts. Now, a CADD system may find it very useful
> and efficient to treat the parts as hierarchical sub-assemblies, or at
> least object pointers to each other that reflect their touching in the
> real world (inside the car). Skimming around among the parts on the
> CADD screen closely matches the object pointers in a typical real-
> world-based OO model.
>
> However, materials experts, inventory experts, vendor/supplier
> experts, safety experts, and accountants are also interested in the
> very same parts. However, their interest does not generally reflect
> the part's place in the car. Their categories and groupings and
> classifications are all different.

Ever heard about MVC? Don't believe those who talk about immanent objects.
The message of OO is different. It is about hiding information and thus
allowing multiple views, not just multiple implementations. Whether a view
is relational or hierarchical is determined by the set of operations its
interface publishes = using the language of mathematics - by the algebra
of.

Note it carefully, OO is *not* about any certain object algebra [*]. It is
about a framework where you can deal with object algebras of different
nature (be it RA, arithmetic or rendering primitives). Surely there exist a
certain algebra of types in which you describe the object algebra. But that
has nothing to do with the object one.

> We need something more powerful
> than a bunch of pointers that reflect real-world touching.

That does not. There is nothing in common between pointers and real world,
except that pointers is a part of. See above, pointers (if any) is an
implementation detail. If you still don't get it, substitute "table index"
for "pointers" in your sentence above.

------------------------
* "object" means here not OO, but "application" in the sense of

http://en.wikipedia.org/wiki/Metalanguage

--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
From: topmind on


Dmitry A. Kazakov wrote:
> On Thu, 24 Jan 2008 21:26:24 -0800 (PST), topmind wrote:
>
> > The problem is that the real world is limiting. With computers we can
> > transcend limits of the real world to a fair extent;
>
> Computers are a part of the real world. They cannot transcend the limits of
> themselves.

Perhaps I didn't word it quite correct. A computer model of the world
(or part of it) can do things that the real-world counter-part cannot.
In a video game you can jump 80 feet and live. In real life you
cannot. Or compare a library (paper) card catalog to Google-like book
search engines used in libraries now. Only a big dummy would recreate
the card catalog in a computer as is.

>
> > Take for example car parts. Now, a CADD system may find it very useful
> > and efficient to treat the parts as hierarchical sub-assemblies, or at
> > least object pointers to each other that reflect their touching in the
> > real world (inside the car). Skimming around among the parts on the
> > CADD screen closely matches the object pointers in a typical real-
> > world-based OO model.
> >
> > However, materials experts, inventory experts, vendor/supplier
> > experts, safety experts, and accountants are also interested in the
> > very same parts. However, their interest does not generally reflect
> > the part's place in the car. Their categories and groupings and
> > classifications are all different.
>
> Ever heard about MVC? Don't believe those who talk about immanent objects.
> The message of OO is different. It is about hiding information and thus
> allowing multiple views, not just multiple implementations. Whether a view
> is relational or hierarchical is determined by the set of operations its
> interface publishes = using the language of mathematics - by the algebra
> of.

I never liked MVC. Its too buerocratic, preventing mostly imaginary
problems.

>
> Note it carefully, OO is *not* about any certain object algebra [*]. It is
> about a framework where you can deal with object algebras of different
> nature (be it RA, arithmetic or rendering primitives). Surely there exist a
> certain algebra of types in which you describe the object algebra. But that
> has nothing to do with the object one.

Perhaps its time for an example.

>
> > We need something more powerful
> > than a bunch of pointers that reflect real-world touching.
>
> That does not. There is nothing in common between pointers and real world,
> except that pointers is a part of. See above, pointers (if any) is an
> implementation detail. If you still don't get it, substitute "table index"
> for "pointers" in your sentence above.

But in relational one tends to deal with links in a higher-level way
rather then link instance per link instance like OO tends to. It is
the classic fight between navigational structures and relational
structures that was fought almost 40 years ago. Perhaps it is
subjective, but to me, relational generally won.

>
> ------------------------
> * "object" means here not OO, but "application" in the sense of
>
> http://en.wikipedia.org/wiki/Metalanguage
>
> --
> Regards,
> Dmitry A. Kazakov
> http://www.dmitry-kazakov.de

-T-
From: AndyW on
On Thu, 24 Jan 2008 21:26:24 -0800 (PST), topmind
<topmind(a)technologist.com> wrote:

>
>
>AndyW wrote:
>> On Sat, 12 Jan 2008 17:55:50 -0800 (PST), topmind
>> <topmind(a)technologist.com> wrote:
>>
>> >
>> >
>> >Daniel T. wrote:
>> >> alexcpn <alexcpn(a)gmail.com> wrote:
>> >>
>> >> > Maybe I should frame the question more clearly- what is it so special
>> >> > in OO that makes it so successfully industrially. I really don't
>> >> > 'believe' that it is because of the way OO entity help us in closely
>> >> > modeling real life etc
>> >>
>> >> Here I must disagree. I think OO does help us to more closely model the
>> >> real world.
>> >
>> >Note that a good many OO proponents disagree that OO is mostly about
>> >"modeling the real world". Bertrand Meyer, for example, dismisses the
>> >idea that modeling the real world is the key point of OO. Further, the
>> >real world sometimes is not the ideal approach. We wouldn't want to
>> >model a physical card catalog in a library, for example. We have
>> >technology that transcends 3D card cabinets. Why be stuck in the 3D
>> >world when a virtual world (indexing) can have gazillion dimensions?
>>
>> There are actually many different philosophies on how to approach OO.
>> For example, I am what is called a purist, so I believe that an
>> object has to be a tangible [real world] thing, with services and
>> mixins used to deal with rule violations. Others think that if
>> something has a name, its an object, yet others have even more
>> esoteric rules.
>
>The problem is that the real world is limiting. With computers we can
>transcend limits of the real world to a fair extent; and if you don't
>take advantage of this, you lose some of the power and flexibility
>that computers can provide, putting your client at a disadvantage.
>
>Take for example car parts. Now, a CADD system may find it very useful
>and efficient to treat the parts as hierarchical sub-assemblies, or at
>least object pointers to each other that reflect their touching in the
>real world (inside the car). Skimming around among the parts on the
>CADD screen closely matches the object pointers in a typical real-
>world-based OO model.
>
>However, materials experts, inventory experts, vendor/supplier
>experts, safety experts, and accountants are also interested in the
>very same parts. However, their interest does not generally reflect
>the part's place in the car. Their categories and groupings and
>classifications are all different. We need something more powerful
>than a bunch of pointers that reflect real-world touching. We need a
>"relative perspective engine", and OO is not that because it would
>become a huge pasta bowl of pointers if we try to scale the same
>technique that worked for CADD to all these different users.
>
>And if you factor it right, "behavior" becomes a secondary issue and
>thus "behavioral wrappers" that OO likes are less useful and
>meaningful. The real "meat" of the system is in its attributes and
>meta-data, NOT behavior per se.
>
>>
>> ----------------
>> AndyW,
>> Mercenary Software Developer
>
>-T-

If you have an object (real world) then you can search on the
attributes of that object. No-one cares of the search is represented
to the user. If you are manipulating visual representations or
trawling lists of attributes it makes no difference, at the end of the
day your still dealing with objects.

If you find yourself searching on metadata, then your not dealing with
objects or a real world thing.

Basically, if its abstract, then its not an object is it.

----------------
AndyW,
Mercenary Software Developer
From: AndyW on
On Fri, 25 Jan 2008 17:21:00 -0800 (PST), topmind
<topmind(a)technologist.com> wrote:

>
>
>Dmitry A. Kazakov wrote:
>> On Thu, 24 Jan 2008 21:26:24 -0800 (PST), topmind wrote:
>>
>> > The problem is that the real world is limiting. With computers we can
>> > transcend limits of the real world to a fair extent;
>>
>> Computers are a part of the real world. They cannot transcend the limits of
>> themselves.
>
>Perhaps I didn't word it quite correct. A computer model of the world
>(or part of it) can do things that the real-world counter-part cannot.
>In a video game you can jump 80 feet and live. In real life you
>cannot. Or compare a library (paper) card catalog to Google-like book
>search engines used in libraries now. Only a big dummy would recreate
>the card catalog in a computer as is.

It seems to me from reading the above that you may be trying to
classify everything as an object (there is a camp of people that do
this) and then saying - hey, not everything fits into that model
ideally.

From my view, not everything is an object and there are special rules
that state what is and what isnt. There are also special rules for
dealing with the stuff that isnt, such as the use of services and
mixins (functions/procedures and data).

----------------
AndyW,
Mercenary Software Developer