> But here's the real question. What programming language should Joey
> learn first?
That depends on why you want him to learn one.
> Really, the candidates in my mind are Java and C++. I suppose Java is the
> more politically correct choice. But I'm worried about it hiding too much
If you don't want to hide what's going on inside, then C would be a
better choice than C++. Assembly would be even better, and ignoring
the PC and working with a PIC chip, some switches, and a bunch of LEDs
would be better yet.
If you'd want him to structure and organization at the expense of
being exposed to how computers really work, pick something cleaner and
less detail-oriented than C++, such as Smalltalk or, if you want to go
with a more natural (visual) interface, Toontalk.
"Joey should use language X." is not a complete statement, for any
value of X. Instead, try "Joey should use language X in order to Y.".
Only when you know Y can you solve for X.