Choosing a language is up to him. He can start with anything he likes. I’ve started with C when I was 10 in school. Now, I’ve completed my schooling and I’ve learnt Java, C++, C#, and VB.Net. I don’t say to start with only this language or that, but learn whichever better suits you. Try making games, until you succeed. If you are in Java, I’d recommend libGdx and if in C# or VB.Net, I’d recommend MonoGame.
Like SHC said - leave language choice up to him. Even if he will don’t like choosen language, he can always quickly switch to another. Show him few languages like Java, C#, Python, AS3, etc., explain main differences between their environments and syntax.
About choice of graphics library - I don’t like using high-level libraries, but in this case everything is clear - LibGDX will be better. When he will be older he can switch to LWJGL, but things like vector/matrix math are rather too complex for 11 year old programmer.
[quote]I recommend letting him find a programming language for himself.
[/quote]
100% agree, I recommend you and your kid to read this book: http://www.amazon.com/Beginning-Programming-Dummies-Wallace-Wang/dp/0470088702
So making a choice between programming languages may become more clear/easy.
And if he (after reading this book) is really sure he wants to make applications, just let him read the python book you have, (but Im not sure if ‘books for kids’ are that succesful??, I just read a ‘book for adult’ when I started to learn language, its no problem if he has to reads some stuff twice (and maybe uses google) I hope?)…
Maybe thenewboston is a nice teacher for him, as he does everything step by step, very easy to understand and it is a video, so he can see it with his own eyes.
[quote]Python doesn’t have a lot of jobs out there :0
[/quote]
LoL, don’t care about that now already, the language he starts with (sure if you are 11) is not the only one he will learn, after/while learning python he becomes interested in other languages (C(++/#) is a language almost everybody wants to learn)
If you were to start with python, I would recommend Codecademy. I would still recommend java though. It is a simple language and it is really easy to learn. There are a lot of resources that you can learn from.
Wow i wonder what made him want to program in the first place. I had zero interests in programming when I was 11, I remember I was forced to take an elementary programming course taught in BASIC, it turned out to be a waste of time and money for my parents. If I ever have a son I might borrow your strategy to get him involved in programming
[/quote]
Well I started with 13 and I knew how it began:
My friend called me and said in some IT class thingy they had in class they started doing HTML, and he tried explaining it to me like “you can write text, save it as an html and then it actually does things on the screen depending and what you wrote” and I was like “WHAT!”
Well little earlier in my life my father opened a binary file with a text editor showing the ascii garbage. I asked what it is and he was like “its the language of the computer, people study years to understand it” and I said “I wanna do THAT!” =D (of course not really true with the ascii stuff but hey he knew how to make it simple I guess ^^)
I read somewhere (maybe it was here) about Java vs Python for beginners - and it made (I think) a good point.
For example, a beginner when printing out Hello World in python:
print “Hello World”
Simple, easy. Everyone and anyone who knows anything or nothing about programming can tell you what every character in there means.
Now when you do a hello world in Java, you need to create a class - don’t worry about classes for now - or OOP - we’ll get into that later. Then you need to create a special function called ‘main’ - will get into functions later. The main function has what we call ‘parameters’ that carry ‘arguments’ - but don’t worry about that yet. You’ll notice the static key-word there, just ignore that for now.
‘System’ is an object, to access a member variable of it you must use the - bluh bluh bluh. More than 85% of this has gone completely of their head at this point. With python you can be eased into classes and objects etc…
Same goes for doing anything - opening files ,etc. It’s so much more involved in Java to do everything and it really is quite overwhelming for a beginner.
And oh god, don’t get me started on C++'s hello world. You’ve got operator overloading, include files, namespaces and objects all throw into five lines of code for an ‘introduction’
That said, I personally haven’t used python much.
I feel the same way.
Except of course for python 3 where they made it a function so you have to say [icode]print(“Hello World”)[/icode] instead. So which dialect you learn is going to depend which tutorial you follow.
Personally I’d start with javascript. As a language, it’s not my favorite, but it’s hard to beat for instant gratification.
Teaching kids programming is more about the responsiveness and seeing things change as you code but above all it’s about the material and teachers that are available. Kids aren’t going to learn anything slapping a book in front of them saying “read this”. It’s really not about syntax at all. Khan Academy, I feel, is doing a lot of things right. They have lessons available that you can watch, re-watch and rewind whenever you see fit. They have a lot of examples, problems to solve and tools for teachers to track how each kid is doing and where each kid is in their studies. Seeing which subjects they have trouble with etc giving the teacher an idea of when to intervene and help. It’s well suited for self study as well.
It’s really not a question about what language but what kind of teaching material is available.
Well, I did… He wants to learn to code right? Its not his father that wants/forces him to code…
Tbh, when we all learnt to code there was a lot less information and it was a lot harder to achieve (sounding old now). So if kids want to learn - they should be pretty able to start for themselves. If not, they’re not that interested and no one should start by fooling them into thinking it’s going to be really easy.
On the hand, if you’re trying to force kids to learn then any modern language should be fine - they all have their ups and down. The trick is finding practical exercises that stretch them without scaring them away.
Cheers,
Kev
We’re talking about kids here, right? You know, tiny small people that don’t know what “geometry” is and have barely dipped their nose into multiplication.
If a kid is eager to learn you should encourage him instead of slapping him silly with nonsense. Telling a kid “oh just google it” or “oh just read this book which talks about things you’ve never heard of that uses words you don’t understand and will take you a month to read at least before you can do anything” is like throwing him in a sea of bad ideas wrapped in a steal cage anchored with cement to watch him drown.
I’m sorry, I thought we said this kid was 11?
Kev
Yes but… well, lets talk pedagogy
No. A kid wants to have FUN. He thinks programming might be fun, and he might actually be true.
But a kid is not going to have fun for example programming data structures with no graphical output and stuff - talking about average here, I’m sure some will, but normal any person wants to have a little more visual fun.
Sitting down with such a child and actually explaining OOP visually by for example using a game and all the elements which are objects should be actually fun.
Of course everyone will say that a child should really start with a “learning language”.
I used WinLogo first… Best choice ? well I dunno, but do something visual
When MIT teaches programming in java they use the ACM libraries which already give you like a visual console, app view and 2D graphics and stuff, without having to write and understand all that lower level stuff.
Check it out here for instance: http://www.youtube.com/watch?v=wgjJRQ-kntg
I believe he is past that step as he has already made a couple games in Game Maker. In your defense though, I don’t know how in depth those games were or how much he learned while making them.
I have freedom to not agree too ;D Seriously, it’s not about the language of choice but the concept. And more, how you will enjoy programming.
Python is an excellent language, and there ARE jobs out there. I have a friend working in Python right now, and I see that Tiobe rates it in the top 10 languages and gives it an “A” status. (Yes, I know there is some controversy about what the Tiobe rankings really mean.)
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
I think what one learns via Python complements what one learns via a lower-level, strongly-typed language like Java or one of the flavors of C.
This is not like learning to play the violin vs the piano vs the trumpet or whatever and trying to become the ultimate virtuoso on that instrument. Good programmers are more like multi-instrumentalists (doublers), have learned several different languages and paradigms.
I guess working with a game engine is cool, but they are often not the greatest examples of programming style to learn from. Their idiosyncrasies may be less transferable than you might expect. And they aren’t really necessary for Java 2D games.
I’m pretty sure there are books and YouTube tutorials for beginning Java game programming available. But the beginning Python book you found also sounds quite good.
By the time I was 11 I’d written a Logo interpreter in BASIC and machine code on my C64 and had about 8 games published on the cover listings of various UK rags And I’m not even very good. If you’re into programming you’ll just do it - in whatever language comes to hand - and probably be effective in any new language that comes along later. It doesn’t matter where you start!
Cas
And 11 is plenty old enough to “google it”. Its not a 5 year old that need help crossing the road anymore. If they won’t do that… we there is the saying about a smelly kind of creek and no paddles.
What he said, exactly.
Kev