On 10/16/2002 11:08 PM, in article
5174eed0.0210162008.8eb00c3 / posting.google.com, "Edward Wilson"
<web2ed / yahoo.com> 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