> > 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