From: Sam Griffith Date: 2002-10-17T14:06:05+09:00 Subject: Re: Interfaces in Ruby On 10/16/2002 11:08 PM, in article 5174eed0.0210162008.8eb00c3@posting.google.com, "Edward Wilson" wrote: > I think contract support is needed in large > scall applications, somethig which Ruby could be used for more and > more given the effects of More's Law and Ruby's clean OO model. > Abstract Classes in C++, and Java's Inerfaces are neccessary for > building large scale applications. My shop uses C++ Abstract classes > all the time to enforce contracts; it would be difficult without them. > > Thanks for the discussion from everyone thus far... > > //ed I have to disagree with the statement that something like Interfaces is needed for large scale systems. Many a Lisp or Smalltalk system has been built that doesn't have this specific language concept, and they are in very mission critical areas that can't afford failure. Compile time checking is not an end all be all. Enforcement of these ideas in a dynamic system can be done in other ways and in Ruby, mixin's can provide the same end result. A class is known to implement a given feature set. It is my understanding as well, that contracts weren't just about the methods that a particular class implemented, but that they were also about things like variables not crossing certain thresholds, values not being of the wrong type, etc. They were more than interface specification adherence! -- Sam Griffith Jr. email: staypufd@mac.com Web site: http://homepage.mac.com/staypufd/index.html