Hello Cay and Gary. Welcome to the JavaRanch. Thank you for visiting us.
I learned Java by studying Core Java I & II. This prepared me for The Java Programming Language by Arnold, Gosling and Holmes, which prepared me for the JLS.
For two semesters I read the class notes and worked the homework assignments posted online for CS151 (OO Design), which Cay teaches at San Jose State University. Then I studied Cay�s OO Design and Patterns (which teaches OO concepts using examples written in Java).
I would highly recommend this path to anyone else learning Java.
---- Cay, I have a question for you that is not about Core Java I & II. Maybe we could say it is about Why Java and Why not Lisp or Scheme or ML?
By accident, I wandered into the world of Scheme: SICP (Abelson etc.), EOPL (Friedman etc.), HtDP (Felleisen etc.), comp.lang.scheme. Is it important for practicing programmers (in contrast to computer science researchers) to learn functional programming and a language such as Scheme or ML? Will this help us to be better programmers?
Is the lambda calculus something everyday programmers should learn?
---- I hope this book promotion for Core Java will help to make more people aware of your very helpful books for learning Java.
Best Regards, Marlene Miller [ November 18, 2004: Message edited by: Marlene Miller ]
Should every programmer learn Lisp and the lambda calculus? A few years ago, this would have been a very unpopular idea. But this may have changed. Much to my surprise, I recently ran across a blog where Martin Fowler, the author of UML Distilled, discussed closures and why they are important. I was blown away. When my Lisp friends mentioned closures in technical discussions, that was considered a dirty word, something only the functional freaks would care about. But Fowler is as mainstream as you can be. Then I found out that one of the Scheme interpreters for Java was written by a "director of search" at Google. And one of the open source muckymucks has a blog on how they used Lisp for some web project and obliterated the competition because continuations are a great way of solving the inversion of control that is inherent in web apps.
Personally, I think that everyone who really loves computer science should try to learn topics that bend their mind. Even if it has no practical significance at the time. I am lucky that my job forces me to do this. Right now, I am learning Prolog because I have to teach it in a programming language class. It is very cool and very weird. I have a great time with it, even though I don't think I'll ever use it for anything. But that's what I thought about context-free grammars as a grad student, and then I saw how I could use JavaCC to build some powerful source code manipulation tools, 20 years later.
I realize that many people in the computer industry don't have the luxury of exploring new stuff all the time. If you have a death march project at work and family obligations at home, then it can be tough. But if you have any time at all, I think it makes a lot of sense to learn about something that seems totally unrelated to your work. Expanding your mind by learning the lambda calculus may have more payback than reading through yet another mind-numbing JSR.
PS. for the other JavaRanchers...Marlene is far too modest--she has not just read my books, but she has found more embarrassing errors than all the other reviewers combined. She also did a great job reviewing Dan Chisholm's certification book that I mentioned earlier.
Congratulations on passing the SCJD (10 days ago).
I thought I was quiet as a mouse on the SCJD forum. I don't say much because I don't have much to say. I am still learning from Andrew's terrific posts. How did you know I was slacking off? Okay, back to the SCJD assignment, where I belong.
I stopped by this forum to say hello to Cay.
Regards, Marlene [ November 18, 2004: Message edited by: Marlene Miller ]