[#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:02267] Re: Ruby and Eiffel

From: h.fulton@...
Date: 2000-03-30 18:12:26 UTC
List: ruby-talk #2267
I am trying to implement the best system I can
*without* changing the language spec...

Of course, I am running into problems. But it 
remains to be seen whether these problems are
insoluble, or just require more digging in the
Ruby reference.

Hal

> 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