The pioneering object-oriented programming
system developed in 1972 by the Software Concepts Group, led by Alan Kay
, at Xerox PARC
between 1971 and 1983. It includes a language, a programming environment, and an extensive object library.
Smalltalk took the concepts of class
and made them all-pervasive. Innovations included the bitmap display
, windowing system, and use of a mouse
is very simple. The fundamental construction is to send a message to an object
or with extra parameters
object message: param1 secondArg: param2 .. nthArg: paramN
where "secondArg:" etc. are considered to be part of the message name.
Five pseudo-variables are defined: "self", "super", "nil", "true", "false". "self" is the receiver of the current message. "super" is used to delegate processing of a message to the superclass
of the receiver. "nil" is a reference to "nothing" (an instance of UndefinedObject). All variables initially contain a reference to nil. "true" and "false" are Booleans
In Smalltalk, any message can be sent to any object. The recipient object itself decides (based on the message name, also called the "message selector") how to respond to the message. Because of that, the multiple inheritance
system included in the early versions of Smalltalk-80 appeared to be unused in practice. All modern implementations have single inheritance, so each class can have at most one superclass.
Early implementations were interpreted
but all modern ones use dynamic translation
Early versions were Smalltalk-72, Smalltalk-74, Smalltalk-76 (inheritance taken from Simula, and concurrency), and Smalltalk-78, Smalltalk-80
. Other versions include Little Smalltalk
, Kamin's interpreters
. Current versions are VisualWorks
, Dolphin Smalltalk
, Object Studio
, GNU Smalltalk
See also: International Smalltalk Association
UIUC Smalltalk archive (http://st-www.cs.uiuc.edu/). FAQ (http://XCF.Berkeley.EDU/pub/misc/smalltalk/FAQ/). Usenet
["The Smalltalk-76 Programming System Design and Implementation", D.H. Ingalls, 5th POPL, ACM 1978, pp. 9-16].