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.

Reply via email to