TI-83 Basic is a great way to learn programming (I taught myself while killing time over many Math classes). The language is very simple, yet it still functional enough to make functional programs, complete with drawing functions. It is an interpreted language, and thus makes it easy to examine the code of others for educational purposes.

And the entire development environment fits in your pocket!