On Sunday, July 18, 2010 08:46:13 am Rick DeNatale wrote: > On Sun, Jul 18, 2010 at 6:46 AM, James O'Brien <jeob32 / gmail.com> wrote: > > David, > > > > many thanks! i found your explanation very useful.. and an article on > > duck typing is well worth reading e.g > > http://en.wikipedia.org/wiki/Duck_typing for any other ruby newbies out > > there! > > FWIW, I wrote a paper about role-based 'types' nearly 20 years ago, > when I was at IBM. I've shared it with a few experienced Rubyists who > seemed to find a certain resonance with the ideas. Recently Alexander > Cockburn (of Crystal fame) with whom I have a shared hertitage at IBM > back then, tells me he still uses the paper when talking to clients > about dynamic typing. > > http://talklikeaduck.denhaven2.com/files/TypesFromTheClientsViewpoint.PDF Definitely a resonance. If I understand what you're saying, something like Java interfaces were known and implemented in C++ and Smalltalk, though more by convention. I wonder if client-side interfaces were ever implemented as anything quite so explicit... I wish I'd known about this earlier. In a Java-based freshman data structures course, a TA asked an interesting question: "What is the purpose of inheritance?" I answered, "Code re-use." He disagreed, and I'm not entirely sure, but I think he said, "Types." In Java! Ah, well...