W3C home > Mailing lists > Public > www-ws-arch@w3.org > January 2003

Re: Dynamic invocation vs. late/dynamic binding

From: James M Snell <jasnell@us.ibm.com>
Date: Tue, 7 Jan 2003 13:26:52 -0800
To: Walden Mathews <waldenm@optonline.net>
Cc: Mark Baker <distobj@acm.org>, Sanjiva Weerawarana <sanjiva@watson.ibm.com>, www-ws-arch@w3.org, www-ws-arch-request@w3.org
Message-ID: <OF7B845DB2.60166373-ON88256CA7.0074706C-88256CA7.0075D19B@us.ibm.com>

Just a few drops of milk left.  The question is one of *meaning*, not of 
*substance*.  Of course it's still a cow, but that is only meaningful if I 
know what a cow is in the first place.  Sure, based on whatever the 
situation may be, I can gather all kinds of relevant information at 
runtime that can tell me the substance of whatever it is and can use 
dynamic data structures like JROM or whatever to record that information. 
But unless I have some type of a priori information about cows all of the 
information I collect is meaningless because I personally can't do 
anything meaningful with it.

Let's take a more practical example.  In an HTML form, why do we 
distinguish between an <input /> and a <textarea /> ?  They are both 
intended for collecting arbitrary text data of variable length.  It's not 
the *substance* of the tag that is important, it's the *meaning* of the 
tag.  One tag allows us to provide a single line of arbitrary text, the 
other allows us to provide text that includes line breaks, etc.  The 
browser, conforming to relevant specifications has a priori knowledge of 
the meaning of an <input /> tag vs. a <textarea /> tag.  The browser would 
never know what to do with those tags given nothing but their substance. 
Since it the browser understands the differences the tags meaning, it 
understands exactly what it needs to do when it encounters either of them.

Dynamic invocation and late/dynamic binding both require a certain amount 
of a prior information to assign context to the data and processes that 
are being dynamically invoked or bound.

- James Snell
     IBM Emerging Technologies
     jasnell@us.ibm.com
     (559) 587-1233 (office)
     (700) 544-9035 (t/l)
     Programming Web Services With SOAP
         O'Reilly & Associates, ISBN 0596000952

     Have I not commanded you? Be strong and courageous. 
     Do not be terrified, do not be discouraged, for the Lord your 
     God will be with you whereever you go.    - Joshua 1:9

Walden Mathews <waldenm@optonline.net> wrote on 01/07/2003 01:03:07 PM:

> James, I think you're missing the point.  Suppose you encounter some 
beast
> after dark.  It moos, so you strongly suspect it's a cow, but you can't 
see
> its
> coloring at all.  It's still a cow.  And now I feel as if I've milked 
this
> example.
> Thank you,

> Walden

> ----- Original Message -----
> From: "James M Snell" <jasnell@us.ibm.com>
> To: "Mark Baker" <distobj@acm.org>
> Cc: "Sanjiva Weerawarana" <sanjiva@watson.ibm.com>; 
<www-ws-arch@w3.org>;
> <www-ws-arch-request@w3.org>
> Sent: Tuesday, January 07, 2003 3:48 PM
> Subject: Re: Dynamic invocation vs. late/dynamic binding

> 
> >
> > > Of course you can!  All you need in order to create an abstraction
> > > is commonality.  Can't you "meaningfully" treat brown cows and black
> > > cows as cows?
> >
> > Not unless you *first* know: a) what "brown" is, b) what "black" is 
and c)
> > what a "cow" is.  But I don't thing that's the point. It's easy to 
collect
> > information about an object at runtime (e.g. what color the cow is,
> > whether you're using a square vs. a circle, etc)... it's a completely
> > different matter to assign *meaning* to that information.  E.g. what 
does
> > it *mean* to get a brown cow vs. a black cow?
> >
> > - James Snell
> >      IBM Emerging Technologies
> >      jasnell@us.ibm.com
> >      (559) 587-1233 (office)
> >      (700) 544-9035 (t/l)
> >      Programming Web Services With SOAP
> >          O'Reilly & Associates, ISBN 0596000952
> >
> >      Have I not commanded you? Be strong and courageous.
> >      Do not be terrified, do not be discouraged, for the Lord your
> >      God will be with you whereever you go.    - Joshua 1:9
> >
> > www-ws-arch-request@w3.org wrote on 01/07/2003 12:30:16 PM:
> >
> > > On Wed, Jan 08, 2003 at 01:21:22AM +0600, Sanjiva Weerawarana wrote:
> > > > > Late/dynamic binding means being able to manipulate squares and
> > circles
> > > > > with the Shape interface.  Dynamic invocation means being able 
to
> > > > > construct, for example, a "displaySquare" message without
> > compile-time
> > > > > knowledge of the full Square interface.
> > > >
> > > > That's fine - WSIF can handle that using something called JROM we
> > > > created (see alphaWorks again) to represent arbitrary schema typed
> > > > values.
> > > >
> > > > Clearly, in the absence of magic the information about the 
interface
> > > > (namely the data type defs) is needed at runtime at least 
(possibly
> > > > using xsi:type), so once that's available you're on easy street.
> >
> > > That seems to be something very different than what I'm talking 
about.
> > > Sorry, I don't see how it relates.
> >
> > > > > The former enables a client written to access Shape objects, to
> > later
> > > > > access triangles, ovals, hexagons, you name it.  The latter 
doesn't.
> > > >
> > > > I guess we're back to the REST vs. WS debate; your program cannot
> > > > manipulate those shapes in a meaningful way without an 
understanding
> > > > of what an oval is vs. a square.
> >
> > > Of course you can!  All you need in order to create an abstraction
> > > is commonality.  Can't you "meaningfully" treat brown cows and black
> > > cows as cows?
> >
> > > Where's the disconnect here?  Surely you've used polymorphism 
before?
> > > (which, in case you were wondering, the Shape example isn't trying 
to
> > > demonstrate .. exactly)
> >
> > > MB
> > > --
> > > Mark Baker.   Ottawa, Ontario, CANADA. http://www.markbaker.ca
> > > Web architecture consulting, technical reports, evaluation & 
analysis
> >
> >
Received on Tuesday, 7 January 2003 16:27:08 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 3 July 2007 12:25:12 GMT