Welcome to the Dictionary of Programming Languages, a compendium
of computer coding methods assembled to provide information and
aid your appreciation for computer science history.
Browse the dictionary by clicking on a section:
Get a full dump of the dictionary:
List of Names
- Language type:
Smalltalk is a dynamic object-oriented
language originally designed in the 1970s.
It was originally designed as an experiment,
but evolved into a powerful
application development language.
Smalltalk is a pure object-oriented language:
all data are encapsulated as objects, and all
operations and functions are performed by
sending messages to objects.
All objects inherit from an
Smalltalk's programming model is very rich
and mature, supporting inheritance,
abstract data types, polymorphism, automatic
memory management with garbage collected,
delegation, reflection, and persistence.
Unlike some newer OOP languages, Smalltalk
is not strongly typed. The language
typically does not enforce type constraints,
and method declarations usually do not
include type declarations.
Fundamental data types supported by the
integers, reals, strings, booleans, and
The standard class library distributed with
every Smalltalk system includes a wide
collection classes (such as vectors,
trees, hash tables, etc.), stream-oriented
I/O facilities, object persistence support, and
graphical user interface classes.
Early Smalltalk implementation were
interpreted, but most modern implementations
employ translation to abstract machine
intermediate codes and/or dynamic native
compilation (so-called "Just-in-time"
As of late 1997, an ANSI standard for
Smalltalk was in draft form under the J20
committee. The final standard is expected
in late 1998.
Several commercial and free Smalltalk
implementations exist, for all sorts
of platforms. On of the more popular
free implementations, for Unix systems,
is GNU Smalltalk. IBM and ObjectShare are
the primary commercial Smalltalk vendors.
Good information and documentation
about the language, as well as free
class libraries of all sorts, can be
found on the web.
Alan Kay and Xerox Software Concepts Group, 1972.
- See Also:
Smalltalk is used for application development,
but it has also been used to teach OOP
principles. Unlike C or Java, Smalltalk
represents everything as an object, making
the language much more consistent in its
treatment of data aggregations.
While the Smalltalk language and its object
model were very influential, its run-time
environment was even more so. Smalltalk
was the first language to support a
multi-window graphical user interface.
Later windowing systems, like the
Xerox Star, the Apple Lisa and Macintosh,
the X Window System, and Microsoft Windows
all took ideas (and sometimes even
personnel) from the Smalltalk development
The Smalltalk GUI uses a very powerful
conceptual framework: the Model-View-Controller
(MVC) paradigm. In this framework, every
GUI element has a model that holds its
data, a view that draws its display, and
a controller that responds to activities
and causes the object to react. By keeping
these three aspects of GUI elements separate,
Smalltalk allows the programmer great
flexibility. (The MVC framework was also
employed in the NeXTStep GUI, which was
written in Objective-C.)
There have been many dialects of Smalltalk,
some of them influential enough to be called
de-facto standards: Smalltalk-80, Smalltalk/V,
and others. The upcoming ANSI standard
should help alleviate the problems caused
by differing implementations.
A free academic edition of Smalltalk, ObjectShare
Smalltalk Express, can be obtained
- Sample code:
' Smalltalk class to constraint a 2D point to a fixed grid
' (from Horan & Hopkins, Smalltalk: An Introduction...)
Point subclass: #GriddedPoint
!GriddedPoint methodsFor: 'accessing'!
"Set the x coordinate gridded to 10 (using rounding, alternatively I could
super x: (xInteger roundTo: 10)!
"Set the y coordinate gridded to 10 (using rounding, alternatively I could
super y: (yInteger roundTo: 10)! !
!GriddedPoint methodsFor: 'private'!
setX: xPoint setY: yPoint
"Initialize the instance variables rounding to 10."
super setX: (xPoint roundTo: 10) setY: (yPoint roundTo: 10)! !
Descriptions in this dictionary are ©1997-99 Neal Ziring. Some
examples copyright of their respective authors. Some
technologies and languages are trademarked. Permission to
copy descriptions is granted as long as authorship credit is preserved.
Comments on this dictionary, corrections and suggestions, are all welcome.
Please use email, the address is firstname.lastname@example.org
[Ziring MicroWeb Home]
Dictionary and script maintained by Neal Ziring, last major modifications 3/18/98. Most recent
additions to dictionary and master list, 1/00.