Hewitt Tech wrote:
> It's been too long since I had the pleasure of hearing Bill Sconce deliver a
> technical presentation.


This was the first Bill Sconce presentation I had ever heard, and it was certainly a 
pleasure.  I look forward to part II, after everyone has had a chance to run through 
the exercises in the worksheet and pick up the basics.  Do your homework and don't 
hesitate to post here if you have a question!


> As an aside, Paul I recommended a book to you last night about object
> oriented programming. The title is "Beginning Java Objects: From Concepts to
> Code" by Jacquie Barker.


I must have left before this recommendation was made but I second it.  I'd also like 
to tell a little story that segues interestingly from the discussion of Python to this 
book.


Sometime in 2001 I decided to make the jump from PHP to J2EE after being dismayed at 
the small number of PHP job offerings I was seeing.  ASP and J2EE were really the only 
two web programming skills in demand, and I wasn't interested in ASP.  Learning a big 
language like Java sounded daunting, esp for a self-taught programmer, but someone 
told me there was a free book online that you could learn Java from ("Thinking in 
Java" by Bruce Eckel, <http://mindview.net/>).


At this same time I was playing with Python in my spare time, subscribed to the Python 
tutor mailing list.[1]  The nice thing about Python was that I was able to pick up the 
most basic concepts of OO very quickly: what is a class, what is an object, how is a 
class different from a function, etc.  With the help of some sample code posted by the 
folks on the tutor mailing list, I finally "got" it, or at least the basics (how to 
create an object and invoke its behaviors).

[1] Highly recommended.  A mailing list dedicated to helping people of any skill level 
learn Python. <http://python.org/psa/MailingLists.html#tutor>


Of course, to get started with J2EE I'd have to first learn Java, so I picked up Bruce 
Eckel's "Thinking in Java" book.  However, after the first few chapters of this 1000+ 
page book, I realized I needed something a little bit more basic before I could really 
continue.


So I picked up Jacquie Barker's book "Beginning Java Objects", which was geared toward 
a complete OO newbie without being overly pedantic -- you still need to know the 
basics of programming (variables, functions, etc).  The book is divided into three 
sections:


1) The terminology of OO - believe it or not, to get the most out of OO programming, 
you really do need to know the terms.  What polymorphism means, why you might want to 
make certain class members private, what is a "class member", the difference between a 
function and a method, and what an abstract class is (even in OO languages like Python 
or Objective-C that don't actually use them).

2) How to design your code using OO concepts, rather than start-to-finish procedural 
concepts.  This section of the book also introduces the reader to UML, which is 
invaluable as a lot of the more advanced OO books use UML to more easily explain 
object relationships.

3) An actual implementation of OO concepts using Java.  Note that, except for a short 
chapter in the beginning of the book, this is the _only_ part of the book that 
actually uses Java.  You can read the first two sections, and maybe skim this one, and 
then happily apply the concepts to Python or other languages.  In fact, you won't 
really learn the Java language from this book, only what you need to know in order to 
get through this chapter.


So, while I had learned the basic idea behind classes and objects from conversations 
on the Python tutor mailing list, it was while reading Barker's book that things 
really fell together for me.  After finishing it I picked up Bruce Eckel's book 
"Thinking in Java" where I had left off and was able to get a lot out of it, and learn 
Java.  A couple months ago I took Sun's exam and became certified as a Java 
programmer, and I'm finishing up my first J2EE application at the place I am currently 
employed.


I pretty much owe it to Barker and Eckel's excellent books.  I even ended up buying 
the hardcopy of "Thinking in Java" about halfway through, it is very good.  But it all 
started when I was using Python[2].  I couldn't agree more with Bill when last night 
he said that there is really no better language to learn the fundamentals of OO 
programming than Python.  Python works just fine as a procedural scripting language 
too -- you can get a lot of work done without being aware of any of the 
object-oriented facilities.  But when you're ready to take it a step farther, Python 
gives you a boost rather than making that step more steep than it has to be.



Erik





[2] To address one of the questions last night, I didn't need to buy a single book to 
learn Python.  There really are dozens of tutorials on learning to program in Python, 
because one of the original aims of Python was to be a good starting language for 
non-programmers.  That's why it has an interactive interpreter -- to promote "play", 
rather than make novices go through the frustration of ensuring that the execute 
permissions or PATH or CLASSPATH is set before they can even run the program.

Of course, as people latched onto Python for more advanced uses, they realized that 
having an interactive interpreter provides a perfect means of debugging.  Define a 
function, then play with it and see what it does.  Define a class, see what happens 
when you pass instances of the class to that function -- the function is still loaded 
into the interpreter's memory.

Once you learn the most basic elements of Python, however, you might want to take it a 
step further.  For this I _do_ recommend one book:  "The Python Cookbook" from 
O'Reilly (<http://www.oreilly.com/catalog/pythoncook/>).  It's just like the excellent 
Perl Cookbook, except that the recipes are solicited from dozens of members of the 
Python community instead of just two people.  Opening sockets, parsing XML, working 
with text, sorting routines, all these are covered in this excellent book.  It's 
already come in handy in a real world situation:  <http://tinyurl.com/fc1c>
_______________________________________________
gnhlug-discuss mailing list
[EMAIL PROTECTED]
http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss

Reply via email to