[#3109] Is divmod dangerous? — Dave Thomas <Dave@...>

14 messages 2000/06/06

[#3149] Retrieving the hostname and port in net/http — Roland Jesse <jesse@...>

Hi,

12 messages 2000/06/07

[#3222] Ruby coding standard? — Robert Feldt <feldt@...>

16 messages 2000/06/09

[#3277] Re: BUG or something? — Aleksi Niemel<aleksi.niemela@...>

> |I am new to Ruby and this brings up a question I have had

17 messages 2000/06/12
[#3281] Re: BUG or something? — Dave Thomas <Dave@...> 2000/06/12

Aleksi Niemel<aleksi.niemela@cinnober.com> writes:

[#3296] RE: about documentation — Aleksi Niemel<aleksi.niemela@...>

> I want to contribute to the ruby project in my spare time.

15 messages 2000/06/12

[#3407] Waffling between Python and Ruby — "Warren Postma" <embed@...>

I was looking at the Ruby editor/IDE for windows and was disappointed with

19 messages 2000/06/14

[#3410] Exercice: Translate into Ruby :-) — Jilani Khaldi <jilanik@...>

Hi All,

17 messages 2000/06/14

[#3415] Re: Waffling between Python and Ruby — Andrew Hunt <andy@...>

>Static typing..., hmm,...

11 messages 2000/06/14

[#3453] Re: Static Typing( Was: Waffling between Python and Ruby) — Andrew Hunt <andy@...>

32 messages 2000/06/16

[#3516] Deep copy? — Hugh Sasse Staff Elec Eng <hgs@...>

Given that I cannot overload =, how should I go about ensuring a deep

20 messages 2000/06/19

[#3694] Why it's quiet — hal9000@...

We are all busy learning the new language

26 messages 2000/06/29
[#3703] Re: Why it's quiet — "NAKAMURA, Hiroshi" <nahi@...> 2000/06/30

Hi,

[#3705] Re: Why it's quiet — matz@... (Yukihiro Matsumoto) 2000/06/30

Hi,

[ruby-talk:03574] Re: Static Typing( Was: Waffling between Python and Ruby)

From: Dave Thomas <Dave@...>
Date: 2000-06-21 05:37:28 UTC
List: ruby-talk #3574
Albert Wagner <alwagner@tcac.net> writes:

> Exactly what does DBC mean in the context of this thread?

I'm not sure if this is a straightforward question or a profound one
;-)

Assuming it's straightforward:

DBC is design by Contract, Meyer's concept tht you can embed within
code the specification of a class by giving an overall invariant, and
pre- and post- conditions for each of the methods. The invariant
defines the class's overall state, the pre-conditions constrain the
context in which methods may be called, and the postconditions verify
that the methods do what they are supposed to. DbC is primarily a
design technique, but in some languages the contracts are checked as
the programs run, so you can enjoy warm fuzzy feelings that your code
is behaving. DbC is more than just assertion checking, as it imposes
constraints on the behavior of classes derived from classes with
contracts. 

I believe that the discussion hinges around whether static typing is a
requirement/benefit for specifying a pre-condition, or whether static
typing is orthogonal to DbC. My view is that in statically typed
languages, the types are a part of the precondition simply because the
types are a part of everything. The preconditions are orthogonal to
the type system, as the types would still be there even if the
preconditions were taken away. Types neither strengthen nor weaken the 
precondition per se.

In an untyped language, the preconditions can choose to interrogate
the input parameters to determine if they supply the required
interface/protocol, but in most cases that seems somewhat over the
top, as the method will find out soon enough anyway. So again, DbC is
orthogonal to the type system.

But, these are just late-night ramblings, and I'm sure the Eiffel
folks will patiently explain the error of my ways... ;-)

DbC is discussed in Object-Oriented Software Construction II. There's
also a section on it in The Pragmatic Programmer (heh, I'm allowed the 
occasional plug ;-)


Regards


Dave



In This Thread