[PLUG] Java book

Jason Dagit dagitj at gmail.com
Tue Jul 14 03:24:47 UTC 2009


On Mon, Jul 13, 2009 at 3:37 PM, Daniel Herrington <herda05 at gmail.com>wrote:

> All,
>
> I'm embarking on a voyage of discovery with Java and I'm looking into
> picking up a couple of books. Does anybody have some good suggestions from
> what they've read/used? I've been exposed to OO programming through PHP and
> Perl. Also and web resources and mailing lists would be helpful as well.


The best way that I've found to learn any language is to embark on making a
compiler or interpreter for the language, preferably in the language.

If you don't have a lot of university level comp. sci. classes under your
belt it can be an intimidating undertaking.  But in a lot of ways that's
because people think compiler construction starts with parsers and moves on
to abstract syntax trees followed by code generation.  In reality, you can
get the knowledge of how the language works by skipping the parser and the
code generation.

Try this approach:
* Read up on the language, whatever resource you like that covers the
language in depth is fine.  This serves to give you a background on what the
language is like and how it works at a high level.

* Build data types and classes to represent expressions in the language.
The representation doesn't have to be 100% correct or complete, just close
enough that you get a feel for how to represent it.  This is an opportunity
to learn also how people structure data types and programs in your
language.  Find a mailing list for users of your language and share your
code with them and ask for feedback.

* Write classes/functions/etc that act on your data types and evaluate them
the way the language is supposed to be evaluated.  This teaches how and why
the language works the way it does.  You can do this without knowing
anything about code generation or compiling to bytecode.

If you do the above things, you'll walk away with a fairly deep
understanding of the language.  And the more time you spend getting
feedback, the faster you'll learn and the more wisdom you can build on from
experts.

Next step is probably to read/debug other people's code.  Someone else here
recommended reading the Google Collection's list and I think that's great
advice too.

Just remember:  You don't have to finish this project, nor do you really
need to spend time on the boring parts.  Just the parts that help you
understand the language and how people typically solve problems when using
it.

Good luck,
Jason



More information about the PLUG mailing list