Text and object: There is a fundamental clash between the use of text and the use of direct manipulation. A word inherently denotes something, an object does not necessarily denote anything. That is, when you see the word “cow,” an image comes to mind. It is in fact difficult to avoid the image, that is the way words are supposed to work. They stand for things. However, when you manipulate a pencil, what comes to mind? It depends much more on who you are, what the context is, and so on. In other words, a pencil does not by itself denote anything. Consequently, textual notation and object manipulation are fundamentally from two different worlds. The pencil and the word denoting pencil are different entities.
Text is used quite a bit in Self, and its denotational character weakens the sense of direct encounter with objects. For example, many tools in the user interface employ a “printString” to denote an object. The programmer working with one of these tools might encounter the text “list (3, 7, 9).” The programmer might know that this denotes an object which could be viewed “directly” with an outliner. But why bother? The textual string often says all he needs to know. The programmer moves on, satisfied perhaps, yet not particularly feeling like he has encountered the list itself. The mind set in a denotational world is different than that in a direct object world, and use of text creates a different kind of experience.
Randall B. Smith and David Ungar, “Programming as an Experience: The Inspiration for Self”