Stephan,
That is - IMHO - not as comfortable as a modern IDE (like Eclipse) with code completion is.
I completely agree but one other issue to keep in mind here is that we have a _dynamic_ type system which means that if you can get your hands on a life instance of some object you are perfectly capable to do completions and whatever else. Which in a way relates to what has been written about the "cult of the dead" a while ago and only shows that Smalltalk is not as dynamic as it ought to be ;-)
Incidentally, I did something along these lines a while ago, which basically just went out looking for existing objects and their instances and then figure out what is "typically" used there. And while it wasn't perfect it did allow you to get some rather interesting insights.
Actually, I find refactorings much easier to do in a system with a type system. I wouldn't call that dead but well documented. And, you'd probably agree, documentation helps refactoring.
Absolutely. It's one of the areas where documentation (hm ... actually I wouldn't call it documentation but rather automated consistency checking) is really crucial.
Let's say you want to rename the method at: in your class to something better and also rename all senders of that method. You're lost in Smalltalk.
Yes, but it's not a good example for two reasons. First, try to change the name of [] in Java (hah! got you there ;-) and second there are probably various methods which are so universally used in Java that you would end up with the same problems (like the Comparable interface).
If you have a language and a system which requires unit tests, that could be as good as better documentation via types. However, as long as unit tests are voluntary, they don't really help.
Good point. Which also relates to the point Gilad was making about optional type annotations being used or not. In the end its a management issue.
Cheers, - Andreas