views:

3782

answers:

64

Possible Duplicates:
What is the easiest language to start with?
What are some recommended programming resources for pre-teens?

My son is 11 years old and he would like to learn a programming language. Of course his primary goal is to develop some (simple) games.

Do you know of a programming language that is suitable for this situation?

Summary of languages recommended in the answers

+14  A: 
  • LOGO
  • NXT-G for Lego Mindstorms
  • Heck, there's always BASIC (I started with that)

A good list is here on Wikipedia.

Also see many related SO questions, especially this one

DVK
How do I move the turtle in LOGO?
Nosredna
I came to this question hoping someone had mentioned LOGO.
Ether
+2  A: 

Depends on the kid. :)

But eToys might be a good start, it at least makes it simle to develop simple gaines. Although eToys is more or less a point&click language.

It might also depend on the kid's knowledge of English (if it isn't its native tongue).

mihi
+16  A: 

I started with Visual Basic 6 when I was 11. Then moved on to some pure BASIC because that was all my own computer had. Although I'm no fan of Visual Basic today, the fact that I could drop a button in a window, click on that button, write some code for just that button etc. made it a bit easier to understand what was going on.

Harry Vangberg
Same here. Started Visual Basic 6.0 when I was 11. Now I use .NET.
Austin
+2  A: 

Lego NXT-G, the graphical Labview-based programmer included with Lego Mindstorms is a great product. You can use it to develop trivial games on the NXT device, but it wouldn't be suitable for learning general-purpose programming (or PC-based game programming).

I'd say NXT-G is a good starting off point for learning concepts in an engaging environment before going to something more text based.

Jason R. Coombs
+23  A: 

Have a look at Small Basic from Microsoft's DevLabs. It is designed as a simple (.Net based) language and comes with its own editor with intellisense. It also has an option to "graduate" to Visual Basic.

A description from the DevLabs site:

  • Small Basic derives its inspiration from the original BASIC programming language, and is based on the Microsoft .NET platform. It is really small with just 15 keywords and uses minimal concepts to keep the barrier to entry as low as possible.
  • The Small Basic development environment is simple, yet provides powerful modern environment features like Intellisense™ and instant context sensitive help.
  • Small Basic allows third-party libraries to be plugged in with ease, making it possible for the community to extend the experience in fun and interesting ways.
adrianbanks
+1 for the turtle... Turtle.Show() and Turtle.Move() make for happy kids!
AJ
And to think; all I had is GW-BASIC!
PeterAllenWebb
-1. BASIC deserves to die!
Jason S
Do you really want to mentally mutilate the poor kid beyond hope of regeneration?
disown
-1 for BASIC and platform lock-in! Sorry but I think the other options (python, scratch, etc..) are better.
+1 because of all the basic bashing going on. there is nothing wrong with small basic in educational context. and there is no "lock in" for .net either (see mono).
ssg
+1, I started on BASIC in 3rd grade. Now I'm employed as a software engineer. Obviously it is not a path to ruin.
Matt Baker
+2 Its funny to see how many people jump on the VB isnt cool bandwagon. Once you've learned the principles, jumping from one language to another is simple. I started off on vb.net and after a week of using c#, was able to use it just as effectively. And I'm not that smart.
NickAtuShip
A: 

Depends on the kid..... I don't know any languages in which it easy to develop games (except gamemaker script language).. bu personally I'd start with a serious language.. C#, or java, or whatever you use, and actually learn him the basics of programing, if he get it, he will thank you indeed when he'll grow up. if not, nothing happened, search for something simpler.

I've done so with my brother.. and he found his own way to develop games with .net's WinForms :)

Itay
my dad was a tard, but he did buy me an Apple ][e when I was a teen... best thing he could have done for my developmental knowledge... I was coding for myself and the school in very little time.
Hardryv
well yeah, but you can achieve it with a pc too :P
Itay
+2  A: 

I have heard some good things about Phrogram. It is a simple language, designed for kids and it targets the .NET platform.

Brian Rasmussen
+2  A: 

If you're looking for a real-world programming language that can be understood by an 11-year old, Ruby is a good option. Toy languages are cool, but limited in what they can accomplish. At 9, I was copying BASIC programs out of magazines. By 10, I was writing in C, because I'd gone way past the limits of what BASIC could accomplish. If I had had Ruby back then, I would have been very, very happy.

I highly recommend Chris Pine's Learn to Program. He also has an online tutorial that contains much of the same content as the book.

I would, however, recommend not pushing your kid into programming if he's not showing an interest in it. Just because you love it doesn't mean your kid will.

Bob Aman
I have trouble understanding Ruby and I'm 27... ;)
Carlos
... really? I mean, yeah, sure if you're looking at the bizarre stuff that people write for code golf, definitely. But all of the control structures are dead simple to understand, and stuff like "Hello world" is about as succinct as you can get.
Bob Aman
I prefer python to ruby, but they're pretty similar.
Mk12
Yes, I'd prefer Python too. But I have to admit there are reasons for me disliking Ruby that probably can't be blamed on Ruby itself. The Eclipse plugin we're using is bad, I've never learned Ruby from ground up but by reading and modifying sometimes complex code written by others and I'm probably just too stuck on Java-like languages. Besides, I don't like the syntax or coding conventions.
Carlos
+3  A: 

Try VisualBasic Express. It's a simple language that will teach him concepts he will need for lower level languages. It's also free.

George Edison
+1  A: 

Revolution at http://runrev.com

It's an english like lang based on HyperTalk, though it's grown a lot since the 80's. Runs on Mac, Windows and Linux. VERY easy to learn.

I don't use it much anymore, since it's VERY hard to find developers for. And in the real world it's about being marketable. But it's a wonderful language.

Stephen Cox
+4  A: 

I coulda done python and pygame at age 11.

I was a QBasic kid myself, the simpler python constructs are probably even easier, and it scales upward to harder concepts.

Dustin Getz
+53  A: 

Snake Wrangling for Kids

Learning to Program with Python.
Copyright © 2007. All Rights Reserved.

“Snake Wrangling for Kids” is a printable electronic book, for children 8 years and older, who would like to learn computer programming. It covers the very basics of programming, and uses the Python 3 programming language to teach the concepts.

Dustin Getz
+1 for the title alone!
Dan
And for those who remember about the Logo language used to teach programming to children, there is the turtle module in Python too (http://docs.python.org/library/turtle.html).
RedGlyph
+1 for Python !
Mk12
+6  A: 

My son started learning Hypercard when he was 7 years old, using a 2-inch think book called the Hypercard bible. At age 11, your son should be capable of handling a reasonably powerful programming environment as long as it doesn't require too much domain knowledge. Either C or C++ would be too advanced for that age.

Java is a possibility if you use a teaching environment such as BlueJ to avoid the hard bits until later. However, if he is thinking of graphical games, then this framework might not provide enough support for him.

Another, even more scaleable environment is Squeak Smalltalk, but the risk with that is that as he gets more advanced, it will be beyond your ability to help him unless you already have a grasp of Smalltalk, are or good at learning new languages.

A nice balanced choice is Python with the PyGame library. You have an object-oriented language so that he will learn concepts that will be useful later in other languages, and the PyGame library supports writing some fairly sophisticated games. In addition, Python can be used to produce binaries with everying in one .EXE file to share with friends. Have a look at the PyGame site where you can find many sample games that have been created for the many PyGame programming contests. With 370 arcade games on offer, he should be able to find something interesting and perhaps begin by modifying it rather than starting from scratch.

Michael Dillon
+6  A: 

Whatever you choose, kids need immediate feedback. Myself, when I was 11, was amused by the simplicity of Qbasic's PLAY command (plays musical notes using the PC speaker):

PLAY "CEFG."

Later I learned the drawing commands, and then I built my first games. So keep in mind:

  1. Audio
  2. Image
  3. Games

If those 3 things are easy to do, it will keep him interested.

Jader Dias
+24  A: 

Scratch. Don't underestimate it just because it's drag-and-drop. MIT uses it for their intro computer science class.

deeb
MIT's intro CS class has fallen from its days of Scheme to Python, but I don't think they've started using Scratch. :-) Still, +1, for Scratch is *great* at getting kids into programming: many of the kids learn and understand recursion just because it lets them draw cooler patterns, etc.
ShreevatsaR
this is another MIT. :-).
LB
+1 on the vote for scratch. I got to see it in action in the hands of this same age range (11-12 year olds) this past summer, and it was reasonably effective at explaining basic programming concepts.
chsh
I installed Scratch and it's really great. My son was able to write some small programs immediately. Now he's downloading some examples from the website and modifying them is great fun. Scratch is even adopted the local language (german). Thanks for the recommendation!
tangens
a good article concerning scratch http://cacm.acm.org/magazines/2009/11/48421-scratch-programming-for-all/fulltext with good references
LB
+3  A: 

As a programmer, if you want to develop the skills on your boy then I would recommend you teach him the Scheme language. its most popular implementation, Dr. Scheme has very detailed documentation for learning and game programming using the functional paradigm. If he learn Scheme now, C and Java will be a breeze.

ONi
heck no! You trying to kill the kid?!?!?! ;)
Alex Baranosky
+12  A: 

How about Processing?

It's not really aimed at games, but more at creating interactive visual widgets.

It's basically simplified Java, and right off the bat you have visual feedback - here's a complete sample program that will draw a multicoloured line with your mouse:

int oldX;
int oldY;

void draw()
{
  stroke(random(255), random(255), random(255));
  line(oldX, oldY, mouseX, mouseY);
  oldX = mouseX;
  oldY = mouseY;
}

The Processing IDE gives you a very easy way of managing "sketches" (programs) and a means of publishing your programs as web pages with applets. Also the built-in examples show how you can get some pretty cool effects with just a page or so of code.

therefromhere
I've been quite impressed with Processing and how it is so simple to create immediate visual feedback. Do you know if there is any interactive debugging for it? It would be great to be able to step through the program and view the value of variables.
Ash
Since it's essentially a layer on top of Java, you can debug it within a Java IDE like Netbeans or Eclipse.
therefromhere
BTW, here's how to run Processing from Netbeans: http://processing.org/discourse/yabb2/YaBB.pl?num=1191468953
therefromhere
NodeBox is a (OS X only) alternative using Python instead of Java.
Matt Baker
A: 

80x6 Assembler. Get them while their young ;-)

Joel
Actually my Pa taught me machine code when I was 4, wrote my own OS by 6.
ChaosPandion
+9  A: 

I like Alice a lot. You can do pretty cool things using it.

The Blender Game Engine is really interesting too, it's a bit more difficult but you can create amazing games.

LB
Blender involves 3d modelling too.
Mk12
+9  A: 

You have the opportunity to start him out right. Start him with Lisp.

Ether
Is there good Turtle Graphics and Sound libraries for a Lisp dialect?
Thorbjørn Ravn Andersen
Are you trying to make a guinea pig out of the poor kid?
Alex Baranosky
What's wrong with experimenting with kids? :-)
liori
Might as well feed him with plenty of candy to give him diabetes, and then keep him supplied with insulin. Just in case something goes wrong and the kid goes frenzy, you know.But still, I might be a little bit inclined to agree. Lisp is a language with very different characteristics compared to many other widely used languages, so giving him a taste of its special structure may work very well for his development of thought systematic.
Dunya Degirmenci
The Scheme dialect is very well suited for introductory programming. Common Lisp might be a bit much.
David Thornley
A: 

At the age of 13 I wrote my own Minesweeper in Pascal (including mouse and cheats). Unfortunately, at the age of 14 I learned how to format my harddrive with int 13.

Definitely your son should try a more advance programming language than Basic. These days, Python is even simpler/popular than Pascal. Give him a computer to play with (including installing operating system and taking it apart) and let him learn by trying.

Alexandru
A: 

VisualBasic 6 was great as an introductory language. I used to teach it to kids (mostly simple games like frogger and pacman -type things) in that age range. If they wanted, they would later move to more advanced courses in Java and C/C++. When we had to transition to .NET, it was a little rough at first and it wasn't as teachable.

I still think VB .NET is probably a good choice. The syntax being in plain words (rather than cryptic symbols) seemed to help with beginners. The visual Forms Designer is probably plenty powerful enough for whatever he needs, he can have a nice interactive GUI app up and running in no time. Also, if you set him up with the Express Edition, it's not likely he'll be turned off by a complex IDE (seen it happen with Eclipse).

FrustratedWithFormsDesigner
+8  A: 

I would try python. It's easy to follow and intuitive, without a lot of magic or mystery. Also, it's one of the top languages in the industry - might as well learn a job-maker :)

thethinman
+5  A: 

Inform is a domain-specific language for writing text adventure games. Inform source code looks almost like a script for a play.

If your son likes reading, I can't think of a better first programming language; if he's more visually inclined it might not be such a good choice.

Michael Borgwardt
hmm. I have real mixed feelings about Inform. On the one hand, it's aimed at adventure games which is really cool. On the other hand, the syntax is so warped and constrained that it seems like as a first programming language it would be confusing, frustrating (where's the debugger?????), or teach some bad habits.
Jason S
i didn't know inform, that's pretty cool but this not really intended to learn how to program. (but that's pretty cool so +1)
LB
@Jason: There's other, similar languages. If you're interested, you might look at TADS (at www.tads.org), which is intended for adventure games, but is a whole lot more like conventional programming.
David Thornley
Inform 7 is about the only natural language programming environment I've seen that doesn't suck on face. I tried it and had trouble getting past the precise way the program wanted sentences formatted -- e.g. "The living room is west of the bathroom" is valid, but "To the west of the bathroom is the living room" is not. The error messages were a little obtuse for me too. Truth be told, different strokes for different folks and all, I'll go with "it's good but it isn't for me."
Jim Dagg
+2  A: 

The language itself isn't important; kids are capable of amazing things where they're interested and motivated. The challenge is finding something that allows them to do "cool" stuff with their computer, to spark that motivation. That's why LOGO and BASIC were popular in the 80s, and Hypercard in the 90s, because they targeted the core functionality of the computer on which they ran. Python/Ruby/etc. may be appropriate as a language, but they alone aren't suitable for getting someone interested in programming.

There was a project called Shoes that provided an easy SDK for graphics, media, and web, on top of Ruby. It was designed specifically for kids and casual programmers. Unfortunately it's not around anymore, but was the most interesting and suitable LOGO/BASIC/Hypercard replacement for modern computing that I've seen.

Darren
+3  A: 

Give him C#, seriously, and don't be suprised when he knocks up code in few years of better quality than majority of dump out there.. Many people around me were at that age already picking at C and various asm dialects, they all have kids and love looking at them ripping it apart so quickly although gaps to fundamentals become very obvious (just like it is with pure orange Java grads)..

C# makes it too easy, a kid just eats it especially with VS2008 and its designers and popular refactoring tools. Try it out and you'll be shocked how quickly he'll rip through it.. what else to expect..

Don't let him/her program games straight away but do encourage him to analyse other people's code (as well as simple game code, XNA and friends say, many libs out there).. to go through what he thinks are interesting portions.. Demos will attract him too and is the best way imho. API or framework is not that relevant at all and by the time he finishes high school it will be a new one anyway, whatever v10 CLR and v15 Java and v8 Google shove down the throat of goats..

Btw, there are 15 year olds working through git and managing pretty complex builds of C and C++ tools and sure that's an extreme example.. but don't underestimate their capacity and ability to take on complexity, it's incredible..

rama-jka toti
I agree about not trying to make games right away, no way is an eleven year old going to *code* even simple games and fully understand it.
Mk12
I completely agree about C#. I actually am 12 years old right now (no joke) and I'm doing C#, but I started programming at 7, so who knows. C# is quite easy to pick up as long as you can understand some of the most important concepts, but that's why we have Stack Overflow. I was able to do so, and I've done some work for a non-profit, so I think, after a little bit of learning, a kid can really get going with C#.
Maxim Zaslavsky
A: 

Microsoft Small Basic is a great environment for learning programming. It's free, and he can get started and work through the PDF documentation...

Once he's mastered that, he can move on to Dark Basic.

Finally, he can learn C programming and use the DarkBasic engine's C bindings to leverage the graphics knowledge he'd have at that point combined with a real language.

dicroce
+1  A: 

Turbo pascal should be the best choice :)

Gintaras Vaitkus
+1  A: 

Hi, He is 11 and he is into games. That's a hint. You should get him started in something that will not only be fun but he will learn something. In fact, there are two projects geared towards beginner programmers and/or those who are into games and would like to start programming.

  1. Karel programming: This is use by Stanford university. In fact, all comp. sci students must use this before jumping into Java or Scheme courses. This is very beginner. If you wanna look at the environment, the link below is for the course where Karel is introduced to the students:

  2. Alice programming developed at CMU. In fact, the whole concept of Alice project is to teach programming to kids while making it fun at the same time. There have also been books published on the subject. You can search for Alice on Carnegie Mellon University site or or google it.

Karel Programming - introduced to Stanford students

Nikolas Sakic
+2  A: 

I would have thought JavaScript would be a good language for him to start out with. The language is compact and safe (can't crash the operating system), and runs in a web browser. What's more, JavaScript is a nice language to learn.

Kinopiko
+3  A: 
Graphics Noob
Yeah, C++ is good. I learned it when I was 11 going on 12, and it helped contribute a lot to my understanding of computer architecture, stuff I probably wouldn't have learned in great detail if I started with C# or Java first, since they hide those details from you.
blwy10
Yes, but that is Rock Hard Awesome. He's an exception to the rules.
Jim Dagg
c++ for my boy. He gets more dangerous all the time.
EvilTeach
+1  A: 

11-year old kid is old enough to tackle any language.

I'd recommend Scratch, Logo and similar for kids up to, say, 10.

Domchi
A: 

How about Logo. In Coders at work the interviewer in the second chapter talked about how you wrote a game in Logo.

James Black
A: 

One thing that might be very cool for an 11-year old, is iPod Touch programming. While Objective-C may seem a bit heady at first, it is not unmanageable for a young kid if you start out using some game creation frameworks like Cocos2D.

The thing that makes it compelling is that's it's something easier to take along with him to show friends what he has done.

Kendall Helmstetter Gelner
If you want to buy an iPod touch, and pay $99/yr just to put the applications on the device (or you could jailbreak it). But anyway, I think a non garbage collected language would be too hard.
Mk12
+1  A: 

I'd suggest trying out some of the tutorials at http://squeakland.org/tutorials/

Squeak is an implementation of Smalltalk with an emphasis on interactive graphical programming.

The squeakland tutorials and material has been designed to help teach maths and science to children using interactive programming... and sometimes they use games programming to motivate participants.

cartoonfox
A: 

Take a look at ruby.

Let him play with irb and start with these 3 programs:

first:

puts "hello world"

second:

puts 1+2

third:

1.upto(10) do |n|
  puts n
end
smbrant
Negative vote definitely not justified. Ruby does have its warts and horns, but it's definitely possible to write clear and simple Ruby. Plus, the `times`, `upto`, etc. methods more closely complement the way people (not just children) think.
Justin Poliey
A: 

I think a good language would be c#

geoff
+2  A: 

Im posting this through a proxy, because I do not ant this associated with my account. I am 14, and I am very well fluent in c#. I started learning it at 13 through web development

gs
You should be proud to be this fluently at an age of 14, don't hide it.
Dykam
+1  A: 

I was glad to see someone recommend Squeak. It is Smalltalk, and is easily graspable by anyone -- anyone with a sustaining interest, that is. And it comes with games. It is the only programming language my son was exposed to at roughly the age of 11, and it kept him busy for many a happy hour while I toiled away in C++ and enjoyed myself with ruby at the office. He's not interested in programming now (which I think is a fine thing -- it's way too time consuming unless you have a real bent for it), but it was accessible at the time, and it IS Smalltalk, which we all know is foundational in much the same way as Scheme or Lisp or even Fortran.

I remember when my nephew got really interested in programming, just about that age, when he gave up model railroads for PC's. He'd be embarrassed to be reminded of this now, but he developed the idea that what he really needed was a Fortran compiler. But no one really agreed enough to get him one! Too bad, but I think now, ten years later, that when he isn't using Fortran he uses Mathematica in his daily work. Ha ha on all of US!

Today, for a game, I think a good option would be Objective C for the iPod touch. Sad to say it is not really open, but it is interactive in a way that ought not to be ignored by someone who wants to write games for the future, and the SDK is free although you do need an Intel Mac. There are aspects of interacting with the iPod/iPhone that are a bit of a chore, and if that seems to pose too much of a barrier (not to mention the $100 to get your program onto the device), then there is nothing wrong with coding Actionscript 3 for Flash to get going with games. The SDK is free and downloadable and although it does not have multitouch support in its release version (fairly essential for really nice interactive gaming), it eventually will, and AS3 is a modern enough language, having the concept of interfaces, to be able to get across some essential ideas of design patterns. And the virtual machine (the flash player) is everyone now, even Linux.

The advice to learn Ruby or Python seems unnecessary. These are both wonderful high level utility languages with loads of opportunities to pick up first class concepts of object orientation, generation of executable code, full feature libraries and first class objects themselves, but he will pick them up himself as necessary. I have found the documentation for both to be quite thorough, and the documentation for Ruby to be more useful on a day to day basis. I am thinking in particular of the pickaxe books and the fact that the libary modules and their members were rendered into a windows help file for easy searching. Google, though, have chosen Python, so what do I know?

I'm posting this as myself, rather than commenting on someone else's post, because I don't have enough cred points or whatever the points are called, in order to vote something up or down.

A: 

Python with PyGame. It should allows him to writing game, such like Mario, etc. Perhaps Ruby is more flexible language, but I never used it.

+1  A: 
Norman Ramsey
A: 

Groovy Programming Language with GroovyConsole and buy him his first programming book =)

tranced_UT3
A: 

I remember finding BASIC very interesting when I was 11. However, a few years later when computer course came to our school we started with LOGO.

I guess there are many languages like ruby, C#, python which are the BASIC's of today in terms of easiness to get started with. Of course, at 11 years I'd probably stick to the very basics of these languages.

Unlike programs though, I would suppose the examples would not change from my days to today. I'd suppose lesson will still start with simple loops, and be complete with the Tower of Hanoi!

KalEl
A: 

Flash and actionscript. You get visual feedback easily and you can then start to program games with simple onKeyPress methods.

DavidA
+1  A: 

Hackety Hack is a free Ruby-based environment aiming to make programming easily available to beginners, especially teenagers. Its driving force was an essay titled The Little Coder's Predicament written in 2003 by why the lucky stiff (AKA _why). It argued that programming isn't as readily available as it was in the Commodore 64 days, and that something should be done about it to help beginners tinker with their computers.

Hackety hack on Github

cetnar
A: 

SmallBasic from Microsoft. We use it to teach artists and designers how to make simple games. Some -not I - say the 11 year old would be more advanced.

Chris Masterton
A: 

StarLogo. Mitchel Resnick wrote a whole book (Turtles, Termites, and Traffic Jams) about exploratory simulation of parallel living systems based on examples coded by students using the language. It's a thin book but interesting from the ALife perspective; I've always wanted to try playing with it (but never had the time).

jprete
+1  A: 

When there are 11 year old network admins out there, I wouldn't worry about picking an easy or starter language. Kids pick up things fast if they have the interest. If you give your child a mainstream programming language he will be much better off after learning it (and finding a lot of code samples online for further discovery) because then he can start immediately applying it. Too often we try to dumb things down for kids.

Edit: So my vote of languages to start with are either C# (Microsoft platform) or Java (for other platforms, even Windows)

John K
+2  A: 

Programs like MIT's Scratch and Microsoft's Kodu are very good ways to teach the fundamentals behind programming without being overwhelming.

Kodu is geared towards developing games on your xbox so this may appeal to him.

Arriu
Kodu is pretty awesome, I like it, and I'm a grown man. :)
Rob
+2  A: 

I think C# is the way to go (someone already mentioned it, but whatever). I actually am 12 years old right now (no joke) and I'm doing C#, but I started programming at 7, so who knows. C# is quite easy to pick up as long as you can understand some of the most important concepts, but that's why we have Stack Overflow. I was able to do so, and I've done some work for a non-profit, so I think, after a little bit of learning, a kid can really get going with C#.

Now, the kid in question is oriented towards games, so why not try XNA? XNA provides a great design interface (very simple to use - drag & drop!), and once you understand the basics, it is very fun, especially for a kid this age. I really think you should try going the XNA route, and see how the kid feels.

Maxim Zaslavsky
A: 

Kids can learn anything, if you can teach it.

Do NOT underestimate them.

Start with the language you know best and love.

I started mine with C (18 years ago) when SHE was 4 years old.

She understood pointers before she was 5 and was touch typing before she could write.

She is better than me nowadays and sure has a better job and education than I (works for a bank in the City).

pkario
+1  A: 

If Blender Game Engine or XNA is worth considering, you should also consider

Unity 3D

It's impressive how much you can do with it without much programming. Also it is much more beginner-friendly than the Blender Game Engine (although this is subjective).

Supported languages are JavaScript (default), C# and/or Boo (Python variant). Note that these are not languages meant to learn programming.

Bonus: Basic version is free (as beer) since version 2.6

Overview on all three here

Meinersbur
A: 

QBasic? I had a lot of fun with it :)

Sergey
A: 

This past summer I started my 12 year old out with "Game Programming for Teens" by Maneesh Sethi published by Course Technology PTR in 2009 (ISBN - 10:1598635182, ISBN - 13:9781598635188). It uses Blitz Basic which is a bit different from the other suggestions here but it is targeted for game programming which is reflected in its API. He has really enjoyed using it.

The language is procedural. The API is, however, well suited for creating games.

The book does a good job of explaining how to create programs and it progresses nicely from simple to complex. It stats out with character (as in alphabetic) based games and moved on to graphics.

We would recomend it,

Ian

Ian Leslie
+1  A: 

I can't believe no one has mentioned Lua. It has a simple yet readable syntax, powerful features, and above all Does Not Use Zero-Based Arrays! Great for any young kid learning to program.

RCIX
Love2D might be worth a look if using Lua. It's very simple and easy to use.
Nexus
+1  A: 

Be prepared to try several languages. The write/run/test feedback cycle is more important than the syntax.

With my daughter I did some Logo, then some html/jquery/svg, then some Java, then most recently she's taken to Python. She's not an expert in any of them but each time she had a little interest we sat down and ran some code.

Spend the time talking about their goal and writing a little code that they can play with. It can be a great shared experience if you don't get hung up on details and just make it part of playing. Give up when they get bored and just come back to it another time.

Rob Russell
+1  A: 

Okay... I am 11 years old, and I can program in C, C++, C#, PHP, Java, Perl, Python, ASP, ASP.NET, BASIC, and pretty much everything else that is used by "real programmers" For example, I would use the win32 API, instead of scratch. So, pretty much any programming language is good for an 11 year old, as long as he has a fairly big brain capacity.

Bender Bending rodriguez
Wow, that's impressive. How do you have time to learn all of those? When did you learn your first programming language?
Paul Mendoza
A: 

LOGO. I learnt it when I was 12. It was quite fun then. I heard Alice is pretty good too.

CuriousTiger
+1  A: 

No matter what language you start him on, when you try and discourage bad habits remember to take the effort to properly demonstrate the better methods you're trying to push him towards.

I started on QBasic during my primary school years (not that long after learning to read and write). I made heavy use of goto in my programming, which was discouraged by my father. While I got the message that this was a 'bad' way to code he didn't really do enough to teach me a better way.

It wasn't until many years later, when I was working my way through a QuakeC tutorial for creating a flamethrower that the concept of subroutines clicked. The light just went on and goto became a thing of the past.

Point is, I didn't learn to avoid goto by being told not to use it. I learned not to use goto by learning better techniques.

Adam Luchjenbroers
A: 

I started on an ancient version of BASIC when I was 10. By 11, I'd moved to Turbo Pascal, and at 12 I was on C++.

Don't under-estimate kids' abilities: if they're interested, they'll learn it :)

warren
A: 

I would have to say BlitzBasic. It is very easy to learn and he can get a game up and running in no time. Or he can try darkBasic which is a fun language too. BlitzBasic featured a Book called programming games for teens.

Sample Code:

' drawline.bmx

' draws a cross hair at the mouse position using DrawLine

 Graphics 640,480

 HideMouse 

 While Not KeyHit(KEY_ESCAPE)
     Cls
     x=MouseX()
     y=MouseY()
     DrawLine 320,240,x,y
     DrawLine x-2,y,x-10,y
     DrawLine x+2,y,x+10,y
     DrawLine x,y-2,x,y-10
     DrawLine x,y+2,x,y+10
     Flip     'Refresh Frame
  Wend
Luke101
A: 

It would really depend on what skills your child already has. If they are completely new to programming, you might want to look at doing simple web design with HTML or Javascript. It's an easy way to get them to interact with the computer. The advantages are that there's immediate visual feedback of what they are doing and coding errors are easy to spot.

Most kids might be excited at being able to put a dog on the screen that barks or makes a funny face when they click it. That can be taught pretty quickly with HTML/Javascript. Once they are familiar with functions, variables, program flow, etc. should make the transition to a more standard programming language a little easier to grasp.

For starting languages, I would probably start with Pygame or XNA. Pygame is a really good choice because there's not a lot of "overhead" to teach before you can start getting things on the screen. That is very important for beginning programmers. There's also a lot of online resources available for games compared to some other lesser used languages. XNA is another great toolset for quick implementation, but there would be a bit more background needed on the syntax.

ChurchSkiz
A: 

Try blender you can make the models and use logic bricks to program them or python you can make any type of game from simple to complex.

mtwisterr
A: 

I say, don't enforce a language for him... Try to give him choices of languages that he might like, and let him choose which one he likes best... Also don't think that he can't grasp a big language like java or C++, he can... Every language may be appropriate, if he chooses it. I've started using Delphi, when I was 12, and three years later I was grasping a little of C. And I had to do all this single handed, without anyone to tell me which language to use, or not to use.

Coyote21