I would suggest that you start him off on either REALbasic or Java, because both can be used to create immediate results, and this is important for someone as young as your son.
The problem I find with REALbasic (and I'm actually going to try to write a book/manual on this subject within the next year) is that it tries to be object-oriented but doesn't quite make it. It's too easy to tie ones app to the default 'Window' object. Therefore, if you go this route, I would suggest that first thing you do after launching the app (which automatically opens a blank project) is close the 'Tools' window and the 'Window1' window. Make him work only with the 'App' object for starters. Make new classes within the App object, and don't let him touch 'Window1' or the tools until it's time to write an interface for his app. Don't let the interface itself become the app.
Ok, let me explain this a little better. First off, he needs to learn what is meant by 'object-oriented programming', or OOP. Between Java and REALbasic, Java is more naturally OOP (IMO), since everything is automatically an object. But whats important here isn't language specifics, its gneralities and ideas encompassed by the OOP philosophy. So find him a good book on OOP, and put it in his hands. Unfortunately, I can't really recommend a good one since I learned about OOP in the context of specific languages (C++, Java, REALbasic). Perhaps others in this forum can offer some good suggestions.
Once he has a good book on OOP, then get him something on the actual language he is going to be using. If REALbasic, then I would suggest
Matt Neuburg's
REALbasic: The Definitive Guide. If he goes with Java, then perhaps
Java - How to program by
Deitel.
Now he's ready to learn. Again, I'll come back to the app/interface separation. I can't stress this enough. He must learn to keep these two things separate. The app does the work, the interface displays the results. Period. The interface should do nothing else. This helps with both debugging and portability, amongst other things. Once your son learns his language, it will be a far simpler matter to port his apps to a new language, like C++. Interface writing in C/C++ can be a pain, even with the Mac Toolbox or the MFC, but interface writing in basic (or Java for that matter) is much easier. And there are ways to use C/C++ methods and classes in REALbasic (and Java as well, AFAIK).
Once he has a handle on basic/Java, then get him started on C/C++. I would recommend 2 titles -
C++ Primer Plus by the Waite Group, and
C++ in Plain English by Brian Overland. The C++ Primer Plus is a vertiable tome, coming in at over 1000 pages, but it covers most of the ANSI/ISO standard for C++. C++ in Plain English is much smaller, but is a good read, and perhaps most importantly, contains a reference to most all of the C++ standard library. VERY handy indeed.
Anyways, hope this makes sense. In a nutshell, get a book on OOP, make sure he understands the basics, and encourage separation between the interface and the engine.
(tig)
"We do not inherit the land from our ancestors"
"We borrow it from our children"