My son (11) wants to make 2D games. I am a programmer here and there but not as much as you all. Python has a really good book, Python for Kids: Introduction to Programming. I have not seen one like it for Java or any other language. I have seen all the "precursor" steps like Alice and Scratch. He does not want that. He has learned to compile things for Minecraft mods and wants to use a "real language." He compiles by following steps from YouTube videos. He, of course, doesn't know the rudiments of the language, just learns it here and there by context. I hope that makes sense. He has taken a Game Maker class and made a game or two. Just not where we want to stay. I'm trying to prepare him for the real world, no offense.

The goal is not to make mods for Minecraft. He doesn't even play it right now. But he does want to make 2d games. Python, pygame and what not do not look too hard. I've seen the two big gaming libraries for Java, but don't know much. I'd pick LibGDX for now. No, I do not want to argue about what's the best library. I've seen enough of those threads on JGO .

The main question is should I start in Python and use that for a while? Start with Java? Does it matter because it won't be the only language he ever learns? Python doesn't have a lot of jobs out there :0.

Starting with Java should be fine, I started learning Java myself when I was 11. Just point him in the right direction, and encourage him to ask questions (I have a bad habit of trying to figure out everything by myself, so I got into some bad practices).

@Jimmt: I feel like I am similar in not asking others questions. In the past, I barely ever asked questions to real people, but I Googled stuff constantly. Learning what IRC is and using it for help sometimes has been a huge asset now.

@MrCoffee: I have a friend who is interested in programming purely for mathematical/scientific purposes who has learned Python a bit. He has sent me code of his and I have given him tips. I think that Python is really good for beginners, so it may be worth looking into. Java can definitely cause some troubles for beginners. Python's syntax results in almost no errors, there is only one way to do a given thing, and the Zen of Python makes it good for beginners in my mind. The Zen of Python gets on my nerves now, but as a beginner I feel like it would be nice. I think it is worth trying out for at least a little bit. The main reason I see is that Java is actually pretty complicated and can cause problems whereas Python will result in less issues. I guess if you know your son would never give up due to difficulty Java is worth starting with, but if your son could get frustrated when dealing with an issue for a really long time Python would be better to start with. I think Python is worth trying out until your son wants to try something more challenging.

Python is a great language. It's well maintained and is capable of almost anything. It's a very real language. He will most definitely learn other programming languages (if he gets into coding) and learning Python as your first isn't bad at all. Python comes built-in with many useful things that other programming langues spend "unnecessary" time on.

The way Python uses indentations as opposed to a lot of other languages using {} brackets (and ;) is a non-issue. Programming isn't about the semantics.

JavaScript isn't something that's widely considered a "real" programming language but I've heard a few success stories of teaching it to young kids as their first language.

I'm all for freedom of opinion and all that but I'm not just stating personal opinions here. There are great efforts around focused on teaching kids computer science and, believe it or not, it's not the same thing as teaching students at a university. Things aren't the same, not even JavaScript, as they were a few years ago.

IMHO it doesn't matter what language you start with. It could be Java -- it will teach you a lot about clean code, documentation, standardized naming and conventions, etc. Or it could be Python, which will teach you a lot about functional programming and give you an entirely different approach to solving common programming problems. Or, it could be JavaScript and HTML, and you can learn to achieve some really wonderfully visual and interactive web content.

If he wants to make games, then Unity3D, LibGDX, or Flash are all good choices.

The best thing to do is encourage him to try many different avenues, and learn many different frameworks.

I picked up Java when I was 12, by modding Minecraft. A few months later I got sick of it and decided to make my own games. I found this site, and lurked for about 6 months, using Google to answer my problems. By the time I actually joined, I had already done networking, and was beginning OpenGL.

If you want to learn anything computer related, learn how to use Google first.

I recommend letting him find a programming language for himself.

Tell him to use Google whenever he has a problem, and see how he goes from there.(Of course help him if he struggles, but the further he can get by himself, the better)

@Python: Is it just me, or does anyone else get the feeling that Python's main selling point is "WE HAZ LESS SYNTAXES!!!"

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

The main question is should I start in Python and use that for a while? Start with Java? Does it matter because it won't be the only language he ever learns? Python doesn't have a lot of jobs out there :0.

I would say let him start learning Python. It's a very friendly language to get into (syntax is closer to natural language than Java), Your kid will spend more time on the fun stuff (i.e making the game) than fixing syntax. As for job hunting, I can see python is getting popular these days. The university I work for just announced all the entry level CS courses will be using python from next year (java was used for the last decade). I guess they will favor hiring tutors with python background then.

I would go for java because it's greatly supported by the community.When I was a teenager I started with assembler because I was/am fascinated by robots. In a nutshell, it was quite pain, but I learned failing.

I am not sure if I got it right, but are you thinking of the later job of your son? He is 11, even if he starts programming when he is an adult everything would be finde. Indeed not everyone has to become a programmer. Social skills are more important. That's no offense, but I don't think that you have to prepare an 11-year old for real life As long as he enjoys programming I would prefer:1. java-2d2. libgdx (it's a great framework)Additionally there are great java-programmable robots out there, they might be to difficult to start with, but you could do it with your son.

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.

100% agree, I recommend you and your kid to read this book: http://www.amazon.com/Beginning-Programming-Dummies-Wallace-Wang/dp/0470088702So 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

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

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'

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.

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.

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.

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.

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

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

I'm all for freedom of opinion and all that but I'm not just stating personal opinions here. There are great efforts around focused on teaching kids computer science and, believe it or not, it's not the same thing as teaching students at a university. Things aren't the same, not even JavaScript, as they were a few years ago.

I have freedom to not agree too 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.)

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!

java-gaming.org is not responsible for the content posted by its members, including references to external websites,
and other references that may or may not have a relation with our primarily
gaming and game production oriented community.
inquiries and complaints can be sent via email to the info‑account of the
company managing the website of java‑gaming.org