4 ms·
Lieberman invented this term. It did not exist prior to his work. I have confirmed this with Lieberman himself as well as Jim Coplien and David Ungar. The Desi
by saturnflyer 14y ago
Lieberman invented this term. It did not exist prior to his work. I have confirmed this with Lieberman himself as well as Jim Coplien and David Ungar.
The Design Patterns book sought to clarify our language yet it has this error. I'm seeking to clarify our language.
- peeters 14y agoHe did not invent the term. "Delegate" and "delegation" have been around a lot longer than computers. Here's a definition: Delegate. Verb: Entrust (a task or responsibility) to another person, typically one who is less senior than oneself: "he delegates routine tasks". It's not hard to see how that would be analogous to a variety of situations in computing. If you want a term to be more pure, think of something more creative. Edit: That's not to take away from your point that the GoF actually cited Lieberman in their use of delegation. If they misunderstood his intention, sure raise that point.
- saturnflyer 14y agoIn programming terms, he did. I appreciate that it is an English language word and was initially what I thought it meant. But when he applied the term he meant it specifically. Otherwise, we already have a term for this: forwarding. So why not argue about people using "delegation" when they just mean "forwarding"?
- peeters 14y agoAlright, let's take it for a spin. What do you call the thing that you're forwarding to? The endpoint? The "nextLinkInChain"? Delegate seems pretty natural to me in most domains, but as you say, I've been poisoned by GoF.
- saturnflyer 14y agoI'm planning to follow up in another post, but Gunther Kniesel coined the term "consultation" (http://javalab.cs.uni-bonn.de/research/darwin/delegation.html http://javalab.cs.uni-bonn.de/research/darwin/delegation.htm...) and I've used a generic "attendant" term to refer to the other object. Here's an excerpt from my take on the 2 characteristics of consultation (or what is typically called "delegation") in my book ---- The first is the connascence of method names between collaborating objects. Connascence refers to the point and type of coupling between objects where a change in one object requires a change in the other. Consultation occurs when the message recipient forwards a message to another object which handles the response to the same message. A calculator would receive a balance message and forward that message to an account which responds to balance. Rails’ implementation of delegate does include a caveat that the message might be prefixed before it is forwarded, but the implementation is still connascent by method name. The second aspect of consultation is that the message recipient makes no modifications to the algorithm for handling the response. ---- I wrote to Lieberman to ask his opinion and he sided with NOT introducing the "consultation" term. But his reason was not because our misguided understanding of delegation is correct, his reason was because we already have a name for this: forwarding. The quote above is from my argument about why I think it is valuable to use the term "consultation".
- teamonkey 14y ago> He did not invent the term. "Delegate" and "delegation" have been around a lot longer than computers. So did "inheritance" but it means something very specific in programming parlance.
- lmkg 14y agoSorry dude, language doesn't work that way. Just because Lieberman invented the term, doesn't mean he's right. Definitions of words are decided by use, not authorship. The language doesn't need clarifying, because the term has a definition, which is perfectly clear. Through a quirk of history, this perfectly clear definition happens to be different than the other perfectly clear definition which preceded it. Due to this retcon, Leiberman's original definition ends up being incorrect. Wasn't the first time something like this happens, and it won't be the last. So it goes.
- saraid216 14y ago> Sorry dude, language doesn't work that way. If his post persuades everyone and they start using it the way he wants them to, then language does work that way.