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

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.

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.