See that book on the right there? That's how I learned to program. This book was THE book in 1984. I typed in the whole book on a Commodore 64.
Originally, there was a meeting between the principal and my 5th grade teacher, Mrs. Hill. They said I was "at risk." I was probably going to be voted "Most Likely to Be Convicted of a White Collar Crime." Anyway, they set it up so I could sneak an Apple II out of the school as long as it was back before Monday morning. After it was clear I'd found my (or "a") calling, Dad decided to get a C64 for me. My dad sold his Van to get me that C64.
You can spend some time reliving your C64 by using the in-browser Java-based C64 Emulator (and games) over at DreamFabric, or by downloading a C64 emulator from Per Håkan Sundell.
I wonder if a book like this could hold a 10 year old's attention like it did for me. I burned weekend after weekend typing in Hex Codes from Compute! Magazine. I paid other kids on the block to read them to me so I could type them faster.
While I'd love for Z to be a little more well-rounded than I, it couldn't hurt to teach him at least the logic around general purpose programming.
Will younger kids "in the future" program by scripting in Second Life? Don Box asked this question two years ago and came up with answers like, Teach them Lisp, or ML, or Smalltalk or Ruby. I'm not sure what he decided...Don?
Should kids learn a "real" language like Lisp? Or an artificially Kiddy language like Toontalk? Possibly a world like Scratch (from MIT's Lifelong Kindergarten)?
Should kids have their own programming environment as an introduction to the world of engineering? Mark Verber considered these languages for his 10 year old and has a great write up on research he did:
- Logo: good for simple projects (and younger kids). Once scratch is released, use it instead.
- Squeak (smalltalk) for older kids whose focus is building artifacts more than programming
- Scheme for kids focusing on learning computer science
- Java, Python, or KPL for kids that want a quick path to vocational program
Perhaps what's needed to help Johnny learn to program is a connection to the physical world like Mindstorms Kits or a Viper Robot and PowerShell (video) or the creation of games using tools like BlitzBasic. Maybe Supercard (remember Hypercard?)
In the end, I suppose it depends on the kid's personality and natural thirst for learning. I plan to let Z know there is a nearly infinite number of cool things to do. The trick will be explaining it without overwhelming him (or myself.)