Skip to main content
GameDev.net gamedev.net
🔒 Locked

Programming Language for children

Started by Gamedad Jun 23, 2004 at 10:41 AM 88 replies 19.8k views
Original Post
Gamedad
Gamedad
Hey everyone, I have been through this site before but have just registered. It seems like there is a lot of talent here and probably many of you could answer my question. My oldest son is 10 years old getting ready to turn 11 in September. The boy is very bright and I would like to get him involved in Programming. He loves games as most kids do these days and I think he could do very well with game programming in his future. My question is probably simple but here it is anyway. What language should I start him with? I thought about C/C++ but it seems like it has a huge learning curve. I've been looking at Visual Basic and also Microworlds. I think it is important for him to have instant gratification (i.e. write some code, see the graphic result) with early programming so I'm a little confused on what to get. I think the important part is I don't want him to spin his wheels on something that won't tranlate in some way at a later point to C++ for true Game Programming. Any help from all of you would be greatly appreciated. Thanks in advance Phil
Bakingsoda36
Bakingsoda36
Python might be a good choice. There's even a free book here. The good thing about python is, that learning it, will also help make learning C++ later, easier. Also, Visual Basic.Net is another good choice probably
Max_Payne
Max_Payne
I personally started at 9, with microsoft quick basic. I learned the language by myself from the help documents which were very complete. That language was good because it was very simple... I don't have much experience with the latest visual basic, however. I got told the latest versions weren't as simple as the previous ones.

I think starting directly with C or C++ is possible and could actually be a good thing, as you can learn good programming habits from the start, and because C++ is quite flexible and powerful... The basics of programming are the same for most programming languages... You basically edit text files, which contain different lines of code, containing various expressions, function calls and comments. The only problem I see might be that your son, unless he really likes computers, might get discouraged by not seeing immediate amazing 3D results when learning to program.

There is one thing I would recommend though. Before actually starting to learn to *program*, you might want to give your son a simple introduction on how a computer works, with the different components... And explain how the ram is used, and how its divided in small memory sectors, etc... That might help him to understand concepts such as pointers.

One way or another, your son, at 11 years old, is probably going to need some help learning a programming language, because neither visual basic or C/C++ are as simple as the old quick basic. If you program yourself, that would be very good.

I think its a very good idea to start programming at a young age. Good luck!

Looking for a serious game project?
www.xgameproject.com
jfclavette
jfclavette
I'd suggest you'd get him a copy of Visual Studio .Net

He'll then be able to see a bunch of different languages and will be able to see instant graphical results using the .Net framework.

C# sounds like a good learning language.
I teleported home one night; With Ron and Sid and Meg; Ron stole Meggie's heart away; And I got Sydney's leg. <> I'm blogging, emo style
phil05
phil05
I mentored a kid that is your son's age, and he easily started with Visual Basic 6.0. It's an excellent visual environment that is very easy to design, and rather simple to code things. Good luck.
mikeman
mikeman
Assembly is a really good choise too.
Just kidding.In my opinion,he should start with a relatively simple language,not C/C++.Possibly Basic or Pascal.It would be better if he could get visual feedback for his programming efforts,so Visual Basic or Delphi whould be perfect.Delphi has the advantage of being very simple for begginers,but tremendously powerful(almost as C++) for people who know what they're doing.
Now that I'm thinking about it,I'm wondering what's easier for a 10 year old to grasp:procedural programming or OOP?I bet it's the latter.
phil05
phil05
He should start with Win32 API. hehe. Honestly, Visual Basic is the ding ding. Here's some code to give you an example, of which I was going to do above, but now it won't let me modify it... arg.

// Making a edit box italic	If (Check2.Value = "1") Then	    TextInput.Font.Italic = True	Else 	   TextInput.Font.Italic = False


See? Simple stuff. If it's clicked, it gets a 1. If not, it gets a 0, simple binary states that are on (1) and off (0). The funny thing is most of the language is like this.
randomZ
randomZ
You *could* try smalltalk. For example, Squeak has been designed specifically with children in mind, and I personally find the language to be very "graphic" - thanks to the pure OO used, getting from problems to solutions is often quite straightforward.

However, Squeak's interface is *really* intimidating. I think they failed in this aspect. You just click your mouse, and something happens, and you don't even know what and how to undo it.

I also tried Cincom Smalltalk (free registration required, IIRC) which I as a programmer was able to handle a lot better, since it more resembles a classical IDE (though there are huge differences as well).

GNU Smalltalk I couldn't get to work on my machine, but it seems to be designed to be used only by geeks, like many GNU programs. ;)

I really don't know whether any of these would be suitable for a beginning kid. I do know that they did like elementary school courses (or so) with Squeak. But to teach it, I guess you'd have to learn to use it really well.

So much for smalltalk ;)

I also tried to teach my little brother (8 yrs, very smart) a little C++, but I agree that the language has too many edges for a kid. If I were to try it again, I'd try Python.

Another problem I had was that my brother doesn't speak any english. At least for C++, getting along without english is *very* hard. I'm not sure if Python has localized error messages and such.

Another option would be Logo. But I have the feeling that kids find this language somewhat boring. I think it centers too much on the turtle and its line-drawing abilities, which ultimately aren't that interesting. (BTW, a German computer magazine (c't) recently released a series of smalltalk articles, using implementing a logo-like turtle as an example. It's about as easy to use as logo, but much more flexible.)

Just my 2 Euro-cents.
---Just trying to be helpful.Sebastian Beschkehttp://randomz.heim.at/
abstractworlds
abstractworlds
Quote:
Original post by Gamedad
I think it is important for him to have instant gratification (i.e. write some code, see the graphic result) with early programming


I would recommend Visual Basic (VB) version 5 or 6. VB even goes one step better in terms of instant visual gratification for young beginners, i.e. draw some graphics objects first to see the static graphic result (using a drag n drop form designer), then write some code, run and see the interactive graphic results.
Silent Dragon
Silent Dragon
For a simple langague that gives you very fast results i would suggest DarkBASIC, as it is very easy to use
VBBR
VBBR
Quote:
Original post by philvaira
// Making a edit box italic	If (Check2.Value = "1") Then	    TextInput.Font.Italic = True	Else 	   TextInput.Font.Italic = False


See? Simple stuff. If it's clicked, it gets a 1. If not, it gets a 0, simple binary states that are on (1) and off (0). The funny thing is most of the language is like this.


Just correcting this... You forgot the "End If" statement. Also this could be a little optimised...

// Making a edit box italic	If Check2.Value Then	    TextInput.Font.Italic = True	Else 	    TextInput.Font.Italic = False        End If


Or better... Just

// Making a edit box italic: the easy way	    TextInput.Font.Italic = Check2.Value


EDIT: Also, it just looked like you said VB is just True and False states? It sure isn't.
I don't know why people make so little of VB. (not specifically you, I mean some people in general, and I also am not saying this includes you) I guess they should inform themselves better before attempting to say something. I use VB for some years now, and I'm lerning C++. Yes, I know there are a lot of things (low-level) that C++ can do and a VB programmer not even dreams with (altough it is coming close to with .NET), but it's not so often that you need to use pointers and doesn't have another way around, or need to do bit shifts all the time. I also know that VB CAN be slower, but only if the skill used (the programmer's, for comparison) is the same. Get an experienced VB programmer and a nwebie C++ one. Tell them to write a program that does something (the same for both). Then see which one is faster...
In all those years I couldn't find something I can't do with VB (even if it can be optimized while in C++). And if I find, I will just make a C/C++ DLL, for that matter.
Don't misjudge something. Specially programming languages. Just look at what some people were doing with BASIC 20 years ago.

(...I though checkbox values were like this in C++ also? Or do you need to bit-shift a pointer address then access a virtual class inlined function to return a 465768 if it is checked and a -46487658 if it's not?)
So you'll create an MMORPG, uh? Well, what about reading THIS?
Agony
Agony
I started off with VB 2.0 learning edition when I was 12. I don't know if I would have stuck with it as easily if it hadn't been for the fact that I was able to get a functional window and all up and running with very little effort. As others have said, that is incredibly critical. I know many people who have given up on programming because they were stuck with console windows, and couldn't really make the leap from printf() to understanding just how powerful programming can be. Allowing users to make somewhat powerful apps easily helps in that transition.

Thus, I'd definitely agree with others here, and suggest VB 6, or probably VB .NET instead, although I am not personally familiar with it. I just know that VB 6, while good, has some really quirky behaviors. It usually doesn't show up during basic stuff, but you never know.
"We should have a great fewer disputes in the world if words were taken for what they are, the signs of our ideas nly, and not for things themselves." - John Locke o
Gamedad
Gamedad
Thanks everyone,

It seems like there are many programs that each have varying degrees of ease and complexity. I appears that the overwhelming thought would be on VB 5 or 6. I will investigate it further. The instant gratification is important simply because I would like him to stick with it.

I have seen VB 6 and VB .NET, I don't know what the differences are in the two and to not let this thread drag on forever I will have to do my own research to figure out which one would be better.

I appreciate all of your time and wish you the best with your programming. Thanks for the quick replies.

Phil
jfclavette
jfclavette
There's no reason to use VB 5 anymore, just as there is no reason to use an old version of software.

The reason why one would choose VB 6 over VB .Net is that VB6 code isn't compatible with VB.Net... in other words, mostly for legacy application development/support.

Seeing as your children won't probably be supporting legacy code (Tough he might do it soon enough :P) VB.Net would be the logical choice.

The best idea IMHO, as I mentionned above, would be to buy a copy of Visual Studio so your boy can play with a wide variety of languages (VB, C++, C# to name a few). The problem with this is that copy of Visual Studio cost a bit, and I'm not too sure about the legality of an educational version in your case... but I assume it is legal. At least it is, morally, heh.
I teleported home one night; With Ron and Sid and Meg; Ron stole Meggie's heart away; And I got Sydney's leg. <> I'm blogging, emo style
Fruny
Fruny
Urgh, don't put a 10-year-old on VB. Python is much more suitable. And don't listen to talks of using C, Win32... that's the best way to forever disgust him from programming. Furthermore, it's completely free, and a lot of doc is available online. So even if he turns away from it, the investment will have been minimal.

Check out the page for the Teaching Python BOF at PyCon2004. The speaker, David Handy, is working on a book: Computer Programming is Fun targetting children of that age. His site says the book should be out by the end of summer.
"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." — Brian W. Kernighan
abstractworlds
abstractworlds
Quote:
Original post by xMcBaiNx
There's no reason to use VB 5 anymore, just as there is no reason to use an old version of software.


VB5 runtimes are more prevalent on different versions of Windows, more than VB6 runtimes, and much more than .net runtimes. For beginners, being able to easily show off your work to your friends by copying and running exes (for simple programs that dont use external custom controls) on their machines is a valuable incentive to learn more.

Quote:
Original post by xMcBaiNx
The reason why one would choose VB 6 over VB .Net is that VB6 code isn't compatible with VB.Net... in other words, mostly for legacy application development/support.


The VB5/6 IDE supports being able to make code changes whilst in debug mode, whereas VB.net doesn't (at least the first version of VB.net). IMO, this feature of making changes and trial and error whilst stepping through your code in debug is a fast and great way for beginners to learn, and it is a feature sadly missing in vb.net.

There are also more VB5/6 example source code projects out there on the net to learn from - these might not work with vb.net.

There are many VB5/6 programmers out there, not all of these are upgrading to vb.net as the next logical step - some are going for CSharp, some sticking with VB5/6, and some going for Java. At this present time there are more VB5/6 programmers that might be able to help newbies than VB.net programmers, and IMO this trend will continue.

Beginners also shouldn't be at the leading/bleeding edge of technology, it doesn't always benefit them.

These are the main reasons why I recomend VB5/6 over VB.Net. Yes .net (CSharp more than VB.net) may be the future, but VB5/6 is still better for beginners to learn now.
Wysardry
Wysardry
If instant gratification is a priority, you might want to consider something like Game Maker.

Your son could start off by using the point and click, drag and drop interface to create games, and then as his confidence and understanding grew he could gradually switch to using the "C like" scripting language.

There are also a number of example games available.
fyhuang
fyhuang
I would recommend starting with C++. Long learning curve, yes. However, to counteract the 'instant gratification' thingy, you may want to show him some video games (cool effects, ...) and say that 'this was made with C++'. I started with C++ when I was 9, doing boring console stuff with a book that was meant for professors and with no parental guidance. I'm still programming, and so my recommendation would be just to go with C++.

Of course, if you don't like that idea, I would then say that you should go with some C-like scripting language, such as Python. I personally don't like VB, because I think that it gives programmers the wrong first impression, that programs are made up of dialog boxes and check boxes, and not code. Same with all the 'Game Maker' stuff.
- fyhuang [ site ]
darrylsh
darrylsh
What ever happened to LOGO. Is it still around? That might be a fun language for a kid, though not very useful in the real world. I had fun with it as a kid, but my first language was basic which was also fun.

D
Anti-Sig: Do Not Read This Signature
Matei
Matei
If you want a C-like language, C# is better to start with than C++. It lets you do many things fairly easily, using a consistent API (.NET). You can also use the Visual Studio form editor to make GUI's, or even write them by hand and still get very short and readable code. Once you learn C#, you can learn a bit more about what goes on "behind the scenes" with memory management and pointers and use C++, or you can learn Java (to make web applets to show to your friends ;)), but both those languages are a bit harder to start with.

I know a lot of people who learned programming through web scripting in &#106avascript or PHP, so don't be too worried about the C-like syntax, as long as you explain what everything means.<br/><br/>Another interesting thing to look at would be Lego Mindstorms, a Lego set that allows you to build robots and program them using your computer. The software that comes with it lets you build the program by dragging "blocks" around the screen (an "if" block, a "loop" block, etc), but there is some free third-party software called NQC (not-quite-C) which lets you write programs for the robots in a C-like language, and there's even LeJOS, a tiny Java virtual machine that lets you run Java on the robot. There are people who have done really interesting things with it. It's a very versatile and fun toy, especially if your kid likes Lego already.

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.