Smalltalk is an
object-oriented,
dynamically typed,
reflective programming language. A Smalltalk program is a description of a dynamic computational process. The Smalltalk programming language is a notation for defining such programs. From ANSI Smalltalk standard, section 3. Smalltalk was created as the language to underpin the "new world" of computing exemplified by "human-computer symbiosis". … one would compute with a handheld "Dynabook" in a way that would not be possible on a shared mainframe; millions of potential users meant that the user interface would have to become a learning environment along the lines of Montessori and Bruner; and needs for large scope, reduction in complexity, and end-user literacy would require that data and control structures be done away with in favor of a more biological scheme of protected universal cells interacting only through messages that could mimic any desired behavior. Early Smalltalk was the first complete realization of these new points of view as parented by its many predecessors in hardware, language and user interface design. It became the exemplar of the new computing, in part, because we were actually trying for a qualitative shift in belief structures—a new
Kuhnian paradigm in the same spirit as the invention of the printing press—and thus took highly extreme positions which almost forced these new styles to be invented.
See more at Wikipedia.org...
<
language> 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
message from
Simula-67 and made them all-pervasive. Innovations included the
bitmap display, windowing system, and use of a
mouse.
The
syntax is very simple. The fundamental construction is to send a message to an
object:
object message
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 (JIT).
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,
Smalltalk/V,
Kamin's interpreters. Current versions are
VisualWorks,
Squeak,
VisualAge,
Dolphin Smalltalk,
Object Studio,
GNU Smalltalk.
See also:
International Smalltalk Association.
UIUC Smalltalk archive.
FAQ.
Usenet newsgroup:
news:comp.lang.smalltalk.
["The Smalltalk-76 Programming System Design and Implementation", D.H. Ingalls, 5th POPL, ACM 1978, pp. 9-16].
(2001-09-11)