Really enjoyed Bill Sconce's Python talk last night...

Erik Price erikprice at mac.com
Thu Jun 26 11:35:20 EDT 2003


 

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>



More information about the gnhlug-discuss mailing list