[#1816] Ruby 1.5.3 under Tru64 (Alpha)? — Clemens Hintze <clemens.hintze@...>

Hi all,

17 messages 2000/03/14

[#1989] English Ruby/Gtk Tutorial? — schneik@...

18 messages 2000/03/17

[#2241] setter() for local variables — ts <decoux@...>

18 messages 2000/03/29

[ruby-talk:02266] Re: Ruby and Eiffel

From: Hugh Sasse Staff Elec Eng <hgs@...>
Date: 2000-03-30 17:32:00 UTC
List: ruby-talk #2266
On Tue, 28 Mar 2000, Andrew Hunt wrote:

> Well, that brings up an interesting question.  What do
> you think about implementing Design By Contract in a 
> non-staticaly typed language such as Ruby?  I've toyed around
> with several implementations of DBC in Ruby, and once Dave
> and I get a bit more of the Ruby book finished I'll look at
> it again.
> 
> But would that be a usefull feature to have in Ruby?  
> 
> /\ndy

Having looked at this a little, I can see it would be a good idea.

From what I have read a class, method, (whatever), agrees to do certain
things to data meeting certain pre-conditions, and it agrees to produce
certain post-conditions when it does so.  It does not agree to do anything
else. Some of these checks can be done at compile time, but mostly they'd
be done at run time. I think that is the heart of the matter.

So I agree that putting specific keywords to support this into the
language would be a good idea, because their presence would encourage
people to do checks on data, and would also aid the understanding of the
intentions behind code design.  Instead of wondering what all these
references to Wands and Handkerchieves are about, one could clearly see
that the pre-conditions are the presence of a Top_Hat and the
post-condition is a Rabbit pulled from it.  Given the multi-lingual
environment in which Ruby code is produced, this can only be helpful.

Now, you ask about a non-statically typed language.  I can see that there
is less information about a type in such a case, because it can take any
value, and this was raised when we discussed my enumeration class.  
However, there is a case in Ruby where conditions are already imposed on
data, and how these conditions affect the operation of the program is
determined before run-time.  I am talking about Taint checks.  I wonder if
it would be possible to apply some contractual checks, in a similar way to
Taint checking, to data flowing in and out of methods, even prior to
running the code?  I have never tried implement this, so could be talking
out of my Top_Hat, a most unsatisfactory post-condition. :-)

	Hugh
	hgs@dmu.ac.uk

In This Thread

Prev Next