[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.