packages icon
   GNU Smalltalk is an implementation that closely follows the
Smalltalk-80 language as described in the book `Smalltalk-80: the
Language and its Implementation' by Adele Goldberg and David Robson.

   The Smalltalk programming language is an object oriented programming
language.  This means, for one thing, that when programming you are
thinking of not only the data that an object contains, but also of the
operations available on that object.  The object's data representation
capabilities and the operations available on the object are
"inseparable"; the set of things that you can do with an object is
defined precisely by the set of operations, which Smalltalk calls
"methods", that are available for that object.  You cannot even examine
the contents of an object from the outside.  To an outsider, the object
is a black box that has some state and some operations available, but
that's all you know.

   In the Smalltalk language, everything is an object.  This includes
numbers, executable procedures (methods), stack frames (called method
contexts or block contexts), etc.  Each object is an "instance" of a
"class".  A class can be thought of as a datatype and the set of
functions that operate on that datatype.  An instance is a particular
variable of that datatype. When you want to perform an operation on an
object, you send it a "message", and the object performs an operation
that corresponds to that message.

   Unlike other Smalltalks (including Smalltalk-80), GNU Smalltalk
emphasizes Smalltalk's rapid prototyping features rather than the
graphical and easy-to-use nature of the programming environment (did
you know that the first GUIs ran under Smalltalk?).  The availability
of a large body of system classes, once you master them, makes it
pretty easy to write complex programs which are usually a task for the
so called "scripting languages".  Therefore, even though we have a nice
GUI environment including a class browser, the goal of the GNU Smalltalk
project is currently to produce a complete system to be used to write
your scripts in a clear, aesthetically pleasing, and philosophically
appealing programming language.

   An example of what can be obtained with Smalltalk in this novel way
can be found in the manual's class reference.  That part of the manual is
entirely generated by a Smalltalk program, starting from the source
code for the system classes as distributed together with the system.

   Oh... of course ;-) GNU Smalltalk has bugs.  And of course I like to
hear from people who have something to say regarding it. So bug reports,
suggestions, help, advices, source code contributions are all welcome.
All you have to do is send mail to bonzini@gnu.org. Answer is guaranteed,
most of the times in a day or two; but before sending e-mail, please look
for bug fixes on ftp://alpha.gnu.org/smalltalk.