[#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:03499] Re: Nominally frozen classes (was Static Typing (was ...))

From: "Conrad Schneiker" <schneiker@...>
Date: 2000-06-18 09:18:13 UTC
List: ruby-talk #3499
Hi,

"Frank Mitchell" writes,

> Patrick Schoenbach wrote in message ...
> >On Sat, 17 Jun 2000 09:32:08 GMT,
> >Thaddeus L. Olczyk <olczyk@interaccess.com> wrote:
> >
> >>On Thu, 15 Jun 2000 22:11:34 -0400, Andrew Hunt <andy@Toolshed.Com>
> >>wrote:
> >>>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 with Andy here. IMHO DBC and typing are two different things. We
> >Eiffelists believe that static typing is better suited to create robust
> >and correct systems. This is heavily argued thought, and we should not
> >start another "static vs dynamic typing" war.
>
>
> Agreed.  Dynamic typing is very useful for rapid development, and for
> high-level "glue" code the rigor of strong typing hinders as much as (or
> more than) helps.
>
> >But DBC is not directly related to the typing issue. Even in Eiffel,
> >assertion checking is done completely at *run time*. So, I see no
> >problems either to implement DBC in a dynamic environment.
>
>
> I think it's more closely related than it seems at first blush.  See my
> previous post.
>
> Granted, your contracts can include a union of types, or "types" defined
by
> a set of methods and contracts instead of by name ... but to exploit the
> power of DBC you need some sort of type system and type checking.

Well, I am not a DBC lawyer, however it seems to me that people have
somewhat different reasons for being interested in contracts. One reason is
to guarantee _in_advance_ (nominally at compile time or startup time) that
contracts _can_ be carried out subject to given constraints. A second reason
is to guarantee that contracts will be enforced during execution (in the
sense of preventing contracts from being violated), but not necessarily
guarantying that (the _primary_ objectives of) all contracts will be
fulfilled. It is the first case where static typing seems to be the most
appropriate solution. In this context, conventional static typing can be
regarded as simplistic data compatibility and data integrity contracting.

Of course Ruby already has a form of static typing in the form of frozen
objects. (However IIRC, many months ago someone mentioned that it was
possible to somehow change constants. If so, I think the ability to change
things like our good friend PI (3.141592653589793238....) out from under
people is carrying flexibility a little too far.)

One reason for wanting some sort of (optional) _nominal_ frozen classes in
Ruby is so that one could build libraries and such on "solid ground" as it
were, and thus _warn_ users (-w style, or perhaps raise an exception if
requested) if the initially presupposed relevant environment was changed
from under them. Some set of class freezing options may be desirable to
specify which sorts of class modifications to freeze out and which to
permit, and whether to propagate freezing to related classes.

Conrad





In This Thread