Deitel and Deitel Book...
James T. Dennis
jadestar at idiom.com
Thu Mar 14 20:50:55 EST 2002
Dean Goodmanson <ponderor at lycos.com> wrote:
>> I wonder how much interest there would be in a revival?
>> Dinu
> YES!
> I've found Python to be an excellent learning environment for personal
> development in software engineering and computer science.
> Especially since the advent of
> href="http://www.mindview.net/Books/TIPython"
> Bruce Eckel's _Thinking in Python_
> and
> http://vig.pearsoned.com/store/product/0,,store-562_banner-0_isbn-0130409561,00.html"
> Thomas Christopher's _Python Programming Patterns_
> Best Regards,
> Dean
Christopher's book has almost nothing to do with "Patterns." While the
"patterns" community is somewhat vague about the definition of "design patterns"
Christopher employs a definition that's so nebulous as to be completely
meaningless? It's sort of like saying "Chair: anything that could be sat upon,
and the act of sitting, standing, or being, or anyone that sits, stands or
is" (as in the chair of the meeting sat on the lawn, which was her chair).
It's sort of like that, except that Mr. Christopher isn't nearly so clear
or definitive on the topic of patterns.
In a twenty chapter book he devotes one specifically to patterns. He lists
twenty patterns that roughly correspond to most of the GoF patterns; but he
doesn't ennumerate them so the reader who is familiar with the seminal GoF
volume is left to wonder which three GoF design patterns were silently omitted,
or to wonder if some were merged in some way. Mr. Christopher doesn't describe
alternatives or controversies in the patterns (such as Martelli's "Borg" vs. the
GoF "Singleton")
However, the worst failing of this book is that it doesn't include cogent code
examples. It seems to be floor clippings from scripts or small programs that
he's used in his projects. The points under discussion in the running text are
not isolated or highlighted in the code listings and the examples have little
pedegogical value.
One of his examples implements a priority queue by treating a list as a "heap"
(his term); his example takes over 50 lines of code and he doesn't clearly show
sample usage of this class. After awhile I abandonned my pondering of his code
and wrote my own from scratch (as a dictionary of queues with a list of the
keys to sort into priority order). I won't argue that mine code was better
than his (since I didn't understand his code and I didn't have a clear API to
emulate). However my code only took about 25 lines to implement, allowed me
to have arbitrary priority designations (integers, reals, letters, anything
sequence that was comparable and "sortable") and should have been pretty
fast and lightweight (though I didn't rigorously profile it). The API I
offered for mine was a superset of what I saw in his, adding items to a queue
automatically created new queues as necessary (or could optionally raise an
exception if one set an instance flag); empty queues are automatically removed
from the dictionary and keylists; call ".next()" (with no specific priority)
gets the first item in the "highest priority" queue); "highest priority" could
be set at instantiation --- increasing or reverse sort/lexical order; etc.
(The point is that his code example was confusing and long; and it would seem
to be unnecessarily so if a mere student such as myself can produce something
shorter, simpler and with roughly similar functionality. If his example
offered some functional advantage that I could not discern, it suggests that
it was not a good example or that it lacked supporting exposition in the
accompanying text).
In short I disliked this book. None of the code examples even approached the
claim of "enterprise ready" that was proudly touted on the cover. These were
examples of "programming in the small" rather than "in the large."
(It did have one saving grace: the chapter or so on threading was clear and
concise. I can't assure you that it was either comprehensive or entirely
correct --- but it was a very good introduction to concurrency problems and to
Python's elegant and simple threading support).
More information about the Python-list
mailing list