[Zope3-dev] Proposed terminology change: distinguish between "implements" and "provides"

Phillip J. Eby pje@telecommunity.com
Fri, 07 Mar 2003 15:48:23 -0500


At 02:36 PM 3/7/03 -0500, Jeremy Hylton wrote:

>There were a bunch of internal discussions earlier where suggestions
>like this came up.  I dislike the use of closely related words like
>implements, provides, or supports to mean different things.  I'll never
>be able to remember which word maps onto which concept.  All the
>concepts are closely related to implementing interfaces.  I think an
>object that supports an interface must provide an implementation for it,
>perhaps through its class.  So support, provide, and implement all mean
>basically the same thing in my mind.

That's okay.  IMO, it's not a requirement that the terminology be 
self-evident, only that it be consistent and unambiguous in its usage, 
allowing precision when required, and rendering subliminal support for the 
distinction.  So I'm open to alternative terminology, as long as there is a 
distinction.  A mere glance at the Wiki page, or reference to any previous 
thread on this subject will amply serve to demonstrate how difficult it is 
to even talk about this subject without confusion between meanings 1 and 2 
of the "implements" concept.

If there is some other word that you prefer, that's not closely related to 
"implements", that means, "you can use this interface on this object", 
perhaps that could be used instead?

Please note that the fact that this issue keeps coming up in internal *and* 
external discussions, seems to suggest that there is in fact a real problem 
here that should be addressed, not ignored.


Side note: For me, "provide" and "implement" aren't particularly 
interchangeable, anyway.  Consider your sentence, "an object that supports 
an interface must provide an implementation for it".  If those words were 
fully interchangeable then you could have also written:

"an object that implements an interface must also support a provide for it", or

"an object that supports an interface must also implement a provide for it"

This strongly suggests that "provide" is not fully interchangeable with 
support/implement, purely from a grammatical point of view.