
We then tried a simple C-like language for use with a Lego Mindstorm - but this was too much for him to learn at once.
After some research, I downloaded a trial version of Phrogram - which I wound up buying and he used for quite a while. It is derived from Kids Programming Language (KPL) and targets teaching programming to high school aged kids. The language comes with an IDE with a compiler and debugger - and makes it fairly simple to do 2D and 3D graphics games. My son loved this language and has been writing software in it for about 8 months. However, he has recently been finding the Phrogram development libraries to be rather limiting and was getting frustrated with it - particularly in lack of GUI libraries.
So more research on languages. He recently switched to working with Process, which is a simple Java-based language and associated development environment with more extensive library support. However, it lacks an integrated debugger. I believe that stepping from Process to Java is probably a pretty small step, but we have not gotten there yet.
My son has not gone back to learning C/C++ yet, but I think he will get there eventually. He is only 10 - and he will have plenty of time to get there at his own pace.
I had looked at Python and Lisp for him - but I wanted something that was a little more kid friendly. My son loves to show off his projects - and they have all been visually oriented with 2D or 3D interfaces. So picking a language with strong support for graphics is important for him.
Most of his learning has been unsupervised. He spends a lot of time looking at code examples, borrowing ideas from these examples and building from there, I do spend time helping him figure out code bugs, etc. - but he has been self motivated in terms of what sorts of applications he develops.
As you look at different language options, you need to consider a number of things - why do they want to learn to program? Are the language and development libraries well documented and organized in a way that a kid can use? Are there a lot of examples to work with? Do things work reliably and predictably? (For example, a buggy environment such as the C-based environment for Lego Mindstorm was a big negative.) Is it easy to get some kind of visual reward or feedback (e.g., easy to compile and test a program and see it working)?
And - remember - positive feedback and encouragement coupled with lots of patience are probably the most important part of his educational process.
"Consequences, Schmonsequences, as long as I'm rich." -- "Ali Baba Bunny" [1957, Chuck Jones]