# How do I start kids on programming?

**URL:** <https://boards.straightdope.com/t/how-do-i-start-kids-on-programming/558446>\
**Category:** Factual Questions\
**Created:** [October 26, 2010, 10:13pm UTC](https://boards.straightdope.com/t/how-do-i-start-kids-on-programming/558446 "2010-10-26T22:13:28Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![EdwardLost](https://avatars.discourse-cdn.com/v4/letter/e/bbe5ce/32.png) [@EdwardLost](https://boards.straightdope.com/u/EdwardLost)\
**Post date:** [October 26, 2010, 10:13pm UTC](https://boards.straightdope.com/t/how-do-i-start-kids-on-programming/558446/1 "2010-10-26T22:13:28Z")

</div>

I first learned to program in middle school in the mid-70’s on a teletype terminal using Basic, which was very easy to learn and use on my own.

What’s the equivalent easy-to-learn, fun-to-play-with language these days? My kids are approaching the age I was when I started and I’d like to coax them away from just playing computer games.

---

<div class="post-metadata">

**Author:** ![CookingWithGas](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/cookingwithgas/32/485_2.png) [@CookingWithGas](https://boards.straightdope.com/u/CookingWithGas)\
**Post date:** [October 26, 2010, 10:18pm UTC](https://boards.straightdope.com/t/how-do-i-start-kids-on-programming/558446/2 "2010-10-26T22:18:53Z")

</div>

This is not hard-core programming but there is a free program available from MIT called [Scratch](http://scratch.mit.edu/). They can use it to make animations. It is graphic-based and teaches basic programming concepts without getting too hung up on code syntax. If they’re older than 13 they may be ready for something more advanced.

---

<div class="post-metadata">

**Author:** ![Derleth](https://avatars.discourse-cdn.com/v4/letter/d/b9e5f3/32.png) [@Derleth](https://boards.straightdope.com/u/Derleth)\
**Post date:** [October 26, 2010, 10:20pm UTC](https://boards.straightdope.com/t/how-do-i-start-kids-on-programming/558446/3 "2010-10-26T22:20:55Z")

</div>

You could do a lot worse than [Guido van Robot](http://gvr.sourceforge.net/), which is, essentially, Logo re-implemented in Python. The basic idea is to control an on-screen robot moving around an environment by writing software to get the robot to do things and make decisions. It’s very simple, impossible to screw up that badly (as opposed to, say, making a bad POKE in BASIC), and Python, the language they end up learning, is a real language seeing real use in a wide variety of domains.

Finally, of course, it’s free in every sense, so you don’t need to buy into any corporate dogma and hope the company you purchased from doesn’t cancel the project you bought into, like Microsoft did with VB6.

---

<div class="post-metadata">

**Author:** ![Chronos](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/chronos/32/134_2.png) [@Chronos](https://boards.straightdope.com/u/Chronos)\
**Post date:** [October 26, 2010, 10:23pm UTC](https://boards.straightdope.com/t/how-do-i-start-kids-on-programming/558446/4 "2010-10-26T22:23:12Z")

</div>

Basic is still around, still used, and still relatively easy. Alternately, you might try to get them interested in Java, C++, or some other more practical language. They can be harder to learn, but there’s no reason you have to tell _them_ that.

---

<div class="post-metadata">

**Author:** ![Derleth](https://avatars.discourse-cdn.com/v4/letter/d/b9e5f3/32.png) [@Derleth](https://boards.straightdope.com/u/Derleth)\
**Post date:** [October 26, 2010, 10:28pm UTC](https://boards.straightdope.com/t/how-do-i-start-kids-on-programming/558446/5 "2010-10-26T22:28:05Z")

</div>

> [@Chronos](#):
>
> Basic is still around, still used, and still relatively easy. Alternately, you might try to get them interested in Java, C++, or some other more practical language. They can be harder to learn, but there’s no reason you have to tell _them_ that.

I think BASIC is a bad choice, mainly because it’s so different from anything else used today and it is impossible to go smoothly from writing software in BASIC to actually solving problems unless you buy into the whole Visual .Net World Order.

Also, learning Java and C++ first is just too big of a jump to make on your first try. To begin with, the lack of immediate feedback implied by the edit-compile-debug cycle is precisely the wrong approach for a teaching language, especially as I look at my calendar and notice that it is _not_ 1963 any longer.

Finally, Python is immensely practical. Do you actually think people who create serious dynamic web sites do the server-side coding in a static language like Java or C++?

---

<div class="post-metadata">

**Author:** ![Chronos](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/chronos/32/134_2.png) [@Chronos](https://boards.straightdope.com/u/Chronos)\
**Post date:** [October 26, 2010, 10:35pm UTC](https://boards.straightdope.com/t/how-do-i-start-kids-on-programming/558446/6 "2010-10-26T22:35:29Z")

</div>

We cross-posted; that wasn’t a reply to you. I can’t criticize teaching kids Python (not least because I’m not familiar with it myself); Java and C++ were just the first things that came to mind for “practical languages which are still widely useful”. I do see the point about an integrated editing/running environment (which usually seems to imply interpreted rather than compiled code) being useful for teaching purposes, though.

---

<div class="post-metadata">

**Author:** ![Frosted\_Glass](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/frosted_glass/32/3926_2.png) [@Frosted\_Glass](https://boards.straightdope.com/u/Frosted_Glass)\
**Post date:** [October 26, 2010, 11:09pm UTC](https://boards.straightdope.com/t/how-do-i-start-kids-on-programming/558446/7 "2010-10-26T23:09:53Z")

</div>

[Alice](http://www.alice.org/)is a pretty cool way to get kids into programming. I have participated in a few weekend workshops with local Pittsburgh kids involving this particular program and they all responded very well to it. Having nothing else to compare it to (I went to CMU which was one of the developing schools) I couldn’t really tell you how it compares to other programs but its free so check it out and see.

---

<div class="post-metadata">

**Author:** ![Markxxx](https://avatars.discourse-cdn.com/v4/letter/m/5daacb/32.png) [@Markxxx](https://boards.straightdope.com/u/Markxxx)\
**Post date:** [October 27, 2010, 12:25am UTC](https://boards.straightdope.com/t/how-do-i-start-kids-on-programming/558446/8 "2010-10-27T00:25:10Z")

</div>

I wouldn’t start with a programing language at all.

I’d start with XHTML and then move to JavaScript.

They are simple to learn and they will tell you if you’re kids have any interest or ability to program.

Since HTML (XHTML) is a mark up language it’s so easy and with HTML-5 coming out soon, there will be a call for it.

Then move to Javascript and PHP (PHP is open sourced so it’s more in demand)

Also VBA for Excel is a great thing to know as everyone uses Excel, well not EVERYONE but you get the idea.

Once they show any interest they can move toward “REAL” program languages. Which would be toward the more popular C++ or C#

Again HTML is great as it will show if your kids have the basic organizational abilities to handle scripting and it will allow them to build simple websites ASAP and it will give them the immediate gratification to encourage them.

---

<div class="post-metadata">

**Author:** ![Gary\_Robson](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/gary_robson/32/3448_2.png) [@Gary\_Robson](https://boards.straightdope.com/u/Gary_Robson)\
**Post date:** [October 27, 2010, 1:10am UTC](https://boards.straightdope.com/t/how-do-i-start-kids-on-programming/558446/9 "2010-10-27T01:10:26Z")

</div>

Why not move them from playing games to creating games?

I got my son going with a tool called GameMaker. The basics are very, very simple: just creating static backgrounds and sprites that move over them. They can make a “game” that actually does something in their first session. Then, they deal with more and more advanced concepts as they enhance the game: variables for scorekeeping, velocities and collisions for movement…

Next thing you know, they’re writing event handlers.

I haven’t messed with GameMaker in years, but hopefully it’s still around.

It also came with a set of pre-built games (including knockoffs of games like Pac-Man) which you can modify.

---

<div class="post-metadata">

**Author:** ![Derleth](https://avatars.discourse-cdn.com/v4/letter/d/b9e5f3/32.png) [@Derleth](https://boards.straightdope.com/u/Derleth)\
**Post date:** [October 27, 2010, 2:33am UTC](https://boards.straightdope.com/t/how-do-i-start-kids-on-programming/558446/10 "2010-10-27T02:33:15Z")

</div>

> [@Markxxx](#):
>
> I wouldn’t start with a programing language at all.
> 
> I’d start with XHTML and then move to JavaScript.

Javascript is just as much a programming language as C++ or assembly. XHTML is a markup language, and in this case will mainly serve to describe a document for the Javascript to manipulate.

> [@](#):
>
> Since HTML (XHTML) is a mark up language it’s so easy and with HTML-5 coming out soon, there will be a call for it.

This is a little like saying they should learn Betamax 'cause VHS is coming: XHTML is dead and HTML5 killed it. The differences between XHTML and HTML5 are significant enough that confusing them might result in web pages that don’t render correctly.

> [@](#):
>
> Then move to Javascript and PHP (PHP is open sourced so it’s more in demand)

Replace PHP with Python. _Everywhere._ The world will thank you.

> [@](#):
>
> Also VBA for Excel is a great thing to know as everyone uses Excel, well not EVERYONE but you get the idea.

This is less defensible: Given how easy it was for MS to kill VB6 you can’t trust VBA to be relevant for very long.

> [@](#):
>
> Once they show any interest they can move toward “REAL” program languages. Which would be toward the more popular C++ or C#

C++ and C# and Python and Javascript are all equally real. (PHP is just real bad.) The implementations _exist_, after all. They aren’t just hypothetical languages.

---

<div class="post-metadata">

**Author:** ![jz78817](https://sea3.discourse-cdn.com/straightdope/user_avatar/boards.straightdope.com/jz78817/32/1028_2.png) [@jz78817](https://boards.straightdope.com/u/jz78817)\
**Post date:** [October 27, 2010, 3:30am UTC](https://boards.straightdope.com/t/how-do-i-start-kids-on-programming/558446/11 "2010-10-27T03:30:19Z")

</div>

do _they_ want to get into programming?

---

<div class="post-metadata">

**Author:** ![EdwardLost](https://avatars.discourse-cdn.com/v4/letter/e/bbe5ce/32.png) [@EdwardLost](https://boards.straightdope.com/u/EdwardLost)\
**Post date:** [October 27, 2010, 8:09pm UTC](https://boards.straightdope.com/t/how-do-i-start-kids-on-programming/558446/12 "2010-10-27T20:09:10Z")

</div>

Thanks everyone for the good ideas.

I don’t know if they’ll enjoy programming, but I want to have something to introduce them to if I detect the interest.

---

<div class="post-metadata">

**Author:** ![The\_Defenestrator](https://avatars.discourse-cdn.com/v4/letter/t/13edae/32.png) [@The\_Defenestrator](https://boards.straightdope.com/u/The_Defenestrator)\
**Post date:** [October 27, 2010, 8:36pm UTC](https://boards.straightdope.com/t/how-do-i-start-kids-on-programming/558446/13 "2010-10-27T20:36:24Z")

</div>

I was going to say [RUR-PLE](http://rur-ple.sourceforge.net/), but it looks a lot like this:

> [@Derleth](#):
>
> You could do a lot worse than [Guido van Robot](http://gvr.sourceforge.net/), which is, essentially, Logo re-implemented in Python. The basic idea is to control an on-screen robot moving around an environment by writing software to get the robot to do things and make decisions. It’s very simple, impossible to screw up that badly (as opposed to, say, making a bad POKE in BASIC), and Python, the language they end up learning, is a real language seeing real use in a wide variety of domains.

It’s what I used to learn Python since I am not a programmer.
