Thaddeus L. Olczyk <olczyk / interaccess.com> wrote:
> On Thu, 15 Jun 2000 22:11:34 -0400, Andrew Hunt <andy / Toolshed.Com>
> wrote:
> >
> >    >And if you were to ask an Eiffel adherent, most would reply
> >    >that " programming by contract" includes static typing.
> >    >Indeed what is meant by contract? According to OOSE the
> >    >contract is the interface and the constrictions on the
> >    >interface ( pre and postconditions, invariants ). This
> >    >definition implies that a contract requires static typing.
> >
> >I disagree strongly.  While Meyer is an advocate of static typing, I
> >see no reason that DBC cannot be effective in a dynamically typed
> >environment -- in fact, it seems to me that DBC could be even *more*
> >useful in a dynamic environment than in a static one.

I agree that contracts between a routine and a caller can be applied to
dynamic typing.
However, Design by Contract isn't just assertions. What makes DbC stand
out is that contract rules are inherited to subclasses. This is a very
unspectacular property in a dynamically-typed language, but in a
statically-typed language, it means that I can write code like
  x: FOO
  x.some_feature
and I can look up the contract of 'some_feature' in FOO and be sure that
at least the contract that I find there will be honored, no matter what
kind of object was assigned to x.
In a dynamically-typed language, I don't know that x will always be of
type FOO, so there's no place to look what the contract of
'some_feature' is.

Regards,
Joachim
--
This is not an official statement from my employer or from NICE.
Reply-to address changed to discourage unsolicited advertisements.