Fantastic. It's the 'duh!' language I ALWAYS name when someone asks me
where they should start.
Java is a _horrible_ 'my first programming language':
* You need to sprinkle a boatload of magic pixie dust over your source
before it works (that would be 'public class X { public static void
main(String[] args) { .... }}' and even 'System.out'). If you try and
explain this right from the start you're going to spend 5 weeks explaining
things with the programmer-to-be not writing a single line. If you know
anything about didactics you know this is a very bad way to teach things.
(You really gonna tell your student about 'out' being a public static field
on the System class? Really? I didn't think so. I sure hope not. Would be
very confusing!)
* Even if you accept the magic pixie dust as given, it's very discouraging
because you lack that feeling of 'I know how this works now'. You keep
thinking: I know a few things but I can't really grok even 'Hello, World'
because who the heck knows what all this magic pixie dust is for?
* Java is very much not designed for first steps. It lacks useful shortcuts
('new BufferedReader(new InputStreamReader(new FileInputStream("foo.txt"),
"UTF-8")) is great, fantastic even, in a serious project, but really quite
the drag if you're just trying to play around.
* REPLs are pointless in real life (go away, Kevin), the java IDEs have
debuggers that can do everything a REPL does for serious work and more...
EXCEPT for first steps programming language, for the same reason: It's
perfectly feasible for me to tell some programming whinging about a lack of
a REPL for java to go spend a week or two becoming an ace at the eclipse
debugger and then reapply for the job, or whatnot. It's completely
inappropriate to tell a first-steps student to try to make heads or tails
of one.
A thing or two for this could be fixed by creating a custom environment
(BlueJ tries this, more or less), but then it's not really 'real java', and
you get that feeling of 'I don't REALLY know anything yet', which is very
detrimental to learning.
Contrast this to javascript, which is more or less simple, and you get
instant and immediate payoff. You get a fantastic REPL (load up a webpage,
hit the 'patch jquery into this thing' bookmarklet, then open up the webkit
console and go nuts), everybody has everything they need to just start out
(a webbrowser), and the payoff of "I'm making real, life, useful stuff and
I just started learning this stuff 3 days ago!" is palpable.
Really - this, or logo. Any other choice, including python, is stupid, IMO.
--
You received this message because you are subscribed to the Google Groups "The
Java Posse" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/javaposse/-/E0MhSRQUvaIJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/javaposse?hl=en.