TOM Home
TOM Tasks

Download TOM
TOM Software
Bug Database
Mailing Lists

tiggr at

Recent news
  • (Tue Aug 28 2001) A new tesla bootstrap has been released.
  • (Sun Aug 12 2001) The Mac OS X port has been started.
  • (Fri Apr 27 2001) Preliminary support for building tesla under cygwin has been added. It is available through CVS or a current snapshot.
  • (Sun Apr 15 2001) The website has received some updates. New snashots have been released, as well as a new bootstrap release of tesla. At this point, tesla should be considered the preferred compiler over tomc.
  • (Sun Sep 24 2000) The mailing lists have moved over to mailman.
  • (Sun Jun 4 2000) Maury has been generating some interest at the WWDC Stepwise BOF.
  • (Mon Jan 31 2000) VIM is the first editor to have a TOM mode, by Joost Yervante Damad.
  • (Sat Jan 1 2000) Happy hacking! Now with guidance by the TOM Bug Database maintained by Bruce.
  • (Sun Oct 31 1999) Feature: On the Flexibility of Programming Languages (4k words) (abstract).
Older news
Short Cuts:

all of 'em
tom [an error occurred while processing this directive]
tesla [an error occurred while processing this directive]
mu [an error occurred while processing this directive]
tomgtk [an error occurred while processing this directive]

all of 'em
tom 1.1.1
tomgtk 0.11
tesla 0.91
gp 0.5
mu 1.0

GIF free NOW!

Why TOM?

Contemporary object-oriented programming languages employ the class as the unit of reuse. At the same time, the class is also the unit of design. This implies that to reuse a class, the design of the class must fit the design in which it will be reused. While this serves planned reuse, it hampers unplanned reuse. Obviously, unplanned reuse is much more important if widespread reuse is desired.

TOM is an object-oriented programming language that advocates unplanned reuse of code. To this effect, TOM enables unplanned reuse through the following features:

  • A class is defined by its main definition and any extensions.
  • An extension can add methods, variables, and superclasses to a class.
  • The source of the original class is not relevant while it is extended: it is not needed and does not need recompilation; nor is recompilation required for any client code or subclasses. Extensions can even be loaded at run time.
Unplanned reuse removes the privilege of class modification from the class designer and hands it over as a right to the user. Every user has other uses for a class: the class does not need to suit them all if they can make it suit themselves.

What does this offer to the writer of classes? Using a class is no longer a binary choice: the user can be almost satisfied by it and adjust it to his needs. And you can severely update the classes in your library, e.g., add instance variables or replace methods, without requiring recompilation of any program using it, or requiring a non-backward-compatible version change of your shared library.

Dive into the TOM documentation or publications, read the tutorialesque highlights, or go straight to an actual-code example of the extensibility of classes.

Copyright © 1997-2002 Programmers Without Deadlines