Types, Refactoring, and Metadata
After the long winded discussion of refactoring here, Alan added some light to the heat over here. Today, Peter William Lount adds some more:
Those that think that types are not used in Smalltalk are not entirely correct, "types" are used, or more correctly the objects class meta information is available for use at runtime to perform any necessary and all possible 'type' operations at run-time (which includes almost all the compile time "type" possibilities). The object meta data available through the base Smalltalk language while the program is running is a much more powerful facility and provides capabilities not possible in staticly compiled typed systems such as C, Java, C++, C#, ... . These and other statically compiled typed language and systems strip away most if not all of the "type meta data" so that your program is a barren husk devoid of the richness that runtime meta data provides.
Read the whole thing.


Comments
My favorite line from the article...
[Mel] September 14, 2005 16:46:49.275
Essentially all typed programs are inherently over constrained.
trite
[Isaac Gouy] September 14, 2005 17:38:41.041
Essentially all typed programs are inherently over constrained
And we might also say - essentially all dynamically typed programs are inherently under constrained.
make Smalltalk look good
[Isaac Gouy] September 15, 2005 12:46:19.519
Peter William Lount adds some more
Peter, please don't complain "Those that think that types are not used in Smalltalk are not entirely correct" and then 2 paragraphs later expect anyone to understand that "typelessness is but one of Smalltalks many advantages" might not mean that "types are not used in Smalltalk".
Peter, please don't describe Smalltalk by any variation of "untyped" or "typeless" - it gives the impression that Smalltalk doesn't have types, it gives the impression that Smalltalk doesn't have type checking.
Peter, please don't show confusion about whether to say "dyamicly typed (or really dynamicly untyped or dynamicly non-typed or simply dynamic)" - if you must speak in generalities, avoid the misspelling, copy from the more popular languages and call Smalltalk a dynamic language.
Peter, Smalltalk is type safe, please don't give the impression that Smalltalk must be littered with isKindOf: and isMemberOf: to make it type safe (textbook definition p271).
And then Peter William Lount adds some more
Peter, please remember that we could have some type inference for Smalltalk before run-time.
Peter, please don't give the impression that type inference in statically checked languages is only available in pure functional languages like Haskell. A decade ago, OCaml added OO to Standard ML's polymorphic type inference and imperative programming.
Now type inference for local variables is reaching the mainstream with C#3.0 and VB9.