15/Jun/2009 10:48 AMDesign Principles Behind SmalltalkPage 1 of 7http://web.archive.org/web/20060616024135/www.ipa.net/~dwighth/smalltalk/byte_aug81/design_principles_behind_smalltalk.htmlDesign Principles Behind SmalltalkDaniel H. H. IngallsLearning Research GroupXerox Palo Alto Research Center3333 Coyote Hill RdPalo Alto, CA 94304BYTE Magazine, August 1981. Reproduced with permission.(c) by The McGraw-Hill Companies, Inc., New York, NY.All rights reserved. The purpose of the Smalltalk project is to provide computer support for the creative spirit in everyone.Our work flows from a vision that includes a creative individual and the best computing hardwareavailable. We have chosen to concentrate on two principle areas of research: a language of description(programming language) that serves as an interface between the models in the human mind and those incomputing hardware, and a language of interaction (user interface) that matches the humancommunication system to that of the computer. Our work has followed a two- to four-year cycle that canbe seen to parallel the scientific method:Build an application program within the current system (make an observation)Based on that experience, redesign the language (formulate a theory)Build a new system based on the new design (make a prediction that can be tested)The Smalltalk-80 system marks our fifth time through this cycle. In this article, I present some of thegeneral principles we have observed in the course of our work. While the presentation frequently toucheson Smalltalk "motherhood", the principles themselves are more general and should prove useful inevaluating other systems and in guiding future work. Just to get warmed up, I'll start with a principle that is more social than technical and that is largelyresponsible for the particular bias of the Smalltalk project:Personal Mastery: If a system is to serve the creative spirit, it must be entirely comprehensible toa single individual.The point here is that the human potential manifests itself in individuals. To realize this potential, wemust provide a medium that can be mastered by a single individual. Any barrier that exists between theuser and some part of the system will eventually be a barrier to creative expression. Any part of thesystem that cannot be changed or that is not sufficiently general is a likely source of impediment. If onepart of the system works differently from all the rest, that part will require additional effort to control.Such an added burden may detract from the final result and will inhibit future endeavors in that area. Wecan thus infer a general principle of design:Good Design: A system should be built with a minimum set of unchangeable parts; those partsshould be as general as possible; and all parts of the system should be held in a uniformframework.Language In designing a language for use with computers, we do not have to look far to find helpful hints.Everything we know about how people think and communicate is applicable. The mechanisms of human15/Jun/2009 10:48 AMDesign Principles Behind SmalltalkPage 2 of 7http://web.archive.org/web/20060616024135/www.ipa.net/~dwighth/smalltalk/byte_aug81/design_principles_behind_smalltalk.htmlthought and communication have been engineered for millions of years, and we should respect them asbeing of sound design. Moreover, since we must work with this design for the next million years, it willsave time if we make our computer models compatible with the mind, rather that the other way around. Figure 1 illustrates the principle components in our discussion. A person is presented as having a bodyand a mind. The body is the site of primary experience, and, in the context of this discussion, it is thephysical channel through which the universe is perceived and through which intentions are carried out.Experience is recorded and processed in the mind. Creative thought (without going into its mechanism)can be viewed as the spontaneous appearance of information in the mind. Language is the key to thatinformation:Purpose of Language: To provide a framework for communication.The interaction between two individuals is represented in figure 1 as two arcs. The solid arc representsexplicit communication: the actual words and movements uttered and perceived. The dashed arcrepresents implicit communication: the shared culture and experience that form the context of the explicitcommunication. In human interaction, much of the actual communication is achieved through referenceto shared context, and human language is built around such allusion. This is the case with computers aswell. It is no coincidence that a computer can be viewed as one of the participants in figure 1. In this case,the "body" provides for visual display of information and for sensing input from a human user. The"mind" of a computer includes the internal memory and processing elements and their contents. Figure 1shows that several different issues are involved in the design of a computer language:Scope: The design of a language for using computers must deal with internal models, externalmedia, and the interaction between these in both the human and the computer.This fact is responsible for the difficulty of explaining Smalltalk to people who view computer languagesin a more restricted sense. Smalltalk is not simply a better way of organizing procedures or a differenttechnique for storage management. It is not just an extensible hierarchy of data types, or a graphical userinterface. It is all of these things and anything else that is needed to support the interactions shown infigure 1. Figure 1: The scope of language design. Communication between twopeople (or between one person and a computer) includes communication ontwo levels. Explicit communication includes the information that is15/Jun/2009 10:48 AMDesign Principles Behind SmalltalkPage 3 of 7http://web.archive.org/web/20060616024135/www.ipa.net/~dwighth/smalltalk/byte_aug81/design_principles_behind_smalltalk.htmltransmitted in a given message. Implicit communication includes therelevant assumptions common to the two beings.Communicating Objects The mind observes a vast universe of experience, both immediate and recorded. One can derive asense of oneness with the universe simply by letting this experience be, just as it is. However, if onewishes to participate, literally to take a part, in the universe, one must draw distinctions. In so doing oneidentifies an object in the universe, and
View Full Document