Of course, if you hose a fundamental proto, you've hosed the system too.
True, but the point is that you don't *have to* change the system in order to explore, but you are forced to with classes.
My main concern with proto-based systems is that the proto is the same as its clones. So if, for example, you accidentally send an #at:put: to the prototype Array instead of a clone, every subsequent new Array will not be empty. This could introduce quite a subtle bug into the system. That doesn't happen with classes, since Array is not an array. (Experts, correct me if I'm wrong about this, please.)
A good point, but again, that's only one particular implentation of a proto system that you're talking about. NewtonScript for example, allowed for "locked" protos (it even stored some in ROM). But you can make and use a proto system to have as many similarities with classes as you wish.
You choose, instead of the language. Isn't the direction taken with Smalltalk? The old language thinking was to create a language for each type of application. Smalltalk(and OO) came along with the idea that the customization should be done at a higher level. Protos simply extend this idea further.
Steve
squeak-dev@lists.squeakfoundation.org