FWIW, my .02: all programmers that I encounter who started with BASIC
learned bad programming techniques that are difficult to unlearn. I would
not start anybody out using BASIC - let the thing die.
IMHO C and its derivatives (C++, Java, C#) are not suitable for
beginners unless a very knowledgable tutor is on hand. I'm not keen on toy
learning languages either. Assuming that your platform is DOS/Win or Linux
I'd start the lad off on PASCAL, all other things being equal. You need two
things - a compiler that targets your platform and an instructional book that is
not only suitable for beginners but one which is suitable for someone your son's age.
(I don't have any recommendations.)
As for the compiler, for some time now Borland has made various "antique"
versions of Turbo Pascal freely available in their
cybermuseum.
Anything learned in PASCAL will easily transfer to any of the languages that are
more widely used today (and there still is an active Delphi development community).
I don't quite agree with Mac when he says "Writing even a simple games
program is quite challenging and not the sort of thing to cut your teeth on."
There are four basic ideas in programming that simple games will teach:
branching, looping, arrays, and input/output. Simple games like craps and
hangman should be within a kid's capabilities before long. Look up John Horton
Conway's Game of Life. That's easy and fun to program. Othello for two human
players is also easy to code. The human-versus-the-computer form of the game
is also not too hard to program but it may take some time before he learns to implement
a clever strategy for the computer to follow.
The main problem will be keeping him interested until he gets to the point
where he can do something worthwhile, which won't be overnight. If you can't
already act as tutor then I suggest you learn along with him.