Another nifty language to learn is ML. It's a
well-designed functional language that will help you
to understand why having functions as first-class objects
is so useful. I would recommend the SML implementation and
book "ML for the Working Programmer".