We’ve had great fun, and results, teaching kids to program with Scratch. Now, Berkeley has “an extended reimplementation of Scratch … that allows you to Build Your Own Blocks. It also features first class lists, first class procedures, and continuations. These added capabilities make it suitable for a serious introduction to computer science for high school or college students.”
You can try it right away and it’s worth it – even if you’re not a kid.