Is it bad to start with Python and then move the Java?

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.

Just wanted opinions.

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 :wink: 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.

Have a look at these:


wXBVFW08eEs

https://www.khanacademy.org/cs/1-welcome-to-codecanvas/882454257

Ah yes, I find using indentation for code flow instead of braces very good for beginners, as it will ensure he doesn’t start off using a horrible, unreadable style.

Can’t find any point to agree with that.

Back to topic, it’s no matter from what lang you come from. It all is just about syntax and environment. But yeah, you may have little problem if you come from BF or whitespace.

[quote=“ReBirth,post:6,topic:43515”]
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.

Did you just read the title and skip the actual OP? :wink:

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. :point:

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!!!”

[quote]My son (11) wants to make 2D games.
[/quote]
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 :slight_smile:

[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.
[/quote]
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 :slight_smile:
As long as he enjoys programming I would prefer:

  1. java-2d
  2. 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. :wink:

[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 :slight_smile:
[/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.