/lstg

Little Smalltalk-G: A modern fork of Little Smalltalk for teaching

Primary LanguageCOtherNOASSERTION

 _     _ _   _   _        ____                  _ _ _        _ _        ____
| |   (_) |_| |_| | ___  / ___| _ __ ___   __ _| | | |_ __ _| | | __   / ___|
| |   | | __| __| |/ _ \ \___ \| '_ ` _ \ / _` | | | __/ _` | | |/ /__| |  _
| |___| | |_| |_| |  __/  ___) | | | | | | (_| | | | || (_| | |   < __| |_| |
|_____|_|\__|\__|_|\___| |____/|_| |_| |_|\__,_|_|_|\__\__,_|_|_|\_\   \____| v6

Copyright (C) 1987 - 2005, Timothy A. Budd
Copyright (C) 2005 - 2007, Danny Reinhold
Copyright (C) 2007,        Charles R. Childers
Copyright (C) 2020,        Gregor Richards

This is Gregor Richards's update to Little Smalltalk v5, called Little
Smalltalk-G, which is intended for use as a teaching environment. Specifically,
it is meant as a platform to talk about Smalltalk and the origins of object
oriented programming, without requiring students to learn or understand the
operating system/IDE side of it. i.e., it is Smalltalk minus Smalltalk, but
still quite purely OO.

Little Smalltalk v5 was, in turn, a continuation of the Little Smalltalk
language developed by Timothy Budd. It is based on his Version 4 source, but
has been modified in many ways. New features, classes, etc were added, and the
system was slowly maturing into a truly useful implementation of the Smalltalk
language. What follows is the original introduction from Little Smalltalk v4.

What Little Smalltalk is, and more importantly, what it isn't

First and foremost, let me say at the beginning in as LOUD a voice as I can
that Little Smalltalk is NOT a smalltalk-80 system. If you want a real
Smalltalk system go buy one from ParcPlace, Digitalk, IBM, or whomever.

Little Smalltalk is a sort of fun experiment in building a minimal
smalltalk system.  The source code for the interpreter is less than 1800
lines of code.  The image consists of less than 4000 objects.  It runs
in almost no memory.  In short, it's small, it's reasonably fast, it's easy
to understand, and easy to modify.

As you might expect, in order to get Smalltalk to run in something this
small, I've had to make lots of changes.  Here are the most notable:

 * No graphics
 * The user interface is a more conventional real-eval-print loop
   (like most Lisp systems), not a browser. (But it is all written in
   Smalltalk itself, so you can modify it if you wish).
 * Primitives and cascades are handled as they were in earlier Little
   Smalltalk systems, which is not how they are handed in Smalltalk-80.
 * The standard class hierarchy differs considerably from Smalltalk-80.
   * My basic collections are List, Tree, Dictionary, Array, and String
   * The only numbers in the standard image are large and small integers
     (adding fractions and floats might be an interesting exercise, however).