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

From: Andrew Hunt <andy@...>
Date: 2000-06-16 02:11:34 UTC
List: ruby-talk #3453
Okay, first of all, please note that when I started this off
by saying "static typing is for people with weak minds" I
put a SMILEY at the end of it :-)  That means it's a joke, folks.

Static typing has its place, but that place is not Ruby.  It may
be a perfectly fine concept, and useful in some, perhaps even many 
circumstances, but not in Ruby.  You want static types, the
SmallEiffel folks would love to have your help.

There are no types in Ruby in the way you think.  A class is 
a collection of methods and variables, both of which may be altered 
from time to time and at anytime.  Individual objects may be
extended with different methods from other objects of that class.
So what is a type in this environment?

    >>"Thaddeus L. Olczyk" wrote:
    >>> Considering the heaps of praise Eiffel has recieved
    >>> from the OO community I would suspect that most feel it has benefit.

I personally like Eiffel.  I think it has great benefits.  But
while everyone praises it, no one uses it.  Why is that?  Is
it more academically correct and not as convenient as it could be?

    >>I think a major benefit was support for "programming by contract". There
    >>has previously been a little discussion of how to do this in Ruby.

    >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.

A precondition asserts a routine's expectations of the state of the
world.  A poscondition verifies the results of the operation.  
Why do you feel that static typing has *anything* to do with expressing
the semantics of an operation in this manner?  I would argue that
DBC in a dynamic language gives you the best of both worlds -- some
guarantee that you're doing the right thing (the objects you are
dealing with honor the semantics you expect, regardless of type), 
along with the flexibility of dynamic types.

    >Frankly, I don't buy what a lot of the studies say ( hey. Microsoft
    >has thousands of studies ).
    >The point is that studies are unreliable in SE. In fact they are a 
    >poor imitation of studies done in other areas with a more rigourous
    >foundation. 

It is easy to be mislead by statistics, and since virtually every
major software is unique in its own way, conclusions drawn from
a relatively small sample set may in fact be suspect.

A recent issue of IEEE's Computer magazine focused on the issue
of the lack of science in computer science.  Virtually every book
you read on OO theory, project managment, or methodology has little,
if any, evidence to back it up.  In other disciplines these works
would be laughed out the door, but in Computer Science they are
hailed and studiously followed by many.

    >As for dynamic typing, I know of several programmers who have worked
    >on Smalltalk projects. In each case the story is the same: we spent
    >two weeks writing the code and five and a half months getting it to
    >work write ( due to dynamic typing ).

That speaks more of the programmers than the language, I think.
The contrasting story goes like this: it took five months to
write the code in C++, get it to compile without warnings, not
core dump, link in under a day, etc., and then only five months 
to get it to work right.

    >>> So why not do this? Make Ruby a
    >>> language with both static and dynamic type.

An interesting thought, but one for another language.  Fatal 
flaws of most languages seem to get introduced by committees :-)

Languages should be as small as possible, but no smaller,
and never, ever, larger.

/\ndy


In This Thread

Prev Next