PDA

View Full Version : Programming Language for Kids



mssever
February 3rd, 2008, 02:36 AM
I've been asked to teach a 10-year-old kid how to program, so I've been thinking about languages. Usually, I would suggest one of Python, PHP, or Ruby as a good first language, but I'm not so sure for kids.

I've been looking at Squeak (http://www.squeak.org), and it looks somewhat promising, especially if you add on the Etoys (http://www.squeakland.org). I've downloaded Alice (http://www.alice.org), but haven't looked at it yet.

Does anyone have any thoughts about a good first language for kids?

Note: This kid likes math, but since he's in third or fourth grade, his math skills aren't too advanced yet. Also, I'm not sure how interested he is in programming. Even though Python is easy to learn, I'm concerned that he might lose interest before he learned enough Python to be able to do something interesting. After all, programming is only fun if you're ale to do something interesting!

kool_kat_os
February 3rd, 2008, 02:44 AM
uhhh....for a 10 year old? Does he or she know alot about computers?:confused:

Wybiral
February 3rd, 2008, 02:48 AM
I started with BASIC when I was about 11-12 (QBasic to be specific) and I think what made it particularly easy to learn was that it had the graphical plotting functions built in. I'm DEFINITELY not suggesting QBasic (or any dialect of BASIC) just that any language with a simple enough 2d graphical library should make learning fun and rewarding (I don't know many kids that age that don't want to make their own games/graphical demos).

I've played with Alice myself, and IMO it's a bit more advanced (it might be good for a 15-year-old or so, but I can't imagine a younger child understanding too much of it). Basically, any language that's simple enough (my eye would be on Python) that you can find a simple graphical library (for Python, you could hack together a simplified Pygame interface) for them to start with, then slowly introduce them to more of the language. Simple graphics are great because they can see their code being executed and understand what's going on, then they can migrate to text and understand the program flow a bit better. Any dialect of turtle might also be worth looking into (since that's what it's for).

But, it probably depends on the kid... If they really like math, maybe they'll get more of a kick out of playing with numbers than graphics.

CptPicard
February 3rd, 2008, 02:50 AM
I would still suggest Python. It's about as simple as it gets and is not a toy language either -- he won't grow out of it and feel a bit betrayed by you teaching a "toy" language that is no good in the long run. Don't underestimate kids' ability to learn.

However, I have personally always toyed with the idea of... what would come of a kid who was taught a functional language as the first thing? He likes math, so the concept of computation as evaluating functions might not be so remote... Scheme makes a nice prefix notation calculator after all, and the syntax is REALLY simple.

(On the other hand, if he doesn't grok Scheme, you'll put him off programming forever...)

kool_kat_os
February 3rd, 2008, 02:51 AM
Ya i would do python.....it makes it easier to learn other languages

pmasiar
February 3rd, 2008, 04:29 AM
nah. 10 years old wants to program games. http://en.wikipedia.org/wiki/Game_maker is a windows freeware excellent for writing games with hardly any code. I tried it on myself, and let me tell you it was the most fun I had in programming in years. I tried it on a 10 years old, and we were able to have intelligent discussions about objects, events, timers, object collision, conditional statements and stuff. The whole point is, there is no code to write - program is build from palette of icons with actions, placed to event-slots of objects. Plenty of classic sample games are available to learn from: asteroids, invaders, breakout, platform game, etc. Professor Overmans, the author, teaches game programming course based on that, and I guess many PhD students contributed to that.

When he was able to show off to his friends in elementary school a platform game he wrote, and show them how he really can make changes and it still works, they were impressed.

<promotion type=shameles>In my sig is link to a project remaking this game engine in Python and Pygame. If someone with Python skills is interested, please msg me or join group.</promotion>

pmasiar
February 3rd, 2008, 04:37 AM
I would still suggest Python. It's about as simple as it gets and is not a toy language either -- he won't grow out of it and feel a bit betrayed by you teaching a "toy" language that is no good in the long run. Don't underestimate kids' ability to learn.

Yes. Kids will smell early that the language they learn is just a toy language, not the real one, and it might demotivate.


However, I have personally always toyed with the idea of... what would come of a kid who was taught a functional language as the first thing? He likes math, so the concept of computation as evaluating functions might not be so remote... Scheme makes a nice prefix notation calculator after all, and the syntax is REALLY simple.

(On the other hand, if he doesn't grok Scheme, you'll put him off programming forever...)

yup, those kinds of experiments is easy to do on children of other people, but demotivating your own kid for math for sake of experiment is hard to defend - maybe if you have couple dozens of children, you can take the risk, but not otherwise :-)

10 years old is not that good in reading, and writing code is boring and confusing. "Daddy, why computer cannot count closing parens for me? Is it that stupid?"

Sentientv2
February 3rd, 2008, 04:41 AM
I had the opportunity to learn Logo when I was in second grade. We had a simple Apple IIe (or maybe earlier) machine that you could type in logo commands and move a turtle or frog or something around on some lily pads (believe it or not I swear it was a turtle).

I was able to do some BASIC at about 10, though I didn't have anyone to teach me what I was doing. My grandfather brought my sister and I a Tandy Color Computer II in a black trashbag, along with some books, so I just started copying code.

Take a look at KTurtle on the Add/Remove Programs. It was a turtle!!

Take care and if you need any other eyes researching on a certain language, please let me know.

CptPicard
February 3rd, 2008, 06:24 AM
10 years old is not that good in reading, and writing code is boring and confusing. "Daddy, why computer cannot count closing parens for me? Is it that stupid?"

Bah. I read Dante's Divine Comedy on first grade up to at least through the Hell part, the rest got boring.

"Quit whining son/daughter and grow character, by your age I was already currying my functions..."

Well ok, not really... you're probably right, at 10 I was much more into humanities in general, and barely managed to type BASIC into my Salora Manager...

thesmartace
February 3rd, 2008, 08:10 AM
I agree with pmasiar, kids want to make games (I know I did when I started learning to program). Furthermore, kids need to be able to see quick results to what they are making; it's no good to have to write/fix a ton of code before you can even run anything. That's where I think software like Game Maker and any of the Click Team (http://www.clickteam.com) offerings are good. They teach kids the logic and concepts of programming in a fun and simple way.

Once they have mastered the basics, they might be able to move onto a real language like Python but, to begin with, toy languages are good tools for them to learn.

lnostdal
February 3rd, 2008, 08:35 AM
maybe http://rur-ple.sourceforge.net/en/rur.htm

popch
February 3rd, 2008, 11:20 AM
Smalltalk or Logo. Both have been designed with children in mind.

Squeak is a very credible implementation of Smalltalk even if it is by Walt Disney corp.

Logo is kind of a tamed LISP.

I suppose you should buy a book or two as well or download the equivalent. For yourself, that is, not the kid.

Sentientv2
February 3rd, 2008, 05:04 PM
I also wanted to mention something that I heard my cousin doing at her school. I thought it was a great approach for "cool" kids to get introduced to programming concepts.

Her class is doing a project simply using Microsoft Powerpoint. Granted, I'm not a powerpoint fan, but stick with me. She said they're developing a choose your own adventure game using the slides. Though she didn't realize it, they're developing the if else logical systems at a very fundamental level. I thought it was really neat and the ability to explain that level using a less technical paradigm was pretty neat to me. She really loves it and has started talking about (unprovoked by me at all) designing games!

It must run in the extended family.

limac
February 3rd, 2008, 05:21 PM
I am 12 right now, and started with C++, and trust me I am really happy! :)

regards,
limac

pmasiar
February 3rd, 2008, 05:22 PM
"interlinked Powerpoint slides" kind of games could be done in a wiki too - choose your own adventure (http://en.wikipedia.org/wiki/Choose_Your_Own_Adventure) style games, online. Which is kinda cooler - and simpler to share.

jose158
February 3rd, 2008, 05:28 PM
When I was 10 I tried out KPL(Kid's Programming Language) (http://www.kidsprogramminglanguage.com/) it's a Window$ program, but maybe you could get it to work with Wine.

bobbocanfly
February 3rd, 2008, 06:52 PM
I started aged 11 with C#.NET. The standard libraries functions are so verbose it is really simple to get things done. Obviously its Windows only so something like Python would be better.

lnostdal
February 3rd, 2008, 06:59 PM
I started aged 11 with C#.NET. ... Obviously its Windows only so something like Python would be better.

you might find http://www.mono-project.com/ intresting

mssever
February 4th, 2008, 02:12 AM
Does he or she know alot about computers?:confused:Dunno yet. He does like video games.


Basically, any language that's simple enough (my eye would be on Python) that you can find a simple graphical library (for Python, you could hack together a simplified Pygame interface) for them to start with, then slowly introduce them to more of the language. Simple graphics are great because they can see their code being executed and understand what's going on, then they can migrate to text and understand the program flow a bit better. Any dialect of turtle might also be worth looking into (since that's what it's for).I wonder how difficult it would be for me to become compenent in something like Pygame. I've never done game programming, and my GUI experience is minimal, and only with wxPython and GTK.

I would still suggest Python. It's about as simple as it gets and is not a toy language either -- he won't grow out of it and feel a bit betrayed by you teaching a "toy" language that is no good in the long run. Don't underestimate kids' ability to learn.While Squeak is presented as a bit of a toy language, it's really a Smalltalk implementation, and conceptually similar to Smalltalk's descendent Ruby. I don't know if that makes a difference.


However, I have personally always toyed with the idea of... what would come of a kid who was taught a functional language as the first thing? He likes math, so the concept of computation as evaluating functions might not be so remote... Scheme makes a nice prefix notation calculator after all, and the syntax is REALLY simple.Interesting thought. But I'd have to learn functional programming first. :) I don't have the time for that yet--or the math skills.


nah. 10 years old wants to program games. http://en.wikipedia.org/wiki/Game_maker is a windows freeware excellent for writing games with hardly any code. I tried it on myself, and let me tell you it was the most fun I had in programming in years. I tried it on a 10 years old, and we were able to have intelligent discussions about objects, events, timers, object collision, conditional statements and stuff. The whole point is, there is no code to write - program is build from palette of icons with actions, placed to event-slots of objects.
I might check that out--especially if I can make that run in Wine. Booting into Windows is something I despise doing.

Any idea how Game Maker compares to Squeak?

Wybiral
February 4th, 2008, 03:30 AM
I wonder how difficult it would be for me to become compenent in something like Pygame. I've never done game programming, and my GUI experience is minimal, and only with wxPython and GTK.

PyGame is pretty simple really. Here's an example of a simplified interface that a child could probably learn to use (I got a little carried away playing with it myself). Something like this will give him something to show off to his friends and get a chance to see the program as it executes:



import pygame

def getColor(color):
""" Returns color tuple from a tuple or a string color """
if isinstance(color, str):
color = pygame.color.Color(color)
return color

class Easy2d:

def __init__(self, width, height):
pygame.init()
pygame.display.set_mode((width, height))
pygame.display.set_caption("Easy2d")
self.screen = pygame.display.get_surface()

def update(self):
""" Render all updates to the screen """
pygame.display.flip()

def wait(self, milliseconds):
""" Wait for a number of milliseconds """
pygame.time.wait(milliseconds)

def sleep(self):
""" Sleep until keypress or exit button event """
sleeping = True
while sleeping:
self.wait(10)
event = pygame.event.poll()
if event.type == pygame.QUIT or event.type == pygame.KEYDOWN:
sleeping = False

def fill(self, color):
""" Fill screen with color """
self.screen.fill(getColor(color))

def circle(self, color, x, y, radius):
""" Draw circle at x, y with a color and a radius """
pygame.draw.circle(self.screen, getColor(color), (x, y), radius)

def line(self, color, x1, y1, x2, y2):
""" Draw line from x1,y1 to x2,y2 with color """
pygame.draw.line(self.screen, getColor(color), (x1, y1), (x2, y2))

def rectangle(self, color, x, y, width, height):
""" Draw line at x,y of width,height with color """
pygame.draw.rect(self.screen, getColor(color), (x, y, width, height))

def main():
easy2d = Easy2d(500, 500)

# Cycle over background colors
for color in ["red", "yellow", "blue", "white"]:
easy2d.fill(color)
easy2d.update()
easy2d.wait(500)

# Draw growing circles
x, y, radius = 50, 250, 40
for color in ["red", "orange", "yellow", "green", "blue", "purple"]:
easy2d.circle(color, x, y, radius)
easy2d.update()
easy2d.wait(500)
x = x + radius
radius = radius + 13

# Clear screen with rectangles
for y in xrange(5):
for x in xrange(5):
easy2d.rectangle("skyblue", x * 100, y * 100, 100, 100)
easy2d.update()
easy2d.wait(100)

# Niftly line effect
for x in xrange(0, 500, 20):
easy2d.line("black", x, 0, 500 - x, 500)
easy2d.update()
easy2d.wait(50)

# Pause program until key is pressed / window is closed
easy2d.sleep()

if __name__ == "__main__":
main()


I recall enjoying being able to write little demos like that when I was learning. The use of x,y coordinates helped me better understand variables and prepared me for algebra class as well, and the instant feedback made it way easier to stay interested.

pmasiar
February 4th, 2008, 05:06 AM
Any idea how Game Maker compares to Squeak?

I did not used Squeak myself, but looked at eToys and I was very impressed. eToys has special bonus it is OLPC project, so any cool game might be included in next distro.

But GM still looked for me more finished, simpler, relying less on reading the code and more on intuitively designed icons. Less reading is important for kids under 10-12 IMHO: they are not that good readers in general.

Another option for Python way might be livewire Python course - they have simplified libraries and book coming with it, including projects.

Yet another might be mentioned RURPLE, which is IMHO more fun than plain LOGO turtle: robot can interact with environment, so you can have "meaningful" tasks like collecting markers and moving them into the house because it is going to rain outside :-) You may include reading of famous sci-fi R.U.R, which mentioned the word "robot" first time :-)

Or plain old text games, using plain old text python (no GUI hassle): guess the number, boats, 20 questions, etc. See wiki in my sig for sample tasks.

H264
February 4th, 2008, 01:35 PM
Hey... is it my turn to put my coin in? ;)

I vividly remember the first program shown to me at age 14... before that I heard that for all the games/software I used (mostly games at that time) took years to make with teams of people. I attached that line of thought to all software taking years to make with teams of people. That day shattered what I thought when my cousin showed me a two line program in BASIC:
10 PRINT "walter"
20 goto 10
Now several years later looking back on that, I realize my sense of scope was way out of whack.

If somebody thinks that making a game that they are used to playing is easy, then they would be disappointed that making a modern RPG or FPS was way out of their reach. Or if they are like me, never even bother with programming because its too hard to do anything interesting.

I personally started in BASIC, because thats all I really had at the time; as I recall I had one reference type book on BASIC and called my cousin for questions if I could not figure something out. A couple of the more interesting things I did was a program that converted what I typed to a jumble of letters on the screen, the other chose a line randomly from a text file and saved it to a different text file. OK, enough about me.

First thing I would do is hammer a general sense of scope; graphical RPGs are not feasible, key mapping for a simple encryption is. If a kid does not mind learning, then they will like attaching something they are learning to something they can relate to. This was especially true for me, for example when I had a 'guess and check' math problem (before algebra), I spent several hours thinking about how I could make a program that would solve the question for me so I did not have to do the actual calculations.

There are plenty of interesting things to do with a language that are command line only while still keeping the learning fun. BASIC did it for me. If I was going to teach somebody that young (my brother - he's almost there ;) ) then I would start with something like ruby or perhaps python. Above all, keep it fun and relevant.

My pocket is now out of change...

iharrold
February 4th, 2008, 07:08 PM
I'm going suggest Legos!!

I used to mentor 4th graders for Lego League (http://www.firstlegoleague.org/). The kids use the Lego MindStorm development kits to build robots and compete against other teams to accomplish some tasks. It has a simple programming language much like LabView. While it is simple, it does teach basic problem solving and code creation to solve the tasks.

pmasiar
February 4th, 2008, 07:37 PM
Mindstorm is interesting and cool, but it is another league: How much decent kit costs? Couple hundred dollars, like $400? And extensions with more peripherals?

If you want to go that way (into mechanical engineering), and are on the budget, I recommend to start with Erector set (for $80 you can get like 50 models + enough parts to build your own models, unlike the cheap 2-3 models kits). When your kid will get mechanical construction part, get Vex robotic kit: it cost $300, but I got mine 50% off in Radio Shack. It has 6-channel remote control, you can build interesting stuff, control it - and even compete in Robot soccer (http://users.wpi.edu/~savage/). Great fun, but it is mostly mechanical engineering, not programming. But possibly more interesting for kids: more tangible results :-)

hod139
February 4th, 2008, 07:58 PM
An alternative to Mindstorm (though sadly no cheaper) is Vex (http://www.vexlabs.com/). Robotics is a great way to keep someone (kid or adult) entertained, but these kits are still on the expensive side.

bfhicks
February 5th, 2008, 10:01 PM
I remember first starting ~12 on IRC-type stuff. This was my first introduction into programming and creating bots to sit in the channel and interact was fun.

using mIRC it was relatively easy also to be able to do popup dialogs and conditionals. Using loops I discovered later without actually completely understanding what conditionals and loops were. It was pretty neat, however, to be able to come back many years later and look at some of the code I wrote and chuckle.

Kelan
February 5th, 2008, 11:40 PM
Here are my two pennies' worth... I don't imagine this is a popular school of thought, but I'll submit it anyway.

I think you should teach your kid C++. Hear me out, please? :P

There isn't anything inherently complicated about the C++ language itself (if you stay away from templates, pointers, virtualisation, etc. for the time being...), and it's certainly a useful language. It supports a wide range of programming styles (procedural, functional, object-oriented...), and is syntactically strict (I think this is good -- less room for confusion).

The main reason against using C++ is that it's not a good language to rapidly create useful applications in. And certainly, that's good grounds not to use it. But I think it would be a good idea for you to write a small set of utility functions to encapsulate the more involved bits of what your child wants to do at first, so as not to scare them off, then gradually wean them onto industry-standard libraries and the likes.

Well, that's what I think. Please don't hurt me. ^^;

LaRoza
February 5th, 2008, 11:44 PM
There isn't anything inherently complicated about the C++ language itself (if you stay away from templates, pointers, virtualisation, etc. for the time being...), and it's certainly a useful language. It supports a wide range of programming styles (procedural, functional, object-oriented...), and is syntactically strict (I think this is good -- less room for confusion).

The main reason against using C++ is that it's not a good language to rapidly create useful applications in. And certainly, that's good grounds not to use it. But I think it would be a good idea for you to write a small set of utility functions to encapsulate the more involved bits of what your child wants to do at first, so as not to scare them off, then gradually wean them onto industry-standard libraries and the likes.


You recommend C++, with all C++ features removed (for now), and having someone else encapsulate other functions. Then what is the point of using C++? You just removed everything that makes it useful, and tried to abstract more complicated bits.

What other languages do you know?

Wybiral
February 6th, 2008, 12:06 AM
Here are my two pennies' worth... I don't imagine this is a popular school of thought, but I'll submit it anyway.

I think you should teach your kid C++. Hear me out, please? :P

There isn't anything inherently complicated about the C++ language itself (if you stay away from templates, pointers, virtualisation, etc. for the time being...), and it's certainly a useful language. It supports a wide range of programming styles (procedural, functional, object-oriented...), and is syntactically strict (I think this is good -- less room for confusion).

The main reason against using C++ is that it's not a good language to rapidly create useful applications in. And certainly, that's good grounds not to use it. But I think it would be a good idea for you to write a small set of utility functions to encapsulate the more involved bits of what your child wants to do at first, so as not to scare them off, then gradually wean them onto industry-standard libraries and the likes.

Well, that's what I think. Please don't hurt me. ^^;

To be fair, all you did was mention why C++ isn't terrible (after you eliminate the complicated issues). Why would it be PREFERABLE? I can accept the fact that you have a different approach, but I don't understand how you came to that conclusion. If you eliminate the complicated parts of just about any language it's not going to be hard to learn. Wouldn't it make more sense to start with a less complicated, more forgiving language in the first place?

lnostdal
February 6th, 2008, 12:08 AM
I think you should teach your kid C++. Hear me out, please? :P

i don't really care about c++, or the argument c++ vs <language-x> or whatever .. but a child has a very open and "clean" mind .. i can imagine questions like these:

* why do i have to put a semicolon at the end of every line?
* why do i sometimes use { and } to specify that "this is a block containing something" while other times i must use ( and ) to specify the essentially the same -- and still other times use semicolon to specify the "end of something (a block in a sense)"?
* and what about < and > for the include function?
* why do we sometimes use comma to separate items, but other times we use other characters?
* why doesn't return require ( and ) around the value it is to return?
* whats the difference between "a" and 'a' .. doesn't the computer already know that "a" is a (single) character?
* why can't i do:



function a(int i)
{
return int b(int j) { return i + j); }
}


(or something similar to that)

..and tbh i cannot properly, in a bigger picture perspective of how things could have been, answer a couple of these myself .. some are ofc "artificially" altered (or even wrong) -- and i know the immediate obvious answers, but the answers aren't interesting at all

LaRoza
February 6th, 2008, 12:11 AM
i don't really care about c++, or the argument c++ vs <language-x> or whatever .. but a child has a very open and "clean" mind .. i can imagine questions like these:

* why do i have to put a semicolon at the end of every line?
* why do i sometimes use { and } to specify that "this is a block containing something" while other times i must use ( and ) to specify the essentially the same -- and still other times use semicolon to specify the "end of something (a block in a sense)"?
* and what about < and > for the include function?
* why do we sometimes use comma to separate items, but other times we use only space?
* why doesn't return require ( and ) around the value it is to return?
* whats the difference between "a" and 'a' .. doesn't the computer already know that "a" is a (single) character?


Lisp would be better, no questions like that.

pmasiar
February 6th, 2008, 01:40 AM
Lisp would be better, no questions like that.

If you would not be a mod, I would report this as flamebait :-)

Nothing in lnostdal post suggested about promoting Lisp, and all questions are exactly valid questions.

So I really do not see where you want to go with this

LaRoza
February 6th, 2008, 01:42 AM
If you would not be a mod, I would report this as flamebait :-)

Nothing in lnostdal post suggested about promoting Lisp, and all questions are exactly valid questions.

So I really do not see where you want to go with this

Oh, I didn't think it was flamebait, does Inostdal like/dislike Lisp? I was just studying it and noticed that Lisp (GNU Common Lisp) doesn't have any of the listed issues.

I am unfamiliar with Inostdal, I hope I didn't do the equivelant of using your posts as a basis for using Perl.

You can report inappropriate mod behavior if you see it, I am more bound by the rules than regular members.

pmasiar
February 6th, 2008, 02:25 AM
It's lnostdal (Lars)


does Inostdal like/dislike Lisp?

lnostdal was our resident Lisp guru a year ago, and left forums disgusted after mods heavy-handedly squashed on of heated discussion (where also I was burned).

So I was really happy to see him back, because he has interesting insight - I always wanted to learn Lisp to get it too :-)


I was just studying it and noticed that Lisp (GNU Common Lisp) doesn't have any of the listed issues.

I am unfamiliar with Inostdal,

You can report inappropriate mod behavior if you see it, I am more bound by the rules than regular members.

No I will let it go.... THIS TIME :-)

Reading again whole exchange: If you were not aware that lnostdal likes Lisp, then your note was 100% innocent, sorry for being paranoid. It was maybe the famous "Vulcan mind meld" of Lisp devotees? :-)

LaRoza
February 6th, 2008, 02:34 AM
No I will let it go.... THIS TIME :-)

Reading again whole exchange: If you were not aware that lnostdal likes Lisp, then your note was 100% innocent, sorry for being paranoid. It was maybe the famous "Vulcan mind meld" of Lisp devotees? :-)

Thank you, you have no idea how much this means (not much, actually).

Cool, I didn't know we had a Lisp user here. It will be a welcome asset to the forum. I hope nothing bad happens like last time, I am not aware of what happened.

You will see Lisp references from me now and again while I am studying this language. I hope no one (including you (and others)) is offended.

popch
February 6th, 2008, 08:47 AM
(...) i can imagine questions like these:

* why do i have to put a semicolon at the end of every line?
* why do i sometimes use { and } to specify that "this is a block containing something" while other times i must use ( and ) to specify the essentially the same -- and still other times use semicolon to specify the "end of something (a block in a sense)"?
* and what about < and > for the include function?
* why do we sometimes use comma to separate items, but other times we use other characters?
* why doesn't return require ( and ) around the value it is to return?
* whats the difference between "a" and 'a' .. doesn't the computer already know that "a" is a (single) character?
* why can't i do:

[code]
function a(int i)
{
return int b(int j) { return i + j); }
}

These are all reasonable questions to ask and valuable lessons to learn. The answers are applicable to nearly any computer language.

Does this, then, imply that you favor teaching C++ to kids?

revanthedarth
February 6th, 2008, 09:31 AM
Flash and ActionScript. ActionScript is simple enough to get coders real angry, and funny enough for children. (A=15; A="sup dude?"; A=3.2; yup, they all work at the same code)

But i prefer C++. It's not that hard! :)

lnostdal
February 6th, 2008, 11:20 AM
These are all reasonable questions to ask and valuable lessons to learn. The answers are applicable to nearly any computer language.

Does this, then, imply that you favor teaching C++ to kids?

both yes and no(#1)

i can try explaining further .. some lessons are worth learning for their practical value .. but as many things it has a duality, because in what ways are programming languages valuable? what is value?

* they are valuable because they are the current business standards

* they are valuable because they are beautiful and intelligent and speak to a mind that has not been "contaminated" by external "business type" forces and needs .. they are "clean" and have less unnecessary(#2) baggage with them that require explaining - and these are usually things that speak to minds with an interest (a small and fragile burning flame) in learning programming in the first place

* (other reasons?)

i've heard it mentioned that the currency of computer people, and especially the Open Source movement of course, is not money first of all, but enthusiasm .. and that without it interest and especially competence die .. and we need those to learn, no? but enthusiasm for what? as a kid i know what i valued and liked .. i wanted to be a part of the computer industry because of the intelligence and enthusiasm of the people i met and read about .. they where the super heroes of Real Life, and money was not interesting of courrse

..at this point you might understand why i didn't "care about language-x vs c++" or didn't care to say anything definite - because people are different and find different things beautiful .. i did however hint at some points or questions that i remember asking myself while learning(#3) c++ while trying to maintain an open "clean" mind, and yes, much later reflected back upon when learning lisp


#1: but really, no -- let's meet halfway there and, say, make it python? .. at least making it interactive, direct and fast .. the action/response cycle is direct in a REPL; this makes programming about 10 times more fun

#2: this is part of the point some of you might fail to understand and try to correct me on .. "it's not unnecessary because .." .. and if you still do not understand after reading the rest of the post i ask you kindly not to discuss this topic with me (at least not in public) any further as it will not lead anywhere, and i'm trying hard not to get "stuck" in things

#3: i try to understand, instead of just "learn" :)

Circus-Killer
February 6th, 2008, 11:29 AM
anyone remember Logo (http://en.wikipedia.org/wiki/Logo_(programming_language)) with its turtle graphics (http://en.wikipedia.org/wiki/Turtle_graphics)?
that's what they tought us in primary school (elementary school for ye americans out there). :)

popch
February 6th, 2008, 12:17 PM
.. some lessons are worth learning for their practical value .. but as many things it has a duality, because in what ways are programming languages valuable? what is value?

The point I was trying to make was not really related to languages with notations resembling that of C. In fact, it would apply equally well to Python. It would take some stretching but part of those 'invaluable lessons' would apply to programming in Lisp (or Logo) as well.

Examples of things for beginning programmers to learn:
- Computer languages need proper punctuation more than humans do
- Enumerations of 'things' can mean different things and may need different notations (bracketing symbols and delimiters).
(there are more, but I am too lazy at the moment to enumerate).

Such things things I had difficulty understanding when I started to learn programming, and that's some 35 years and some 30 (?) languages ago.

BTW, I do not think any language with a C-like notation is particularly suited to the needs of kids. I would probably prefer Smalltalk or Logo (when elderly languages are permissible). Python or Lego could be all right, too, I suppose.

I still think it a pity that people think Logo is Turtle only. I thought it a very fine 'tamed' Lisp for beginners, and I had much fun learning and using it.

shriphani
May 16th, 2008, 06:40 AM
I began writing small instructions on paper to solve problems in the booklet, "Post's Machine" by V. A. Uspensky. The booklet does an excellent job of introducing the concept of algorithms and programming. I then moved to Python and have loved it ever since. My cousin happens to enjoy logo and I guess it boils down to what inspires kids to code. I was always interested in primality tests, in algorithms, in solving math problems and was thrilled when I figured out an algorithm to obtain a powerset of a set by observing binary numbers. I think that Python, Scheme do an excellent job of appealing to kids who like mathematics and algorithms ( MIT found them as excellent means to teach introductory CS courses ). Basic might appeal to those who want to write games within a few weeks of reading about programming.

snappy46
May 23rd, 2008, 02:53 AM
Here's my two cents...

My son whose 9 years old enjoy creating new level for games. Although I would never consider this as a programming language it does offer some insight about the physics and limitation of the game platform. It help him understand how many elements of the game interact with each other and gets him interested.

The game that he is using to create the level is the secret maryo chronicles which is a free linux game.

Now again I understand that this has nothing to do with programming but as long as he use is brain to create something on the computer I am quite happy with that. I thing this is the first step to make it fun for him and he is always proud of the new level he creates. He has already on a few occasions ask me about doing this and that where my response was that he was limited by the application. His answer was can I use something else then that would allow me to do that.

Of course he can but I don't feel he is quite ready for that yet but the seed has been planted.... I thought that gambas(2) might be a good programming language to start with when he is ready for something more complicated.

nibon
June 7th, 2008, 03:48 AM
well, I will agree with the others and use myself as an example.
when I was nine years old I started writing HTML, I loved it, then I went on to some basics of PHP, I liked it aswell, a year or so later I wanted to do something else so I tried programming C++ and well, it didn't go all to well, I managed to make a "hello world" script, then I learned about variables and thought "wait.. by using this i can make a game!".

I managed to make a town with a healing fountain and a forest with monsters giving gold and xp. altough I somehow destroyed it all with a loop or something, I never found out what really happened.

..well.. my point? uhh... kids, dont to C++! heh, well on a more serious note, what I didn't like was that it took time in C++ before I could see my result (unlike HTML/PHP where i just pressed refresh in the browser). I think a graphical, sandbox-like, game-maker is better. like FPS-maker, RPG-maker, GameMaker, the gamesfactory etc. (I don't know which ones work on linux).

descendency
June 7th, 2008, 10:54 PM
I suggest a language you know all the answers to the "why?" questions. (or as many as you can)

It will help him more than an easier language.

Although, I recommend C++. He'll either learn to program or learn who he should start paying ;)

edit: His biggest struggle is going to be his math skills (unless he is fairly advanced).

For example, having him right a program to find prime numbers would be a good enforcer for loops and if statements, but if he doesn't know what one is, then he won't do very well without you basically giving him the answers.

LaRoza
June 7th, 2008, 11:01 PM
Although, I recommend C++. He'll either learn to program or learn who he should start paying ;)

edit: His biggest struggle is going to be his math skills (unless he is fairly advanced).

For example, having him right a program to find prime numbers would be a good enforcer for loops and if statements, but if he doesn't know what one is, then he won't do very well without you basically giving him the answers.

C++ for a beginner, especially a young beginner isn't going to work IMO.

His/her biggest struggle isn't going to be math, it is going to be logic (and if one finds it difficult to be logical, there is a problem)

descendency
June 7th, 2008, 11:57 PM
C++ for a beginner, especially a young beginner isn't going to work IMO.

His/her biggest struggle isn't going to be math, it is going to be logic (and if one finds it difficult to be logical, there is a problem)

If you can't put ideas together to make algorithms, you can't program.

I think we are talking about the same thing, though.

I don't really understand why people think C++ is so hard. By the time you get to the hard material, you should be fairly well versed in good programming practices. I've seen Basic taught, which I thought was easy. I saw COBOL taught, but I think they made it harder than necessary.

Can+~
June 8th, 2008, 12:29 AM
Here's my two cents...

My son whose 9 years old enjoy creating new level for games. Although I would never consider this as a programming language it does offer some insight about the physics and limitation of the game platform. It help him understand how many elements of the game interact with each other and gets him interested.

I remember, my first experiences on programming, was actually creating game levels.

I mean, the idea is pretty much the same, you grab fundamental blocks (in gaming: units, buildings, etc) and put them together to make an army. I also remember Starcraft, I loved the map editor of it, later with Warcraft Editor, and it introduced me to the idea of events and conditions, with it's simplistic language.

Example:
Event: Unit enters location1
Condition: Event Unit is a Marine
Action: Change units in location 1 to owner of event unit.

@descendency
C++ is not a good first language. Children are more inclined to graphical things and natural things. I remember my brother trying to teach me C, I couldn't fit myself into rigid things like "int variable;", "printf("%d", variable)". What is %d? Where can I get a list of those things? What is an int? What is a variable? (sounds stupid, I know) What is stdin/stdout? Why printf? Compile? And that was just C, C++ also adds classes, hashes, etc.

C++ is far from natural spoken language.


cout << "something" << endl;

There are easier ways to start, my initial experience with C told me that children are not likely to remember unchangeable structures, they need more forgiving languages.

LaRoza
June 8th, 2008, 01:00 AM
I don't really understand why people think C++ is so hard.

The purpose of programming isn't learning a language, it is problem solving. C++ and some other languages cause a beginner to focus on the language much more than others to the extent the learner is distracted. A language like Scheme, Python, Ruby, Perl, and such are much easier to work with. Programming isn't about the syntax or inner workings, it is about problem solving.



#include <iostream>

int main(int argc, char ** argv)
{
std::cout << "Hello world" << std::endl;
return 0;
}




#!/usr/bin/perl -w

print "Hello world";

ankursethi
June 8th, 2008, 02:31 PM
Here's a small list of easy to learn programming languages/development kits.

1. Squeak - Easy to learn with a nice, colorful child-friendly IDE. Moreover, Smalltalk is the purest form of OOP. If the kid wants to choose programming as a career at some point in time, this would definitely be helpful. Squeak stores programs not in text files, but in "images". You start with a base image and modify it to your heart's content. Then you remove anything you don't want and distribute this stripped down image as a stand alone. It can then be loaded into another Squeak VM and used as a program. IMHO, for a kid this is a much better approach than plain text files, as those will tend to get unmaintainable after a while.

2. Gambas - I started programming with VB6 when I was 13. It was fun to drag together components and get a working program in minutes. Gambas will be *the* best way to start building not only GUI and networked programs, but also games (it has an interface to SDL).

3. FreeBASIC - BASIC might teach bad programming habits, but to a 10 year old, it's more fun than any other programming language. FreeBASIC is a clone of good ol' QBASIC. It even has the same graphics interface (using SDL, I think). FreeBASIC will be very easy to learn and will provide instant gratification.

4. Lazarus - This one is not that easy, but it's worth learning. Lazarus is actually an open source clone of Borland Delphi. It uses Object Pascal as the underlying programming language. If you don't want BASIC, and are looking for a modern programming language, you should place your bet on Lazarus. Did I mention that the IDE is one of the best I've encountered yet?

5. Python - Ah. Good ol' Python. Everyone should learn Python for one simple reason - libraries. Plus, it's an excellent programming language in itself. Simple, clean and pretty fast (it's faster than most other interpreted languages). And you can always try to teach your kid PyGame. It's not too tough, mind you.

If I were you, I'd go with Gambas, Squeak or Python. All the other languages I mentioned will take some time getting used to, but these three can be learned over the weekend.

Xfcn
June 24th, 2008, 05:02 AM
Sorry to ressurect a semi-dead thread.

Unlike almost everyone else, my first real programming language that I was able to use to do anything fun or interesting with was HyperCard's HyperTalk. Now THAT was a great programming language. It didn't take me forever to understand the syntax, and I was making great stuff with a little help in a short amount of time.

Which is why my avatar is modeled off of HyperCard's stack icon. Of course, HyperCard no longer exists, but there's always Runtime Revoluion, I suppose. Of course, only the Studio and Enterprise editions run natively under Linux, and they cost $399 and $999 each. Yup. HyperCard is dead, and that sucks. Really hard.

If you don't care about being on Linux, or don't mind running things under Wine, then you can always check out:

http://www.ambrosine.com/resource.html -- It has many sources, several of them for Linux.

Of course, there's the much over-looked but really quite powerful Ren'Py interactive novel creation system. It has a scripting language that's kind of a sub-set of Python. It's in the repositories. If you liked Phoenix Wright: Attorney at Law, or any other games of that style you'll like Ren'Py. Or at least you should.

pavel989
July 7th, 2008, 04:51 AM
the one good thing math class has taught me is how to program. the TI-83's plus and TI-84's slivers and whatevers elsessssss come with their own lil version of BASIC so to speak.
Long story short, got bored in class, discovered BASIC, eventually moved on to more advanced stuff.

jimi_hendrix
July 27th, 2008, 01:09 AM
We had a simple Apple IIe (or maybe earlier) machine that you could type in logo commands and move a turtle or frog or something around on some lily pads (believe it or not I swear it was a turtle).

it was a turtle...we had the same program for pc

drubin
July 27th, 2008, 02:06 AM
I haven't been able to read up on every single post in this thread but i have the just of it.

I would think to suggest PHP/Html. The fact that he can create simple web sites (that can be hosted and therefore show his friends) would be a really cool way of starting out.

HTMl is a really simple language, or even cuppled with javascript could make for fun interisting "games" sites images...

I would also TRY and see if you can start with an OO lang because it is easier to learn procedural programming after, Then if you try it the other way round.. (Just my opinion)

Ps Think this is an amazing idea!

Fixman
July 27th, 2008, 02:50 AM
I am going to IOI this year, and I learned everything I know when I was 10 years old with LOGO.

drubin
July 28th, 2008, 09:59 PM
http://java.sun.com/new2java/learning/young_developers.jsp

Found this today... Maybe it is an option

Krupski
July 29th, 2008, 04:03 PM
I've been asked to teach a 10-year-old kid how to program, so I've been thinking about languages.

Give the kid an old PC with DOS, put GWBASIC on it, give him / her the GWBASIC manual and let 'er rip.

Basic is easy to learn, easy to understand and even though it's not an optimal programming language, it does teach the basics (no pun intended) of variables, strings, less-than, greater-then, file I/O, output (screen display), input (keyboard) and conditional loops (yes, even the dreaded goto).

Start the kid off by giving him / her the challenge of writing a "guess the number" game, then point out the "rnd()" function, the "if a < b", "if a > b" and "if a = b", etc... along with the print function.

Then, when they get that working, add the challenge of making the computer count how many times it takes to guess the number.

Then, if the kid is REALLY into it, have him / her try to make a "human vs computer" guess the number game, where the computer selects the middle number of min/max, then adjusts min or max according to whether it's guess is less than or greater than.

This will teach the kid to THINK LIKE A PROGRAMMER and when he / she gets tired of BASIC, there's always Assembler, C++, Fortran, Perl, etc....

I got my start with BASIC on a homebuilt Cromemco Z-80 and I couldn't stay away from it. It was addictive.

So much for my 5 cents (inflation - it used to be 2 cents) :)

-- Roger

Krupski
July 29th, 2008, 04:06 PM
nah. 10 years old wants to program games. http://en.wikipedia.org/wiki/Game_maker is a windows freeware excellent for writing games with hardly any code.

...which teaches NOTHING about real PROGRAMMING.

Krupski
July 29th, 2008, 04:14 PM
I think you should teach your kid C++.

C and C++ are good languages to learn and know, but they are FRUSTRATING, especially for a beginner.

How many hours have we all wasted because we forgot a semicolon after a statement or forgot to close a comment and nuked the next lines after it?

Before one starts serious programming, one needs to learn how to THINK LIKE A PROGRAMMER. That is, think literally.

A programmer should look at a shampoo bottle, see the instructions "Lather - Rinse - Repeat" and immediately ask "How am I supposed to know when to stop? That's an endless loop!".

A beginner has to start with something that gives instant gratification without odd syntax or finicky little symbols required everywhere.

A simple line like "if a < guess then beep" is easy to understand and grasp.

That's why, again, I suggest interpreted Basic... specifically GWBASIC on a PC or something similar on a different machine.

-- Roger

Krupski
July 29th, 2008, 04:18 PM
The purpose of programming isn't learning a language, it is problem solving. C++ and some other languages cause a beginner to focus on the language....



#include <iostream>

int main(int argc, char ** argv)
{
std::cout << "Hello world" << std::endl;
return 0;
}



If I were a beginner... and I saw that code above, I would just say "huh?"

This makes much more sense to a beginner:



10 PRINT "Hello world"


(in my not-so-humble opinion) :)

pmasiar
July 29th, 2008, 04:41 PM
{Game maker]teaches NOTHING about real PROGRAMMING.

I am not sure what your definition of "real" programming is, but I did used GM to explain programming to 10 years old kid. Did you ever used GM? Did you ever tried to teach programming someone in GWBASIC?

Source code in GM's icon-based tiles are substantially easier to comprehend for a kid than "boring" text, I have that confirmed by kids. GM has variables, conditions, loops, events, GUI interaction, etc. GM game is substantially more entertaining (and relevant) for young kid that average boring "guess the number" terminal app.

Not sure why you promote GWBASIC so emphatically, it is old and obsolete (and frankly, crap language). Python would be much better choice now, but still Python code is lots of "boring" text, while GM code is based on "obvious" pictures. But you obviously do not know or like Python... and whole point of LaRoza post was to show that other languages (ie Perl) are better choice than C++, not sure why you misquote and then argue against her.

forger
July 29th, 2008, 04:49 PM
If the child likes math, how about starting with kturtle (http://edu.kde.org/kturtle/)?

nvteighen
July 29th, 2008, 05:44 PM
There is nothing bad against [GW/Q]BASIC despite the fact that there is a newer language where you can do the same (Python). I also started with BASIC, with a ZX-Spectrum, being 11-years old... (No, I'm not that old; it was my grandad's and learned to use it with a 80's book for ZX-Spectrum+... yes, 11-years old and I was already fighting with platform incompatibility); I don't regret it, it did teach me the basics...

Of course, now I wouldn't code a single line in BASIC.

@pmasiar: Sadly, the last GameMaker's freeware version is that crippled that's almost useless; you're forced to pay to be able to change an instance's sprite on runtime. If you want functional GM, stick with GM 6 or even GM 5.

(I do have a lot of GM experience; I have been following it's evolution from v4.)

But yes, GM concept is great: and don't forget that it implicitly teaches you OOP, signals (Alarms), variables, loops and some "real" things like that.

So, we'll be waiting for GameBaker ;)

pmasiar
July 29th, 2008, 06:12 PM
the last GameMaker's freeware version is that crippled that's almost useless; you're forced to pay to be able to change an instance's sprite on runtime. If you want functional GM, stick with GM 6 or even GM 5.
So, we'll be waiting for GameBaker ;)

Sad to see GM becoming cripleware, but that's what you can expect from freeware anytime. Seems like we started GameBaker just in time :-)

Anyone interested to join GameBaker, see my sig. We are getting to some playable games now (we focused on XML-based program description, no GUI to create games yet).

mssever
July 30th, 2008, 12:55 AM
Give the kid an old PC with DOS, put GWBASIC on it, give him / her the GWBASIC manual and let 'er rip.

Basic is easy to learn, easy to understand and even though it's not an optimal programming language, it does teach the basics (no pun intended) of variables, strings, less-than, greater-then, file I/O, output (screen display), input (keyboard) and conditional loops (yes, even the dreaded goto).
I'm scratching my head trying to figure out why I should go buy an obsolete computer running a horrendous, obsolete OS to teach an obsolete language (which I'd have to waste time learning). Every benefit you cited is present in any of a number of current languages, such as Python, PHP, or my personal favorite, Ruby (though I don't think Ruby is all that great as a first language). Well, there's no goto, but really, why use gotos anyway? I know the kernel uses them some, but I'm not nearly as good a programmer as Linus, so I'd probably just wind up misusing them.

I remember when I was a kid watching people messing with BASIC, and noticing how much of a pain it was to refactor when you had all those silly numbered lines. Talk about the bad old days!

Here's another thing: You admit that BASIC isn't an optimal language. So assuming a text-based language, why not choose one that is the optimal choice for many tasks?

ookimayasha
July 30th, 2008, 03:46 AM
I started on basic a couple of years ago and it worked great for me

btw i was only 11

LaRoza
July 30th, 2008, 03:49 AM
I started on basic a couple of years ago and it worked great for me

btw i was only 11

An expert borne every minute...

If by a "couple of years" you mean less than 5 you are very young. Of course BASIC worked, but the question is did it form a solid basis for continuing your education in the field? Any computer language will work as a first language, but what is the justification for using an old language with such primative features when a modern and more useful language is readily available?

CptPicard
July 30th, 2008, 04:05 AM
I started on BASIC in 1985 and it worked great for me.

Btw I was only 6. :)

However, it is not 1985 anymore.

LaRoza
July 30th, 2008, 09:33 AM
However, it is not 1985 anymore.

Thank goodness! I'd be -3 years old...

Reiger
July 30th, 2008, 03:23 PM
I saw someone recommending C++? If anything it would be probably better to learn Java first -> C++ later. I can't inflict such nast bites; but it can do all the 'tricks' too. Plus: as an added bonus you get lotsa libraries. <_<

I'm not sure about Lisp, from what I saw you need a lot more parentheses & brackets (and it is precisely that kind of stuff which makes programming 'difficult'). Also it doesn't have lazy evaluation which may make some of the more interesting math stuff (like calculating 'special numbers', such as primes) not too good an introduction. And, for simply writing to a screen it's got a real simple interface (part of the core language).
http://www.cs.uu.nl/wiki/bin/view/FP/CourseLiterature ; search for "Additional Reading" (the tutorial linked to is in English, btw).

LaRoza
July 30th, 2008, 03:36 PM
I saw someone recommending C++? If anything it would be probably better to learn Java first -> C++ later. I can't inflict such nast bites; but it can do all the 'tricks' too. Plus: as an added bonus you get lotsa libraries. <_<
And if you don't want your programming experience murdered by mundane typing, one wouldn't start with Java either, especially kids!



I'm not sure about Lisp, from what I saw you need a lot more parentheses & brackets (and it is precisely that kind of stuff which makes programming 'difficult').
If you don't know it, then you really can't give an opinion on it in this case.



Also it doesn't have lazy evaluation which may make some of the more interesting math stuff (like calculating 'special numbers', such as primes) not too good an introduction. And, for simply writing to a screen it's got a real simple interface (part of the core language).

MIT thought Lisp (Scheme) was good for its introductory courses (switched to Python now, I believe)

benthebadger
July 30th, 2008, 03:41 PM
I am only a little older than him, or her i have found that python has been a easy Language to learn. Hope it helps. ;)

drubin
August 1st, 2008, 12:13 AM
I am only a little older than him, or her i have found that python has been a easy Language to learn. Hope it helps. ;)

Nice work, stick with it!

cindyrella
September 30th, 2008, 06:22 AM
Has anyone mentioned Scratch (http://scratch.mit.edu/about)?

LaRoza
September 30th, 2008, 07:11 AM
Has anyone mentioned Scratch (http://scratch.mit.edu/about)?

Has anyone heard of Linux? ;)


Currently available for Mac OSX and Windows

cindyrella
September 30th, 2008, 07:27 AM
Has anyone heard of Linux? ;)

Oops! I forgot to include this link:

http://scratch.mit.edu/forums/viewtopic.php?pid=275

LaRoza
September 30th, 2008, 07:33 AM
Oops! I forgot to include this link:

http://scratch.mit.edu/forums/viewtopic.php?pid=275

Hmm...

I looked at it, and found it to have a very restrictive license and is for Linux as much as MS Word is.

mssever
September 30th, 2008, 08:54 AM
Hmm...

I looked at it, and found it to have a very restrictive license and is for Linux as much as MS Word is.The way I understand this thread (http://scratch.mit.edu/forums/viewtopic.php?id=330), it's available under CC-BY-SA, which is quite free (I don't know the exact terms, since I haven't read the license, but it seems to be just short of open source--largely because CC is designed for music, writing, etc., not programs). Of course, I can't be sure I interpreted the thread correctly, since the website (http://scratch.wik.is/Support/Scratch_License) for some (obviously bad) reason doesn't specify the license; it says to look at license.txt in the distribution. But it's crazy to have to download it just to find out its license terms.

handy
October 30th, 2008, 01:26 PM
Squeak is free, has a great community, free books available online from the Smalltalk site, the Squeak Swiki is huge & very helpful. Squeak / Smalltalk was built with the intention of being easy to use. Though many programmers of the other way find the Smalltalk paradigm hard to deal with.

elbarto_87
October 30th, 2008, 02:38 PM
I dont think a 10 year old will get much interest out of programing unless he can see results fast. The idea of robotics as mentioned before would be the most appealing to me if I were that age again.

I have only recently discovered programming at the age of 20, rather then age 6~11 as many here seem to have started at. It immediately got my interest because problems like structural analysis that took ages to do by hand, could be written into a script (in my first case MATLAB, now Python) and solved in under a second. The point I am trying to make is that if I wasn't impressed by what I could do with a programming language, I would have lost interest in it immediately because I didn't see any results. I keep trying to make myself start learning c++, but after I get past the the "hello world" program I seem to loose interest as I ask myself why am I learning this language?

I hope the OP finds something that the kid can enjoy and learn from. I wish I had the opportunity to get some exposure to programming earlier, I wonder how I did without it now.

Elbarto

Abras
October 30th, 2008, 08:25 PM
So what is the perfect language for children? The jury is clearly still out on that one, but I think for a language to even be considered it has to have two qualities:

1. Easy to pick up. That is, it can keep a child's attention at least long enough to teach them the basics. The Powerpoint suggestion has this.
2. It has enough substance to keep a kid interested for a longer period of time. C++ definitely offers this.

A language has to balance these two attributes out to make a satisfactory solution. There's clearly some debate over which attribute is more important, but I think it's fair to say that the choices on either side of the spectrum (ie Powerpoint and C++) aren't good choices. Which in-between language you choose ultimately depends on the child.

Delever
October 30th, 2008, 10:00 PM
Lego :)

drubin
October 30th, 2008, 10:18 PM
Lego :)

Please read the whole thread before posting answers. Unless you are going to give some extra write ups about why you think it should be so.

inxygnuu
October 30th, 2008, 10:32 PM
Lego :)

LOL! that is not really a language, but I am just a couple years older that him and i think that C++ is a fairly simple language, but I am not sure how productive some programming languages can be, so I am a little confused. Although, I can do good in windows "cmd language". Also, does anyone know what language would be best to build an OS? I want to do that soon. A good company starts innovating early...:)

zaac
October 30th, 2008, 10:37 PM
what about actionscript 3.0? its similiar to java and c++ so those launguages are easier to learn later on. its quick and easy to make simple games. if actionscript 3.0 is too hard, actionscript 2.0 is easyier.

fiddler616
October 30th, 2008, 10:51 PM
I'm probably the youngest of the bunch here--which I'm pretty sure is my best qualification for posting :P
From ages 9-13, the only programming language I had easy access to was TI-BASIC on my calculator. I remember being frustrated because:
a) I knew it wasn't a 'real' language. As such, I felt limited.
b) The lack of good graphics gets to you.
That said, they had Alice on computers at school, and I remember seeing people use it ant thinking "Huh...that's pretty cool, but it's so fake"
So I second Python, because it'll never get old.
Definitely take a look at Snake-Wrangling for Kids, and the turtle module. turtle provides instant, easy graphics. Once that gets old, EasyGUI shouldn't be too hard.
Also, there's a lot of text-based games that are entertaining enough to maintain interest. Guess-the-random-number games (http://python.tmac.andrewmin.com/raw/guess.txt) are pretty addicting, for example. Read through old BASIC books for more ideas--they're masters of appearing entertaining with a simple toolkit.

I understand if straight-up Python seems a bit complex, though, in which case I recommend Monty Karel (http://csis.pace.edu/~bergin/MontyKarel/)

Just my $.02....

fiddler616
October 30th, 2008, 11:01 PM
I am just a couple years older that him and i think that C++ is a fairly simple language,
And I'm a few years older too, and hacking* C++/Java/Javascript/PHP and programming in Python don't really bother me, but C++ as the first language for a 10 year-old is a bit drastic

*I'm using the "bending an existing program to more closely line up with what you want it to do" definition of hacking, in this context.

ramidavis
October 30th, 2008, 11:13 PM
Python is very easy to pick up. Also, i would get a hold of Snake Wrangling for Kids, http://www.briggs.net.nz/log/writing/snake-wrangling-for-kids/ an great approach for kids to learn python. I myself gave this book a fast run through in a evening, but for a kid, i suspect they would take about 3-4 days to read and digest everything properly. If any one knows of a better book then this for kids to learn python, fire away.

handy
October 31st, 2008, 04:48 AM
EToys, is available for Linux, Mac & windows & is built to teach children to program, amongst other things:

http://www.squeakland.org/about/intro/


Unfortunately Scratch is not available outside of OS X & windows yet.

http://scratch.mit.edu/

LaRoza
October 31st, 2008, 04:51 AM
LOL! that is not really a language, but I am just a couple years older that him and i think that C++ is a fairly simple language, but I am not sure how productive some programming languages can be, so I am a little confused. Although, I can do good in windows "cmd language". Also, does anyone know what language would be best to build an OS? I want to do that soon. A good company starts innovating early...:)

C++ isn't simple. C is simple and low level. Scheme is simple and high level. C++ is complex low level wanting to be high level.

What is a "cmd language"? Windows batch scripts are written in Batch. You can also uses the Windows Script Host with VBScript or JScript.

C is the language operating systems are written in mostly. "Building an OS soon" is an oxymoron.

handy
October 31st, 2008, 07:24 AM
Here are some tutorial vid's (http://waveplace.com/resources/tutorials/old.jsp) for Etoys.

I think they are for a previous version.

They are in (combination with Etoys of course ) a fantastic way to introduce children to programming.

sheto
October 31st, 2008, 10:25 AM
Buy a Lego Mindstorms kit and use the pre-bundled software that comes along with it, and later maybe shift to Not Quite C (NQC). NQC is a version of C with all the advanced features et al removed. I started off like that 3 years ago and now I'm at Python.

BTW, I'm 13 now.

handy
October 31st, 2008, 11:40 AM
Buy a Lego Mindstorms kit and use the pre-bundled software that comes along with it, and later maybe shift to Not Quite C (NQC). NQC is a version of C with all the advanced features et al removed. I started off like that 3 years ago and now I'm at Python.

BTW, I'm 13 now.

Not everyone can afford, or is prepared to spend $300+ Au, on a Mindstorm for a child to learn to program.

There are other cheaper ways.

crazyfuturamanoob
October 31st, 2008, 02:38 PM
I am 13 and I have taught myself the basics of programming in python, all alone,
except a little help from these forums. Maybe you should teach him python?

Bichromat
October 31st, 2008, 09:27 PM
When I was 9 or 10, our teacher taught us the basics of LOGO ( http://en.wikipedia.org/wiki/Logo_(programming_language) ). It was created for educational use.

sheto: Advanced features in C ?

Kilon
November 5th, 2008, 10:53 PM
I respect what people saying about C++ and partly I agree. However I must confess when I first studied C++ it did not cross my mind that it was difficult at all and I was surprised when I discovered that other think that is a very difficutl language. Why ? Well my secret was an excellent book which explained everything in a way that it made sense to me.

My first Language was at the age of 9 GWBASIC with my Amstrad CPC 6128 and a book which was a pain to study.

Many people advised python as a start , a valid advice. Personally I would advice Delphi , by far the easiest and most powerful language I have studied and it can make the transition to C# and .NEt a piece of cake. What separates DELPHI from the rest is the excellent RAD IDE which is pure drag & drop joy. Also inside DELPHI . NET is included C# and VB. NET. It is too bad that this product has ended but of course it is still highly useful.

But I think the most important thing is the book , it can make the most difficult language seem like heaven.

Oh and by the way I HATE LOGO, I could never understand it. It must be one of those things that you hate without knowing the real reason why. It is probably just me.

handy
November 6th, 2008, 11:16 AM
Well my secret was an excellent book which explained everything in a way that it made sense to me.

We all expected you to give the books details for those that are interested?

Kilon
November 6th, 2008, 11:22 AM
We all expected you to give the books details for those that are interested?


ahhh sorry .... you are right I should have wrote the title. It is actually a greek book (most likely translated) for beginners in C++ and it is 13 years old at least. The nice thing about this book is that it follows alot of exercises and examples and it is not a reference only book. I am at work now , but when I get back at home (where the book is) I promise to give you the english title.

lisati
November 6th, 2008, 11:25 AM
Anyone feeling brave enough to do a port of http://www.winsite.com/bin/Info?20500000036527 to Linux? It's an extensible text-based adventure game that uses a primitive programming language. The GWBasic/Qbasic source is included, along with some badly-written code in C.

Kilon
November 8th, 2008, 10:59 PM
We all expected you to give the books details for those that are interested?

Ok sorry for the delay ... this is the book I was talking about

http://ecx.images-amazon.com/images/I/710X74FBTKL._SL500_AA240_.gif

http://www.amazon.co.uk/Object-Oriented-Programming-Book-Waite-Group/dp/1878739735/ref=sr_1_6?ie=UTF8&s=books&qid=1226181120&sr=1-6

It is very old as you can see but it is an amazing book, easy to read and very deep at the same time with alot of practical exercises at the end of each chapter ( it is also very rich in source code) . It is by far the best book I have read and made my entrance into c++ world a breeze. It is written for Borland Turbo C++ but there is a very recent edition for C++ by the same person. it is this one.


http://ecx.images-amazon.com/images/I/51GQ43ATKFL._SL500_AA240_.jpg

http://www.amazon.co.uk/Waite-Groups-Object-Oriented-Programming-Group/dp/157169160X/ref=sr_1_8?ie=UTF8&s=books&qid=1226181120&sr=1-8

I cannot guarantee for the recent one , but the old one is a must read for beginners. Mind you , itis almost 900 pages so expect to dive into deep realms of C++but is written in a way that makes sense and forces you to practise what you learn before moving on.

handy
November 9th, 2008, 09:02 AM
Ok sorry for the delay ... this is the book I was talking about

http://ecx.images-amazon.com/images/I/710X74FBTKL._SL500_AA240_.gif

http://www.amazon.co.uk/Object-Oriented-Programming-Book-Waite-Group/dp/1878739735/ref=sr_1_6?ie=UTF8&s=books&qid=1226181120&sr=1-6

It is very old as you can see but it is an amazing book, easy to read and very deep at the same time with alot of practical exercises at the end of each chapter ( it is also very rich in source code) . It is by far the best book I have read and made my entrance into c++ world a breeze. It is written for Borland Turbo C++ but there is a very recent edition for C++ by the same person. it is this one.


http://ecx.images-amazon.com/images/I/51GQ43ATKFL._SL500_AA240_.jpg

http://www.amazon.co.uk/Waite-Groups-Object-Oriented-Programming-Group/dp/157169160X/ref=sr_1_8?ie=UTF8&s=books&qid=1226181120&sr=1-8

I cannot guarantee for the recent one , but the old one is a must read for beginners. Mind you , itis almost 900 pages so expect to dive into deep realms of C++but is written in a way that makes sense and forces you to practise what you learn before moving on.

Thanks for going to the trouble m8. :-)

Kilon
November 9th, 2008, 04:27 PM
Thanks for going to the trouble m8. :-)

no problem at all, I think that if a book is good and helpful a reader must advertise it. I hope it will help some beginners to tame the wild beast of C++, it surely helped me.

directhex
November 9th, 2008, 10:00 PM
There are two common approaches towards "teaching" languages - "Top-Down" and "Bottom-Up".

Bottom-Up is learning a language which essentialy gives you nothing for free, and you need to learn a lot of first-principles in order to get anything done. The canonical example here is C. In theory the end result can be superior to the alternative, but it's not an approach for those with short attention spans.

Top-Down is a learning language which gives you everything you could possibly want, removing the "hard bits", but leaving you the freedom to move further down the pile (i.e. write your own code to replace the 'free' bits that already do it) should you so wish. Examples here would be things like Python, or Java, or C#, or QBASIC for the oldies here.

Think of Ubuntu as a top-down way of learning GNU/Linux, and the Linux From Scratch book as bottom-up.

If the goal is to write programs, then go top-down. If the goal is "learning about programming", go bottom-up. Whilst you're not prevented from writing programs with bottom-up or learning with top-down, the question of where the focus lies determines what you'll spend more time with.

C++ sits in the middle - it has the downsides and upsides of both - but isn't one I'd personally recommend for a beginner.

LaRoza
November 10th, 2008, 12:10 AM
There are two common approaches towards "teaching" languages - "Top-Down" and "Bottom-Up".

Bottom-Up is learning a language which essentialy gives you nothing for free, and you need to learn a lot of first-principles in order to get anything done. The canonical example here is C. In theory the end result can be superior to the alternative, but it's not an approach for those with short attention spans.

Top-Down is a learning language which gives you everything you could possibly want, removing the "hard bits", but leaving you the freedom to move further down the pile (i.e. write your own code to replace the 'free' bits that already do it) should you so wish. Examples here would be things like Python, or Java, or C#, or QBASIC for the oldies here.

Think of Ubuntu as a top-down way of learning GNU/Linux, and the Linux From Scratch book as bottom-up.

If the goal is to write programs, then go top-down. If the goal is "learning about programming", go bottom-up. Whilst you're not prevented from writing programs with bottom-up or learning with top-down, the question of where the focus lies determines what you'll spend more time with.


Ah, but programming isn't about understanding computers, but about solving problems. Computers are really an inconvenience and limitation.

So "top down" and "bottom up" don't apply here. Hardware is a limitation, that must be taken into account sometimes, but ideally, we'd be writing pure programs and having them completed without being concerned with hardware at all. Languages based on this, not hardware, are superior in this sense. Expressing things in a language like Scheme or Prolog (based on Lambda calculus and logic) is more pure, then writing out assembly. Which is better? It depends on the task. I believe, that the higher you can abstract away from the machine, the better you are off. When I put together a dresser for my niece (after a move, a few new pieces of furniture), I read the instructions and used the pre-cut pieces and supplied hardware and used my own tools. The goal was a functional dresser which looked like the one on the box. It would be incredibly foolish to go out and cut the timber myself, treat it, get all the bits and pieces needed, and assemble it. However, if I wanted something I couldn't get pre-designed like that, going as low level as I needed would make perfect sense (indeed, if this dresser were pre-built and everything else was equal, it would have been a better choice). It makes no sense to go lower than one needs or can.

rtoot3
December 1st, 2008, 12:10 AM
I had the opportunity to learn Logo when I was in second grade. We had a simple Apple IIe (or maybe earlier) machine that you could type in logo commands and move a turtle or frog or something around on some lily pads (believe it or not I swear it was a turtle).
Take a look at KTurtle on the Add/Remove Programs. It was a turtle!!


lol, all i could find is kbabel

linuxguymarshall
December 1st, 2008, 12:13 AM
Python, Basic, HTML, Java, Ruby, use them with Alice. Alice teaches good, general programming knowledge

thadacto
December 1st, 2008, 12:52 AM
Being a teacher myself, but not in computers, I would suggest a slightly different approach and try writing some small games.
With GameMaker you can start by drag and drop but you can also use scripts.
I think this would be an ideal starter point before graduating to the more serious computer languages.
I use GameMaker to create games for my classes (English as a Foreign Language. Most of my games now have more scripts in them than using D&D.
You can also produce a game fairly quickly which gets the kids interested in making the game.

mmix
December 1st, 2008, 10:58 PM
http://thyrd.org/thyrd/

HTH

AlexRamallo
March 29th, 2009, 10:37 PM
I started programming with gamemaker when I was 10.
10 yrs old..
I hated math
I hated reading
I sucked at computers
3 years later..
I know, and understand 7 programming/scripting languages(C++,html,php,css,sql,javascript,gml)
I can make 3D and 2D games (2d/3d online games with gamemaker)
I know ALOT about computers

so, for a ten year old, regardless of their interest in computer science, gamemaker is the best way to start. It gets you hooked on game development because it lets you create really good games with such little knowledge. Then it builds your interest, and gets you programming in GML, which has syntax VERY similar to that of professional programming languages, such as C++, and its really easy to use because it has function definitions in the script editor, so whenever you type a function it will give you a short description with all the arguments it needs.

My favorite thing about gml(Game Maker Language) is that all the functions are organized by their prefixes. for example, if you wanted to draw a circle you would use:
draw_circle(..);
and for a rectangle it would be
draw_rectangle(..);
and to end the game:
game_end();
to restart:
game_restart();
so it makes learning and memorizing very easy.

oh and...its free :D

Kulgan
June 2nd, 2009, 08:09 PM
I started HTML age ~12 and PHP about half a year later. Both of these are, as other posters have mentioned, great at providing immediate feedback and satisfying short attention spans.

What I would do is introduce HTML and, when the kid is ready (and has the interest), introduce PHP. If he understands how much easier PHP makes HTML, it will immediately be useful in a context he is familiar with.

I've also seen success with ActionScript.

A great thing about PHP, I found, was that the skills are largely transferable. Easier than C while similar enough that experience in it provides confidence to pursue C beyond the basics. OOPHP gives simple OO training that is later useful in C++ and Java.

I'd disagree with those saying (and there were a few of them) that Java is in any way suitable as a first language. In the words of a more worldly individual than myself: http://www.stsc.hill.af.mil/CrossTalk/2008/01/0801DewarSchonberg.html

My "CS" course uses Java to introduce programming. It's a pain for those who have no background in other languages.

But all in all I think it's amazing what kids can absorb. I could never soak up another language the way I did PHP.. Perhaps that's just because that was the first time.

gnuman
June 2nd, 2009, 09:09 PM
Being a teacher myself, but not in computers, I would suggest a slightly different approach and try writing some small games.
With GameMaker you can start by drag and drop but you can also use scripts.
I think this would be an ideal starter point before graduating to the more serious computer languages.....

GameMaker isn't open source, though--which should be important in deciding which apps to use with kids.

All of these are open source and free as in beer and speech:

Scratch, Bluej and Greenfoot (for learning Java), Python (with turtle or Xturtle), and, of course, Alice.

I don't mean to sound rude--bless all teachers. :-) I have students that use "free" versions of GM. I just think they have learned stronger programming concepts with the open alternatives I have mentioned--even with the click and drag approach of Alice.

Brian Vaughan
June 23rd, 2009, 08:23 PM
I managed to install etoys on my seven-year-old stepson's old Macintosh. I had previously tried to install it on my Ubuntu box, but couldn't get it working. I would have been using 8.04 at the time. Has anyone got it working properly in Ubuntu, and if so, were any tricks necessary?

Also, is there a good book on etoys and squeak?

blackxored
June 23rd, 2009, 08:31 PM
I've been asked to teach a 10-year-old kid how to program, so I've been thinking about languages. Usually, I would suggest one of Python, PHP, or Ruby as a good first language, but I'm not so sure for kids.

I've been looking at Squeak (http://www.squeak.org), and it looks somewhat promising, especially if you add on the Etoys (http://www.squeakland.org). I've downloaded Alice (http://www.alice.org), but haven't looked at it yet.

Does anyone have any thoughts about a good first language for kids?

Note: This kid likes math, but since he's in third or fourth grade, his math skills aren't too advanced yet. Also, I'm not sure how interested he is in programming. Even though Python is easy to learn, I'm concerned that he might lose interest before he learned enough Python to be able to do something interesting. After all, programming is only fun if you're ale to do something interesting!

Since you're asking then the kid will assume it. I think. An interpreted language like Python or Ruby will do it. Since he wouldn't have to care about compiling or linking, since he will be able to experiment with an interactive interpreter, and since both languages have a clean syntax (IMHO python being cleaner), he will be enjoying programming when you approach it to such a language. And that's important, even with my years I still enjoy doing stuff in python, not that much when I have to java to my work, get my point? So, my personal recommendation, not being absolute, an interpreted language, with clean syntax, a single way of doing things, unambiguous, and of course, not a drop-in you'll use to teach programming concepts, expect your kid to stick with it, and only change it at the pace of a bussiness or something.

ash.rossy
June 23rd, 2009, 08:41 PM
for creating games, ika is good (and free), but that implements the C++ programming language, which frustrates most adults :P

I started "Programming" when I was 9 or 10, this was with RPG Maker 2000. It wasn't necessarily programming (it's mainly point and click stuff), but it tought me how to use loops, input and output, and helped me make a pretty interesting game in a day or two. The newest ones (xp and vx) also use the Ruby language, which is similar to python. I started learning ruby, moved to python, took up a computer science course at college where I learnt Pascal, and now I've just started learning c++.
I'm only 17.

So if you have the patience. Do it that way (although RPG maker does cost...).
Don't push the kid, just applaud and encourage. My girlfriend studied Pascal with me and got pretty good at it, but she's my age, so I don't know how that'd work... She was completely computer illiterate until about a year ago.

ratcheer
June 24th, 2009, 01:49 AM
If you are still considering it, I would give a recommendation to Squeak. It is completely object oriented and it has lots of stuff to play with. While enjoyable to use, it is far from being a "toy" language.

The second thing that comes to my mind is Ruby. I am just starting to discover it, though.

Tim

JordyD
June 24th, 2009, 01:59 AM
Yes. Kids will smell early that the language they learn is just a toy language, not the real one, and it might demotivate.



yup, those kinds of experiments is easy to do on children of other people, but demotivating your own kid for math for sake of experiment is hard to defend - maybe if you have couple dozens of children, you can take the risk, but not otherwise :-)

10 years old is not that good in reading, and writing code is boring and confusing. "Daddy, why computer cannot count closing parens for me? Is it that stupid?"

Response: "Make it count closing parens, then."

Mirge
June 24th, 2009, 02:10 AM
I've been asked to teach a 10-year-old kid how to program, so I've been thinking about languages. Usually, I would suggest one of Python, PHP, or Ruby as a good first language, but I'm not so sure for kids.

I've been looking at Squeak (http://www.squeak.org), and it looks somewhat promising, especially if you add on the Etoys (http://www.squeakland.org). I've downloaded Alice (http://www.alice.org), but haven't looked at it yet.

Does anyone have any thoughts about a good first language for kids?

Note: This kid likes math, but since he's in third or fourth grade, his math skills aren't too advanced yet. Also, I'm not sure how interested he is in programming. Even though Python is easy to learn, I'm concerned that he might lose interest before he learned enough Python to be able to do something interesting. After all, programming is only fun if you're ale to do something interesting!

The original post is dated Feb. 2, 2008 by the way...

Brian Vaughan
June 24th, 2009, 06:15 PM
For a partial answer to my own question, from Bug #301190:

There's a minor bug with squeak-vm, a package required by etoys. For the Ubuntu repositories, it was compiled without an expected option (which, if I understand properly, is a memory optimization, and so not critical). The workaround is to use this command:


sudo sed -i -e "s/-xshm//" /usr/games/etoys

Then it works fine.

dracule
June 25th, 2009, 01:23 AM
Alice is god awful and should be avoided at all costs

sp0nge
June 25th, 2009, 01:39 AM
Also, MIT has a language called SCRATCH (http://scratch.mit.edu/) which is aimed at teaching kids to program using a lego-like building block interface. It can be downloaded for free and comes with many example programs that allow one to change at will to understand how the programs work as well as learning the logic behind the program.

OgreProgrammer
June 25th, 2009, 03:31 AM
I recommend Processing. Its GPL and aimed at beginners and visual people, though its text based.

http://processing.org/

Just because its aimed at adults doesnt mean kids cannot learn it. Its really quick to get into.

Ariel David Moya Sequeira
June 26th, 2009, 05:45 AM
In these kind of cases, I recommend any LOGO dialect. I've been devoloping some interesting projects in UCBLogo, but I'm having trouble with the SETPENCOLOR instruction (to make Julia Set graphics).

The KDE alternative to LOGO would be KTurtle. It gives you very basic tools to work with, so kids won't have to memorize a lot of methods, functions, procedures and weird math and formatting issues. It includes syntax highlighting (not the best color choices for me, but syntax highlighting anyways) and a single window is divided in various panels which include the cavas and the editor.

I got Squeak, but I've not tried it yet.

iBlackdeath
September 3rd, 2009, 11:29 PM
Umm... i know this hasnt annything with the thread but i have a question. that question is how do you start a thread i cant find it.

myrtle1908
September 4th, 2009, 02:49 AM
Umm... i know this hasnt annything with the thread but i have a question. that question is how do you start a thread i cant find it.

There is a great big "NEW THREAD" button at the top of the following page http://ubuntuforums.org/forumdisplay.php?f=39 ... press it :)

raymando
November 5th, 2009, 04:14 PM
I'm now 13, and started programming when I was about 10 years old. I started with game maker (only for windows), drag and drop is much more easy than typing it. That way you won't have to worry about syntax, and you can focus first on the basics of programming. Kids want to make games. But creating dialogs, asking you how old you are, telling you what time it is, asking you your name and saying "Hi, name!" is fun for them too. Maybe even better than creating games. When they know a tiny bit of programming, really not more than if's and then's, you can teach them bash. You really get instant results, with dialogs like kdialog or xdialog for example. Bash is really great for quick results. I (still) program bash. When I was 11, I started programming python. It's a pretty simple language. I would start with hello world (ofcourse), and create some very simple functions for pygame, put them in a .py file, so the child can really easy create games.
Don't start with gui's in python soon, classes are really difficult.

RaptorJesus
November 5th, 2009, 08:07 PM
Scheme, and under the guidance of SICP. It may be hard, but if you get him to think like a programmer early on, be assured he and you will NEVER regret it.

RaptorJesus
November 5th, 2009, 08:09 PM
I'm now 13, and started programming when I was about 10 years old. I started with game maker (only for windows), drag and drop is much more easy than typing it. That way you won't have to worry about syntax, and you can focus first on the basics of programming. Kids want to make games. But creating dialogs, asking you how old you are, telling you what time it is, asking you your name and saying "Hi, name!" is fun for them too. Maybe even better than creating games. When they know a tiny bit of programming, really not more than if's and then's, you can teach them bash. You really get instant results, with dialogs like kdialog or xdialog for example. Bash is really great for quick results. I (still) program bash. When I was 11, I started programming python. It's a pretty simple language. I would start with hello world (ofcourse), and create some very simple functions for pygame, put them in a .py file, so the child can really easy create games.
Don't start with gui's in python soon, classes are really difficult.
Oh hey, I'm fourteen, nice to meet another person my age around here. I totally agree with the "kids want to make games" statement.

nvteighen
November 5th, 2009, 08:37 PM
Scheme, and under the guidance of SICP. It may be hard, but if you get him to think like a programmer early on, be assured he and you will NEVER regret it.

Hm... and what about the SICP videos? Those videos can make it easier.

The issue with Scheme is what I call "the implementation mess". But, if you're going for SICP, then MIT/GNU is the way to go, even if you latter switch to another implementation for any other reason.

raducu7890
January 9th, 2013, 06:33 PM
I'm 10 years old and I really don't know what programming language too learn D:
Anybody?:popcorn:

CptPicard
January 10th, 2013, 09:06 PM
I'm 10 years old and I really don't know what programming language too learn D:
Anybody?:popcorn:

Python

epicoder
January 10th, 2013, 10:37 PM
When I was 10 and 11 I fiddled around with python for a bit... I didn't really get the majority of it though. When you're that young, results may vary. If you like python, that's great and you should go with it. It's about as simple as you're going to get with a cross-platform production language. When I was that age mainly I just learned how to use the terminal. I'm younger than most people here, so I was on an early version of red hat when I first got into any sort of code/scripting/etc. I also dabbled in a bit of scheme and read a bit of SICP, but I never really liked it and my skill with it remains negligible.

I really got into python when I was 13. By that point I had been the family sysadmin in training for a while (I am lucky enough to have a dad who is an MIT grad and was really into Linux/BSD) and I knew my way around Bash fairly well.

I guess the main point I'm trying to make is, go with what you like, unless it's BASIC. Most programming skill can be applied to several languages.

LuciferRex
January 10th, 2013, 10:55 PM
When I was 10, I started with an old Atari, learning Atari BASIC. You could always kick around in basic on a TI calculator or a DOS emulator

WitchCraft
January 11th, 2013, 06:09 PM
I've been asked to teach a 10-year-old kid how to program, so I've been thinking about languages. Usually, I would suggest one of Python, PHP, or Ruby as a good first language, but I'm not so sure for kids.

I've been looking at Squeak (http://www.squeak.org), and it looks somewhat promising, especially if you add on the Etoys (http://www.squeakland.org). I've downloaded Alice (http://www.alice.org), but haven't looked at it yet.

Does anyone have any thoughts about a good first language for kids?

Note: This kid likes math, but since he's in third or fourth grade, his math skills aren't too advanced yet. Also, I'm not sure how interested he is in programming. Even though Python is easy to learn, I'm concerned that he might lose interest before he learned enough Python to be able to do something interesting. After all, programming is only fun if you're ale to do something interesting!

I'd go with VB.NET (mono & monodevelop).
I think Python's indent system isn't all to excellent for a kid, and Perl is a bit cryptic.
Also, this will be good in case he/she ever needs to write Excel macros.

MonoDevelop is a nice IDE, and the jump from VB.NET to C# won't be a big deal.

Start out with console programms.
A bit later, you can move on to graphical programming.
And while WinForms applications may be a bit less feasible with MonoDevelop, website programming with ASP.NET WebForms & MVC3 should be interesting for a kid.
Mono offers Webforms & MVC3 support and a simple webserver, called xsp4.
In mono 3.0, MVC4 is supported.

Pretty much everyone I know started out young with some kind of BASIC, so this should be a good choice.

Once the concepts are grasped, switching to another language like Python/Perl or C/C++ should be quite easy.

Maybe functional programming, like F# would also be fun, or problem-oriented-programming, like ProLog. ;)

I started with QBasic on DR-DOS in 1992 (age 10),
then moved on to TurboPascal, then C/C++, then ExcelVBA,
and now I am project manager in a small company (10 employees),
and work with ASP.NET MVC.

gnuman
January 12th, 2013, 03:46 AM
Haven't read this thread in a while (too busy teaching programming to kids), but looking back I should have mentioned Processing (http://processing.org), which keeps getting better each year. I have a student who was using Gamemaker but not happy with some of the limitations. He now has written an incredible side-scroller that has multiple levels, realistic physics, and nice graphics. The only outside library he used was Minim for the audio.

My teaching pages are all over the place, but the current stuff is here (http://futureskyline.com).

I teach a lot of generative art stuff, and if I had more time, this GitHub project (https://github.com/mfragin/helping-hands/wiki) would be further along. ;)

somrita
January 13th, 2013, 05:38 PM
I was taught basic in school.You can try that

Brian Vaughan
January 15th, 2013, 04:55 AM
Not long ago, I found a free book online, Snake Wrangling for Kids (http://briggs.net.nz/snake-wrangling-for-kids.html), about programming in Python. It seems well-written and appropriate for kids of around 9-12, I think.

Kid_Coder
September 22nd, 2013, 09:34 AM
Hi guys,


We're developing a coding game for kids, age 5-12, which helps them learn how to program. We're looking for parents who would be interested in something like this. Sorry for the thread necromancy, but it seemed relevant!
Check out kidcoder.launchrock.com, and leave your email. We'll get back to you as soon as we have more info!


Cheers!

ofnuts
September 22nd, 2013, 11:38 AM
"they'll grow up to be the next Steves Jobs or Ada Lovelaces!"

Since when was Steve Jobs a programmer?

ptn107
September 26th, 2013, 03:41 PM
I'm 31 and started programming in python about 2 months ago. I haven't done anything since I took a C# class ten years ago. Guess what book I picked up to start learning Python?

Python for Kids: A Playful Introduction to Programming
ISBN-13: 978-1593274078

It explains things very well even some gui programming with tkinter at the end. I have since moved on to O'Reilly's learning python and programming python. The kids book was a good first step for me and I think would be perfect for kids.