From: Robert Klemme Date: 2008-06-02T20:10:16+09:00 Subject: Re: The duck's backside 2008/6/2 Eleanor McHugh : Absolutely. > The point with all these approaches is that they are focused on reducing the > number of ways in which an object will act at runtime so that the underlying > uncertainty is managed. Effectively they move the granularity of the system > so that it obeys classical expectations. > > But the uncertainty is still there under the covers, and when applied > appropriately it can be used to provide elegant solutions to problems that > would otherwise be tedious and/or impossible to tackle with static > approaches. And once embraced for what it is, it opens a range of new > possibilities for writing reliable and robust applications. You could even say that static typing conveys a false sense of safety (which could lead you to neglect testing) whereas this effect does not happen with "uncertain" (aka "dynamic") languages. I am not sure about DbC languages such as Eiffel. These go much further in defining semantics and you cannot easily violate assertions that they provide, i.e. you get more safety than just static types. I have always wanted to work with Eiffel but unfortunately never found the time. Also, from what I read it would feel a bit like a straitjacket - and given the option I much more prefer Ruby to get things done. :-) Cheers robert -- use.inject do |as, often| as.you_can - without end