[email protected] wrote:
greetings all,

I'm in the final weeks of writing up my Masters dissertation and seeking some scholarly references to Smalltalk being "Strongly Typed."

I my review of Smalltalk I was surprised to find that [1] describes Smalltalk as Strongly Typed, since Smalltalk is sometimes denigrated as being untyped / weakly typed. From reviewing discussion forums this now makes sense, but I can only find one of scholarly reference that briefly mentions this [2]. The most enlightening is [3] which defines Type Strength as:

"A strongly typed language prevents any operation on the wrong type of data. In weakly typed languages there are ways to escape this restriction: type conversions"

meaning that getting a MNU is a form of Strong Typing since you can't make a Smalltalk object run a method that is not its own. The problem appears to be that Strong Typing has been synonymous with Static Typing for a long time, and Static Typing strongly ties types to variables, except in Dynamically Typed languages, I think types can be considered independently from variables, in which case the definition of [3] has some merit, hence Smalltalk is Strongly Typed.

Sounds controversial, so I'm just hoping for some peer reviewed backup - but only you have something easily to hand. This is just a small thing I can just leave out if necessary.

cheers -ben

[1] http://www.squeak.org/Features/
[2] p15, http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.35.7507&rep=rep1&type=pdf
[3] http://www.cs.kuleuven.ac.be/publicaties/rapporten/cw/CW415.pdf



Thank you all for you responses. I am integrating it all into a section of my report, which I'll paste in a bit for you to pick holes in. I few quick responses....

I agree with Igor and Camille, statically-typed & strongly-typed should not be synonyms - but as Esteban says, it is common usage - but I think that doesn't make it right. I think this is due to statically-typed languages tightly associating types with variables, whereas types exist independently from variables. Milan, To clarify, it doesn't prevent the *error*. What it does is prevent the *operation*. Since a MNU is produced the specified operation did not execute. Igor gives a good example of why C is weakl typed.

Camille, I take your point about defining "Strongly Typed" , which I will do in my report.

Kilon, I agree with most of you writeup, except that I think Smalltalk has types - except the types are not associated with variables, rather they are associated with objects. This aligns with Igor's comment "in smalltalk, assignment is not copying value, but changing the reference".

Enrico, I will cover Duck Typing, thanks. The implication is, if Duck Typing applies to Smalltalk, then types *are* part of Smalltalk. Alain, Thanks for the link. To much to respond to here. Bits should end up in my report. I found this compelling, as it clarify my own thinking along the same lines "Statically typed languages assign types to variables, while dynamically typed languages assign types to values"

Hernan, I disagree that Smalltalk has no types. But they apply to objects rather than variables, which is where it breaks down for the explicitly/statically typed crowd.

Carla, I am thinking along those lines. A type groups data and valid operations. In non-OO languages, the data and operations are separated, so the type is associated with a variable, which defines what operations are valid on the variable, and hence on the data within the variable. In OO/Smalltalk, the data and operations a combined, so type is associated with the object, which defines what operations are valid on the object, and hence the data within the object.

Juan, I agree with your first post that Smalltalk is strongly typed. Discussing of multi-typed is beyond what I need to consider for my report.

German, That paper states "Smalltalk, although an untype language" but the goes on to indicate many times that Smalltalk has types eg "subtype polymorphism of Smalltalk" I think it is common to say "Smalltalk is untyped" but actually the correct statement should be "In Smalltalk, the *variables* are untyped"


I'll paste something in more detail soon.

Thanks again.  All good points to round out my discussion.

cheers -ben




Reply via email to