I can second the use of postscript. A while back, I took it as a challenge to learn it, and ended up making some fairly extensive programs. I've actually found myself wishing there was a popular general-purpose scripting language that closely resembled postscript (stack-based, first class functions, first class environments).
You can download the books for it for free (the "blue book" is the tutorial). I highly recommend it, along with the "red book" which is also useful for adding to your general programming language theory.