[squeak-dev] looking for papers/anecdotes/slide-decks on variable typing vs value typing

Philippe Marschall philippe.marschall at gmail.com
Fri Apr 10 18:18:07 UTC 2009


2009/4/10 Igor Stasenko <siguctua at gmail.com>:
> 2009/4/10 Philippe Marschall <philippe.marschall at gmail.com>:
>> 2009/4/10 Ralph Johnson <johnson at cs.uiuc.edu>:
>>>> A very interesting article that anyone interested in the topic must
>>>> read: "What To Know Before Debating Type Systems"
>>>> http://www.pphsg.org/cdsmith/types.html
>>>
>>> i disagree that "strong typing" doesn't mean anything.  Weak typing
>>> means "has a type system but it is easy to get around it".  Strong
>>> typing means "has a type system and you can't get around it easily".
>>> Strong typing certainly does NOT mean compile-time typing.
>>>
>>> I agree that "dynamic" (checked at run-time) vs. "static" (checked at
>>> compile-time) is what is important.  C and Fortran have weak static
>>> type systems.  Java has a strong static type system, but only because
>>> casts are checked at run-time, i.e. the static type system has holes
>>> in it but the run-time system patches those holes.  Smalltalk has a
>>> strong dynamic type system; there is no way to run a method on an
>>> object that it doesn't belong to.
>>
>> #valueWithReceiver:arguments:?
>>
> Right. But. Is given method is part of standard?

What does that change?

> IMO this is a dirty hack, which could crash the VM, if primitive
> doesn't checking receiver & method class compatibility.

Sounds pretty much like weak typing to me.

> A secure VM could reject implementing primitive at all, and then as a
> workaround, all you can do is temporarily compile&install given method
> in receiver's class and only then send a message.

Right and a multithreaded VM could, ... and an optimizing JIT could ...

Cheers
Philippe



More information about the Squeak-dev mailing list