From: S Perryman on
topmind wrote:

> S Perryman wrote:

>>You have certainly shown that your solution *cannot deal* with #2 and #3.
>>Your "table" combinatorially explodes as the cartesian product of
>>types and properties. Every type represented in that table, and the
>>functions associated with the type, are impacted by *every change* to the
>>table.

> Please clarify. I don't see a combinatorial explosion. What
> "function" are you referring to?

I am going to nail this one for good.

The topic : variant records
The example : publications records systems (libraries etc)
The example source :

Object Oriented Software Construction (2nd ed) , pages 61-62.


In order to simplify the debate (source code etc) , I have limited the
scope to the creation of publication entities, and read access to their
properties.

I have provided a simple impl using type substitutability. All of the
features and mechanisms used are supported by *real* (not fictional) prog
langs/envs.


Provide your *like-for-like* implementation in "procedural/relational" form
for the above. Indicate where appropriate where the artifacts (interfaces
etc) are in the same or different modules (source files etc) .

You are not constrained to any particular prog lang/env. You can take the
mechanisms etc from wherever you so desire. But said mechanisms must be
demonstrable in *existing* prog langs/envs (fantasy has no place here) .

If you can fit your impl within a reasonably-sized Usenet posting, do so.
If not, put it somewhere (web page etc) where we can see it.


Once we have your impl, we can start to discuss the real issues of the
variant record problem that you claim "procedural/relational" does not
introduce/suffer
(see http://groups.google.com/group/comp.object/msg/745997a1bc30949f) ...


Regards,
Steven Perryman
From: topmind on


S Perryman wrote:
> topmind wrote:
>
> > S Perryman wrote:
>
> >>You have certainly shown that your solution *cannot deal* with #2 and #3.
> >>Your "table" combinatorially explodes as the cartesian product of
> >>types and properties. Every type represented in that table, and the
> >>functions associated with the type, are impacted by *every change* to the
> >>table.
>
> > Please clarify. I don't see a combinatorial explosion. What
> > "function" are you referring to?
>
> I am going to nail this one for good.
>
> The topic : variant records
> The example : publications records systems (libraries etc)
> The example source :
>
> Object Oriented Software Construction (2nd ed) , pages 61-62.
>
>
> In order to simplify the debate (source code etc) , I have limited the
> scope to the creation of publication entities, and read access to their
> properties.
>
> I have provided a simple impl using type substitutability. All of the
> features and mechanisms used are supported by *real* (not fictional) prog
> langs/envs.
>
>
> Provide your *like-for-like* implementation in "procedural/relational" form
> for the above. Indicate where appropriate where the artifacts (interfaces
> etc) are in the same or different modules (source files etc) .
>
> You are not constrained to any particular prog lang/env. You can take the
> mechanisms etc from wherever you so desire. But said mechanisms must be
> demonstrable in *existing* prog langs/envs (fantasy has no place here) .
>
> If you can fit your impl within a reasonably-sized Usenet posting, do so.
> If not, put it somewhere (web page etc) where we can see it.
>
>
> Once we have your impl, we can start to discuss the real issues of the
> variant record problem that you claim "procedural/relational" does not
> introduce/suffer
> (see http://groups.google.com/group/comp.object/msg/745997a1bc30949f) ...

Before I do so, I need to know what success criteria I am trying to
optimize here. I can think of a least 3 different ways to go about
this.

For example, if data integrity is the single utmost concern, I might
make a separate table for each publication "type".

However, if having user-creatable/alterable publication "types" is
also important (or at least table-driven pub type creation to avoid
touching app code), I wouldn't make separate tables for each "type",
but have a shared table instead.

We can also go full-out dynamic and allow a "power user" to add as
many fields as they please and as many "publication types" as they
please.

I don't want to get all the way through only to have you say, "I don't
care about those other factors, mine objectively does better on factor
X, and thus you've been beaten." I generally strive for the best
compromise of lots of factors (code volume, servicability, external
tool exportability, reliability, cost, etc.). If you are going to
drum on a single factor, which often happens in these kinds of
debates, then we will just end up talking past each other.

Targeting a single-shot implementation and targeting a tool that many
or any library can use will also change the nature of the app. If you
target many organizations, one usually finds that different places
have different ways of doing things, even if it is not the most
logical, and the sales team wants you to accommodate their
idiosyncrasies as best you can.

Further, the issue of how do deal with multi-media publications, such
as a book that comes with a CD and/or a VCR tape, has not really been
addressed. (It may depend on how the library wants to track them: as
a single publication or separate ones.)

Thus, we need to be clear on these up front.

>
>
> Regards,
> Steven Perryman

-T-
From: S Perryman on
topmind wrote:

> Before I do so, I need to know what success criteria I am trying to
> optimize here. I can think of a least 3 different ways to go about
> this.

There are no "success" criteria, beyond providing something to compare.
That aside :

1. The issues concerning the variant problem relate to change, and
correctness (as I stated way back when) . Performance issues (size, speed)
are therefore not a consideration (for me anyway) .

2. We are not building a publications meta-system (user-definable
publication types etc) .


[ snip ... ]


Regards,
Steven Perryman
From: topmind on
On Jan 31, 9:06 am, S Perryman <q...(a)q.com> wrote:
> topmind wrote:
> > Before I do so, I need to know what success criteria I am trying to
> > optimize here. I can think of a least 3 different ways to go about
> > this.
>
> There are no "success" criteria, beyond providing something to compare.
> That aside :
>
> 1. The issues concerning the variant problem relate to change, and
> correctness (as I stated way back when) . Performance issues (size, speed)
> are therefore not a consideration (for me anyway) .
>
> 2. We are not building a publications meta-system (user-definable
> publication types etc) .

But above you said "change". Meta-tizing stuff often makes it easier
to change. If I use a feature table, I can add or change many
publication fields/features or "types" withOUT touching a *single*
line of code. Thus, if your change metrics is "how much code is
changed", you are gonna get hammered on that. If you want to get
slammed on that criteria, that's fine by me, but I want to make sure
this is known up front so that I don't waste code on a known sore
point.

And I don't think it is fair to count a meta-table change as "severe"
as an app-code change. Why should adding a new specific publication
instance be counted low but adding a new publication "type" be counted
high? That does not make sense to me.

I would probably count a meta-table change as more costly/risky than
adding a new book instance (regular data entry), but not nearly as
much as having to change the app code. It is somewhere in-between.

It seems more and more that the outcome of this will depend on how one
scores both the frequency and costs of various change scenarios.

What I find in similar debates is that OO'ers often have poor sense of
change frequency and cost (at least compared to my observations/
experience). They overweigh specific changes at the expense of more
realistic changes. I think OO books hammer on a few change patterns
over and over and eventually it brainwashes the reader to only see OO-
friendly changes. It's like TV commercials that point out say split
ends: stuff one would probably hardly notice if the commercial didn't
make it sound like The Express Train to Uglyville.

OO authors have psyched-out the IT world.

>
> [ snip ... ]
>
> Regards,
> Steven Perryman

-T-
From: S Perryman on
topmind wrote:

> On Jan 31, 9:06 am, S Perryman <q...(a)q.com> wrote:

>>topmind wrote:

>>>Before I do so, I need to know what success criteria I am trying to
>>>optimize here. I can think of a least 3 different ways to go about
>>>this.

>>There are no "success" criteria, beyond providing something to compare.
>>That aside :

>>1. The issues concerning the variant problem relate to change, and
>>correctness (as I stated way back when) . Performance issues (size, speed)
>>are therefore not a consideration (for me anyway) .

>>2. We are not building a publications meta-system (user-definable
>>publication types etc) .

> But above you said "change".

Correct.


> Meta-tizing stuff often makes it easier
> to change. If I use a feature table, I can add or change many
> publication fields/features or "types" withOUT touching a *single*
> line of code. Thus, if your change metrics is "how much code is
> changed", you are gonna get hammered on that. If you want to get
> slammed on that criteria, that's fine by me, but I want to make sure
> this is known up front so that I don't waste code on a known sore
> point.

We shall see, shall we not.


> And I don't think it is fair to count a meta-table change as "severe"
> as an app-code change. Why should adding a new specific publication
> instance be counted low but adding a new publication "type" be counted
> high? That does not make sense to me.

If you wish to use "meta-tables" as a *developer* , that is fine.
But we are not implementing a publications meta-system where the end
user can define their own publication types.

Other than that, keep to the example as I defined it ...


Regards,
Steven Perryman