Byte arrays are not host specific.�� True.
But integers are not byte arrays.�� They don't even contain byte arrays.
Just like (boxed) Floats are not word arrays and don't contain word arrays.
For what it's worth, I find that it's quite unusual for a method to
change from private to public or vice versa.
The basic problem with putting methods in a "private" category is
that it has no actual effect.�� It was Smalltalk that taught me OO and
the importance of encapsulation.�� But Smalltalk doesn't actually
support encapsulation.�� Every detail of the implementation of
Dictionary, for example, is exposed.�� And the practice of
"self-encapsulation" is actually ANTI-encapsulation for this reason.
Now there are several ways to implement hashed collections.
The one I've had for years is pleasantly fast and pleasantly
free of weird restrictions (keys/elements can be nil and why
not).�� I've got a new one I'm working on that uses less space
and is faster still.�� Because my dialect *enforces* encapsulation,
when my testing is complete, I'll be able to swap the new
version in, knowing that no external code can possibly depend on
the implementation details.obj
As a particular example, it was only when I implemented
serialisation (nowhere up to Fuel's standards, of course) that
I implemented #pvtInstVarAt:[put:] and an object is *still*
completely and exclusively in charge of its own instance
variables.
I agree that using a prefix is not the best way to do this,
but the eye soon learns to skip over it.�� It's not that much
worse than "Inst" or "Var" or the pervasive and obtrusive
use of prefixes on selectors in VisualAge Smalltalk.�� I think
Pharo would be the better for having *some* way to enforce
encapsulation, but what the best way is I don't claim to know.