> Java is extremely monolithic: in order to understand how to run a simple Hello World program, you’ll be exposed to:
> – Classes
> – Java packages
> – Static vs. instance methods
> – Source files vs. compiled classes
> – Editing vs. Execution
> – Using a compiler or an IDE
> – Method return types and method parameter types
> – The magic (for newbies) that is “System.out.println()”
For a while I was content to go along with the [BlueJ](http://www.bluej.org) “[objects first](http://www.bluej.org/objects-first/)” approach which seeks to hide some of these details behind a graphical user interface. But having observed the experiences of students who find it difficult when they need to graduate from the “training wheels” of interactive objects on the screen to raw unadorned, *textual*, Java code, I’ve been having doubts. Howard himself advocates [ruby](http://www.ruby-lang.org/en/), and interestingly the [inform](http://inform-fiction.org/I7/Welcome.html) language (that seems to be designed for creating virtual worlds). This year, I am supervising a student project evaluating [python](http://www.python.org/) so expect more on this topic.
Powered by [ScribeFire](http://scribefire.com/).