python or ruby are good choices. They can be used to do UNIX scripting, and each one has some really cool modules to do graphic stuff. I'm learning ruby just now, so that i can do GUI programming with shoes, and im using _why's guide: http://poignantguide.net/ruby/index.html
I don't know which one is better for a 13 year old, just pick the one you know better.
Seconding Ruby, just for _why's guide. I've never read anything that makes me so immediately enthusiastic about coding, and it still has that effect when I reread it. I wish I'd known about that as a kid.
I've always liked Chris Pine's tutorial (http://pine.fm/LearnToProgram/), because you can go through them with someone who's paying attention in about two hours. I do love _why for self-teaching, though.
My biggest recommendation, though, is that once the kid has any sort of "foundational" programming language under his belt, you write a Scheme interpreter together, in that language, and then show him that the interpreter you just wrote can run Scheme files that already exist (possibly ones you pre-prepared.) That's the best way, I've found, to burn into someone's head that there's no one-true-language, and to get their mind started experimenting with "what if the language was different in way X? Could I code that?" trains of thought.
Somebody downvoted this entire thread; no clue why. I've never tried Hackety Hack, but it looks like a really interesting tutorial set. Thanks for the tip!
I'd also recommend Ruby and suggest you take a look at Shoes (http://shoooes.net/) which makes it very easy to code GUI-apps with all sorts of fun-stuff in them like animations, downloading data from the web, videos.
The most important part in teaching a 13 year old programming is to let him have fun and a give him a sense of achievement. The rest will come.
I agree! The poignant guide is perfect for having fun in the reading about it part.
And Ruby has a number of other benefits:
* Easy web frameworks if he wants to get into that (Rails, Merb, Sinatra, Camping, etc)
* Definitely fulfills the "beautiful syntax" part
* shoes for really easy GUI apps (that are portable, so he can show it off to his lame windows-using friends)
* Built-in powerful regexps for that pattern matching you expressed love for
* It's generally something that you'll run from command line, helping with the learning about Linux part
* Lots of cool libraries out there
* Object-Oriented, which at least for me was a very easy thing for me to grasp (especially compared to functional, which I'm currently trying to learn)
I don't know which one is better for a 13 year old, just pick the one you know better.