17 comments

[ 5.9 ms ] story [ 50.0 ms ] thread
We banned sending kids up chimnies, we banned sending them down into the mines, but we missed the gross evil of rotting their brains with java. Just two dollars a day can help rescue these kids from a life in eclipse or netbeans and show them a world outside. Donate today - some poor souls are already on their first proxyFactoryImplementation classes and need your help right now!
> In my original book for kids I used the Eclipse IDE, but for the new book I’ve chosen IntelliJ IDEA Community Edition, which is also available for free.

I think there is a fundamental problem with learning your language if your choice in IDE is a real factor in your learning.

> But no worries, kids won’t need to learn to write FXML manually - they just drag and drop UI controls on a canvas and Scene Builder generates the FXML.

Are you really teaching them programming at this point?

The provided example jumps wildly from really basic things (and inaccurate imagery: http://www.infoq.com/resource/articles/Teaching-Kids-Java/en...). Inheritance is glossed over even though it's probably one of the most important concepts in Java next to interfaces. I spot one paragraph trying to define six vocabulary words and in the very next paragraph you're talking about memory models.

You finish up the first excerpt with a really poor analogy about manufacturing computer games.

The second excerpt is almost entirely about things that aren't really programming.

I popped open the edits and in chapter 10 you actually tell kids to go to StackOverflow if they have problems. This is definitely a book about Java, but I see very little programming.

I don't know why they don't just use Netbeans. It is so easy to use and it already comes bundled with the JDK if you want.
If java had a program notion, that'd help a lot.

  class MyMain {
    public static void main(String[] args) {
       System.out.println( "Hello World" )
    }
  }
How many unnecessary concepts are there between the beginner and something interesting happening? I count at least six...
You can explain every piece of that scaffolding to a 12 year old in about half an hour and then they never really have to think about it again.
How many of those 12 year olds tune you out in that half of an hour? I guarantee that if it took me a half hour of professional instruction, I would not have been programming at 12 years old (I was, in Python).
Well my sample size is 1, but if I extrapolate irresponsibly, all of them.
First programming language should be simple but not simpler. Java/C/C# has too many complexities to be first programming language for 12 years old, IMO, and carries a risk to actually turn away kids from programming. It's like teaching them how gravity works with equations involving calculus. Why do you even need a "class" keyword to create a simple program to sum first 100 numbers? You want to remove everything from a language until just bare minimum Turing complete syntax is left. Also curly braces needs to go to keep things simple.

From this perspective nothing beats BASIC. Python may come distant second. Some people have advocated Scheme but I'm not too sure because there is a quite a bit of friction involved as tasks become more complex. I'm also not in favor of drag-and-drop so called "visual" programming languages. It is extremely important to learn composibility and currently nothing seems to be better medium than text to express it. Gifted kids sure will have no problem learning programming from whatever language you give them but our goal should be eliminate as much technological friction as possible to make programming accessible to any kid who wants to learn it.

I think Processing (https://processing.org/) is a great choice for first time programmers.
Processing is fantastic, and it was easy to segue from processing to Eclipse in just a few lessons (it's about 20 lines of code)
I would say javascript is by far the best, not because of the language itself, but because it lets them work and modify something they're already using a lot : the web and a browser.

A close second could be swift for the same reason ( and also because you can start smoothly with just drag n dropping on a storyboard, then slowly add dynamic behavior with code).

>From this perspective nothing beats BASIC.

From what I've seen by teaching my kids to program, Logo has Basic beat. And it is not just for kids, I've been consistently impressed by the number of great books I've been reading which have incidentally used Logo.

Turtle Geometry: The Computer as a Medium for Exploring Mathematics

Exploring Language with Logo

Mindstorms

I tutor high school kids, and I've been charged with the weighty responsibility of teaching them Java in often-missed weekly 45 minute lessons. I'm not sure if it's what I'd choose for a first language, for a number of reasons. But the AP Computer Science test still uses Java (for now) and that's what I've been told to teach to.

I think any IDE more complicated than Dr. Java is too much of a learning curve for a high schooler, who's already struggling with their first language. This guy, expecting kids to learn all these libraries and use IntelliJ right off the bat... has he ever actually taught kids?

I learned to program using Visual Basic 6. In general, MS's IDE's tend to be much more intuitive for beginners as they have better and less leaky abstractions.
Visual Basic is still the best. Winforms is much more intuitive than JavaFX. Teach them vba first so they can actually use programming for automating their lives before moving on to VB.Net. If possible, skip the OOP crap entirely and teach them to use modules instead. They only need to know the bare basics of OOP e.g. The concept of "self" etc. Teaching them the benefits of lambada early on would be very useful. Now if only clojure/Go had a better IDE and GUI designer...