On Mon, Jul 13, 2009 at 3:37 PM, Daniel Herrington <[email protected]>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 _______________________________________________ PLUG mailing list [email protected] http://lists.pdxlinux.org/mailman/listinfo/plug
