[#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:03576] Re: Static Typing( Was: Waffling between Python and Ruby)

From: "Frank Mitchell" <frankm@...>
Date: 2000-06-21 08:22:04 UTC
List: ruby-talk #3576
Dave Thomas wrote in message ...
>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.


Hmm ... isn't the whole point of Design By Contract to "fail fast"?
Checking conformance to an interface lazily would lead to failing in the
middle of a method where the reason would be less clear, or, worse, failing
only in a particular branch of an "if" or "case" statement.

Assertions are checked at runtime -- mainly because there's no general
alternative -- but DbC serves to highlight problems early and with a minimum
of testing/debugging.  Leaving something as crucial as what messages an
object receives out of the contract leaves us testing every possible input
again.  (I also believe not specifying the *contract* of each involved
object's methods is a mistake.  On a large-ish Objective-C system I worked
on we had a few bugs caused by passing the wrong object that just happened
to implement the right method in the wrong way.  E.g. "price" as a message
to return an attribute vs. "price" as a command to initiate an involved
calculation with numerous side effects which fails because the object isn't
in a consistent state.)

Frank




In This Thread