> >   An early assembler designed for human programmers (eg, one of: Z80,
> > 6502, 68030, VL80C010) to understand CPUs
> >   C for compatibility with other programmers, and to see how higher
> > level abstractions can layer over the top of assembler
> >   Forth to see how a more complex machine model (stacks instead of
> > registers) leads to far greater flexibility.
> >   Ruby for a human oriented language that a computer can handle.

Smalltalk to see what an IDE should be, and what "dynamic object oriented
language" really means.
Lisp to understand metaprogramming, and meta-meta-programming, and...
Dylan if you hate parentheses.
Self (or maybe Brain?) to see what happens if you take object-orientation
to its logical conclusion.
Objective-C to see how much difference a few non-C++ design choices can
make.
Eiffel to see how static typing can be done right.

Additions, anyone?  Haskell, maybe, but I haven't used it enough to
provide a useful rationale.

> Logo?

Better yet, StarLogo.

Enjoy,
Avi