View Full Version : programming language for kids???
oddvark
12-23-2005, 12:43 PM
Hi,
My nephew who's eleven see's me working on my silly games all the time and he has been bugging me for months to teach him how. Of course, I spent alot of time saying that it was pretty difficult, and he should expect at best to get some text and at best a "walking stick figure" after alot of learning and work. My question though, what language and approach would you use to teach your kids or nephews the simplest basics?
I remember when i was his age i learned Basic on the C64, and I spent most of the learning myself. I expect that he will probably do the same, after all its probably the only way that he would *REALLY* learn. I mean, I could spend time of course, but in the end, he would have to break out the books and start playing around like i guess most of us did when we were young.
I'm worried about that part...learning on his own. I'm worried that the complications of the development environment might prevent him from learning the programming. I mean, its no use to code if you cant set up the search paths, include files, etc. The cool thing about BASIC was it didn't have much of an IDE, just type the code, type "RUN" and off it went. I'm looking for something along those lines...I was even thinking of finding QBASIC somewhere :).
So I guess I'm looking for something with a simple language, simple development environment, or whatever you might suggest. If you have personal experience with this, that would be great. He really does want to try this, and I'm afraid a harsh lesson would stop his interest.
Thoughts?
ggambett
12-23-2005, 12:47 PM
I think Python and PyGame in particular would provide the kind of environment you're talking about - my first language was the BASIC of the ZX Spectrum so I know what you mean. Then 13 years old is a perfectly good age to throw BASIC away forever and learn C++ :)
Storm
12-23-2005, 12:49 PM
Maybe Gamemaker (http://www.gamemaker.nl) would be a good start?
Ricardo Vladimiro
12-23-2005, 12:52 PM
DarkBasic is simple and a great way of getting into game programming in my opinion. Not that well fundamented unfortunatelly since I only tried it and never bought it. But reading that code is like reading english... I don't know... makes sense.
But I'm aware of some teenagers throwing themselves at C++ with ease.
Good luck to him... and if it's C++, to you also. :)
soniCron
12-23-2005, 12:59 PM
You can download MS QBASIC from here (http://download.microsoft.com/download/win95upg/tool_s/1.0/W95/EN-US/olddos.exe), I believe. It'll extract wherever you run it. There are also simple QBasic interpereters/IDEs out there for Windows, just Google for it. Your local library probably has a bunch of old BASIC books, and these are the best to begin learning from. They usually have simple -- but fun -- projects, like a fortune teller, Tic-Tac-Toe, etc. I remember learning this way when I was very young, and I think it's probably the best way to learn, especially because BASIC is a "real" language, and he can apply much of what he learns in the future.
I think trying Python, Ruby, Lua, etc. as a start is a bad idea. The languages are far too complex, and there is a lot to confuse a beginner. Not to mention that having solid, structured learning material like a beginner's BASIC book is very important to making the experience as low-impact as possible. Most programming books for other languages are geared towards people who already know how to program in some capacity (whether they admit it or not), and jump from "Hello World!" to data structures in a matter of chapters. It's important to keep a lot of fun, little projects churning out at a high rate for a beginner, to keep his interest. After that, he'll have the motivation to move on to more complex tasks, and he'll have a solid programming foundation, as well as several completed projects. This is critical, in my opinion.
There's a reason most schools teach BASIC as a first language.
HairyTroll
12-23-2005, 01:04 PM
Try Squeak (http://www.squeakland.org/). It was made for teaching children how to program and is therefore very visual. "Draw a car on the screen, tell the car to move forward 20, turn right 10" etc.
A more technical overview is available here (http://www.squeak.org/).
Vorax
12-23-2005, 01:24 PM
Oh - Squeak is a SmallTalk implementation - get him that!
oddvark
12-23-2005, 01:37 PM
Thanks for the advice and the quick responses. From what you've mentioned, I'm leaning back to QBASIC again. Certainly the demoes on the Darkbasic site is where he will EVENTUALLY want to be. But for learning, I may go with the QBASIC approach at first. Start him off with some text games. I know he's a huge Dungeons and Dragons fan so he's not affraid of text only games. Perhaps a homemade, text based choose your own adventure would be the eventual target? That shouldn't be too hard. I've already talked to him about perhaps just building some utilities for his DnD hobby, and he's into that.
zKing
12-23-2005, 01:38 PM
From the "teach them to swim by throwing them in the pond" camp:
C
Personally I don't see it being that much harder to pickup from scratch than any other language... they will all be "weird". Might as well give him something that will be the most broadly useful as a growth point. ;)
Besides why muddle a young mind with some interpreted/managed drivel?
*jumping in my flame retardant suit*
oddvark
12-23-2005, 01:47 PM
hm...Squeak looks pretty cool too though. Although your description makes it sound alot like "logo" from the preschool days. He may like "squeak" but logo will probably put him to sleep.
oddvark
12-23-2005, 02:02 PM
From the "teach them to swim by throwing them in the pond" camp:
C
...
Besides why muddle a young mind with some interpreted/managed drivel?
*jumping in my flame retardant suit*
Hehe, you may need to jump into a radiation suite and bunker instead! But in a way I agree, it probably isn't too much of a jump in difficulty to learn the language itself. I'm really thinking more of the overall package when I lean to BASIC. If we went C, I would probably go something command line driven. I just dont see it being fun sitting down infront of something like Microsoft Visual C++ hehe or any other modern ide.
Anlino
12-23-2005, 02:41 PM
For Wysiwyg editing: http://www.clickteam.com
For coding: The previously mentioned QBasic. The very language i started out with, great.
TurboC 1.0 is pretty much like that QBasic thingy... gui-wise I mean. The "gui" doesnt even support the mouse (2.0 for example does). Its really painfull, but I used it for years. Heh.
But C? I think something managed would be nicer, because managing stuff is error prone and it becomes less important each day (and he's only 11). Java and C# might be a tad too much, python is a tad cryptic... Well, I think some basic would be just fine. Its ment to teach fundamental structures and concepts and it does that pretty well.
I agree with the previous posters that say that Lua or Python might be too cryptic and complex for a first-timer that is 11 years old...
It may be worth considering that he could continue to USE a language if he learns it this early on... so with that in mind I think languages like QBasic (whose style of syntax is going extinct rapidly) might be less useful than even just giving him something like Torque2D and teaching him scripting (or other similar script-driven engines).
Obviously torquescript isn't likely to be useful in 10 years either, but that type of syntax could be useful experience for quite a while...
He could probably pick up any language you throw at him if you can get enough quick-payoff tutorials for him to type in, compile, see working, and then tweak stuff inside of. This cycle kept me motivated when I was PEEKin' and POKEin' on my C64 when I was wee.
good luck bringing 'im the joy of game development... :p
-Tim
mahlzeit
12-23-2005, 04:54 PM
I think you should pick something that gives quick results. Doing DirectX or even SDL in C is just way too much of a hassle for a beginner. Pick something that lets you draw stuff on the screen with a single line of code. Who cares if it's slow or not really good programming? All that matters is that it is fun. My pick would be something like BlitzPlus.
I think you should pick something that gives quick results. Doing DirectX or even SDL in C is just way too much of a hassle for a beginner.
Sorry, but I think a complete beginner should first try to code some console apps. You can't start with programming graphics stuff. So that point with c doesn't matter - because a bgeinner shouldn't use SDL or DirectX or any other graphics stuff in any other language. Small console apps are perfect to learn the basics of a language (how are the variables handled, which variable types are available, how to create if-else-instructions, how to create and call functions...) , no matter if it's c, basic or something else.
ggambett
12-23-2005, 09:03 PM
I agree with the previous posters that say that Lua or Python might be too cryptic and complex for a first-timer that is 11 years old...
I think you underestimate 11 year olds. Not your fault, though; most everyone underestimate kids.
Vorax
12-23-2005, 09:39 PM
I think you underestimate 11 year olds. Not your fault, though; most everyone underestimate kids.
I agree - I was doing Assembly at 12...and I knew others who were as well.
For Wysiwyg editing: http://www.clickteam.com
For coding: The previously mentioned QBasic. The very language i started out with, great.
I agree, either MMF or a nice Basic. I tend to MMF because it's an all-in-one-solution. It comes with tons of animated characters and background gfx of all kind. You simply drag a character into the editor and apply non-cryptic commands. No hassle with gfx routines and boring stuff like declaring variables ;)
The wish to make a game does not necessarily mean he'll like real coding, since there are many things to learn, that are not directly related to game creation. Of course, would be great if he'd like programming, because it may be quite useful in the future.
kjs335
12-24-2005, 02:22 AM
Has anyone heard of IOI? (International Olympiad in Informatics)
I've been to national olympiad when I was about 13 years old.
At that time, minimum age was 13 and others were mostly 13 years old too.
What I felt was that they were more experienced than me.
I spent only half a year to learn C++ by myself and make simple arkanoid like 2D game for the olympiad.
But most of them went to a programming school and I was not as good as them..
One thing to say is that apart from me, no one made a game for the olympiad.
It's been 2 years since then. It would be good for your nephew to
start learning C++ probably.. I was like that kid when I was at that age.
I saw my cousin learning C++ when he came to my house to stay for uni.
Like your nephew, I wanted to do it too then I started it when I was almost 13 years old.
And nowadays I am planning to make a 3d game for school market day!
Raptisoft
12-24-2005, 02:34 AM
Of course, I spent alot of time saying that it was pretty difficult, and he should expect at best to get some text and at best a "walking stick figure" after alot of learning and work. My question though
You know... there's never any shortage of people in your life who will tell you things are too hard, too time consuming, too pointless, too low on return, etc. There's no real need to add to their number.
I second the "throw him into water" thing... get him into C or C++. Just get him a library that does the graphics/sounds and any kid who's interested in programming will dig right in. I learned assembler when I was 9. Now, I wasn't ELEGANT with it, but I could do it.
This "Squeak" and "Logo" stuff is like saying "it's too hard to teach kids English. Let's teach them Esperanto now, and we'll do English when they feel more capable." All you're doing is giving him a handicap.
HairyTroll
12-24-2005, 03:15 AM
This "Squeak" and "Logo" stuff is like saying "it's too hard to teach kids English. Let's teach them Esperanto now, and we'll do English when they feel more capable." All you're doing is giving him a handicap.
You are so right. Having the same programming handicap as Alan Kay (http://minnow.cc.gatech.edu/squeak/378) would be unbearable.
Grey Alien
12-24-2005, 03:44 AM
Vorax: I agree, I was programming at 8 and doing Spectrum, BBC and C64 Assembly by 12/13. Blitz Plus/Max is a great language and I'd would've loved something like that as a Kid.
mahlzeit
12-24-2005, 06:03 AM
Sorry, but I think a complete beginner should first try to code some console apps. You can't start with programming graphics stuff.
Why not? Programming graphics is what makes this fun... unless you want the kid to become a corporate IT programmer. ;) My first program made a balloon with the C= logo fly across the screen (See section 7.3 (http://unusedino.de/ec64/technical/project64/users_guide2.html)). It was the first example from the C64 manual and I had no idea how it worked but it was great fun to mess around with. Console apps are boring. :)
Emmanuel
12-24-2005, 06:03 AM
Depends how much time you can spare teaching and helping, but kids are definitely smarter than we think they are.
Discovered computers and basic at 9 years old in school, one week into learning Basic, I asked how I could program in assembler. Got shrugged off as a weirdo, and had to wait until I was 12 and got a C64 to actually do that :)
Best regards,
Emmanuel
MadSage
12-24-2005, 08:08 AM
This question is tougher to answer than I first thought.
I remember that I started programming in BASIC on a ZX Spectrum when I was 8 - that was 21 years ago! I recall programming in BASIC for about 4 years before moving onto writing machine code using DATA statements in BASIC. I just copied programs from the Spectrum manual at first, and then books I borrowed from the library. I think it is important to have programs to just type in and see what happens. Whatever language you choose for your kid, you should be able to get hold of programs for them to type in. After copying a program, I would change bits and see what happens - reading the command reference as I went. It's also a good thing that your nephew is interested! I hope when I have kids they will be, but I know it would be pointless to force them - they won't learn if they aren't interested. Also, the whole experience needs to be fun, so I disagree that programming applications would be a good idea. It has to be graphics programming so they can see something fun. As a kid, the first programs I tried would do things like moving a spider across the screen.
I definately think you should leave them to it most of the time, after showing them how to enter and run a program or two. Most of their learning will come from experimentation. After a while, you could give them some help programming simple games - unless they beat you to it! ;) Pong or Space Invaders are good places to start, then maybe PacMan.
As for what language to use, it has to be some form of BASIC. I had to use Blitz3D for a project I did recently for someone, and it's pretty good and fairly easy to learn. There are some annoying bugs, but you probably wouldn't notice them if you're doing something simple. BlitzBasic would probably surfice. BlitzMax is probably too complex - as far as I know, the language is quite different to BlitzBasic and Blitz3D, and leans more towards C/C++.
impossible
12-24-2005, 10:26 AM
I started teaching myself C when I was 11, after about a year and a half of QBasic experience, although I never really learned QBasic that well. Sure it took me about 2-3 years before I could actually do anything really interesting with C, but if your nephew is patient (which he'll need to be) its not a bad idea.
Of course now things are a lot different. When I was 11 you pretty much had to use C to do any relevant game programming. Now C#, Java and Python are great alternatives. I would say if he wants to learn "real" programming and is pretty patient, start him on Python and Pygame. If he wants to jump into making games get him working with game maker or some easily moddable game engine.
bob123
12-24-2005, 11:43 AM
A 9 year could easily learn C,but when you start doing DirectX,or some similar complicated library,it gets much harder. ;) (I know that from personal experience)
Robert Cummings
12-24-2005, 11:44 AM
darkbasic.
why not just get him using Macromedia Flash. It's good for beginners and he'll see some results quickly (so he won't lose interest ;))
Sharkbait
12-24-2005, 01:27 PM
Microsoft Kid's Programming Language (KPL) Anyone?
http://msdn.microsoft.com/coding4fun/ (http://msdn.microsoft.com/coding4fun/)
bob123
12-24-2005, 04:07 PM
The Kids Programming Language thing makes a kid feel stupid, he has to use a special programming language that is specialy designed for kids. ;) (my opinion)
The Kids Programming Language thing makes a kid feel stupid, he has to use a special programming language that is specialy designed for kids. ;) (my opinion)
come on, a kid has to start somewhere. an 8 year old doesn't need to know all the little nuances of c/c++ etc. if all they want to do is make games, provide them with the simplest method of doing... afterall it's for their own enjoyment not to give some nerd bragging rights "i taught my young son/daughter/nephew/niece to code assembly"
ggambett
12-24-2005, 05:38 PM
an 8 year old doesn't need to know all the little nuances of c/c++ etc.
Doesn't need, but can. Don't underestimate kids, you only give them a handicap, as someone else said.
Savant
12-24-2005, 06:00 PM
The thing is, kids need feedback. Something like C is great but they're going to have to lay down a lot of base work before something will happen on the screen - exactly what the kid doesn't want to do. Project settings, linker errors, and all of those things that you guys write off as second nature now are killers to someone trying to learn the language, never mind an 8 year old.
BlitzMax or something along those lines will teach programming and object orientation, while at the same time providing quick turn around times on getting stuff to happen.
dislekcia
12-26-2005, 03:55 PM
Gamemaker (http://www.gamemaker.nl).
An hour with a tutorial and the warm and fuzzy feelings from making a game will keep him going for weeks. I've had kids age 8 and 9 playing with GM and making some unique and fun games.
Plus it starts off with simple, logical methods and transitions into a fully-fledged C-syntax language. By the time the kid wants to do more complex things, he'd understand which other languages would provide what he needs.
vBulletin v3.6.0, Copyright ©2000-2008, Jelsoft Enterprises Ltd.