Books I'd like to see

D

Dave Benjamin

David Mertz
Functional Programming in Python
Using the Xoltar Toolkit

Steve Holden
Python Web Services

Alex Martelli
Metaprogramming in Python

Guido van Rossum
My secret addiction to comp.lang.python
A biography

Tim Peters
The Python Philosophy

Eric S Raymond
Python for the Working Hacker

Gerson Kurz
Designing Obfuscated Languages
With Python Parser/Generators

Tim Peters and Doug Bagley
The Zen of Computer Programming

Bill Venners
Selected Interviews
 
S

Scott Chapman

<rant?>
I'd like to see a good introduction to Python for brand new programmers
that starts with Python's object orientation (at least as the
assumption, if not explicitly dealing with objects at the beginning).

I've looked over every book on the market and the Net that is
introductory to Python and none of them emphasize Python's uniqueness
and power. It is not possible to rightly understand Python without
understanding that virtually everything except the keywords are
objects. This is the year 2003 and books are still introducing
Structured Programming paradigms and then re-teaching by introducing
Object Oriented later. This is Wrong! :)

Guido's Tutorial probably comes the closest. He assumes objects under
the hood in his presentation of the material, rather than trying to
make Python fit into the old molds. If it had a full set of exercises
it would be a good starting text, perhaps needing some fleshing out in
areas.

Maybe one of the existing books out has exercises at the end of the
chapters; another shortcoming IMHO.
</rant>
 
N

Nick Vargish

I would like to see "wxPython Programming" from Grayson, John E.

His book on tkinter is pretty darn good, but I'm much more interested
in wxWindows. I find the need to look up the C++ wxWindows
documentation and do a translation to the Python equivalent really
gets in my way of learning how to use the widgets properly.

Nick
 
B

Bryan

Nick said:
I would like to see "wxPython Programming" from Grayson, John E.

His book on tkinter is pretty darn good, but I'm much more interested
in wxWindows. I find the need to look up the C++ wxWindows
documentation and do a translation to the Python equivalent really
gets in my way of learning how to use the widgets properly.

Nick

i 2nd this

bryan
 
M

Michele Simionato

Scott Chapman said:
<rant?>
I'd like to see a good introduction to Python for brand new programmers
that starts with Python's object orientation (at least as the
assumption, if not explicitly dealing with objects at the beginning).

I've looked over every book on the market and the Net that is
introductory to Python and none of them emphasize Python's uniqueness
and power. It is not possible to rightly understand Python without
understanding that virtually everything except the keywords are
objects. This is the year 2003 and books are still introducing
Structured Programming paradigms and then re-teaching by introducing
Object Oriented later. This is Wrong! :)

Guido's Tutorial probably comes the closest. He assumes objects under
the hood in his presentation of the material, rather than trying to
make Python fit into the old molds. If it had a full set of exercises
it would be a good starting text, perhaps needing some fleshing out in
areas.

Maybe one of the existing books out has exercises at the end of the
chapters; another shortcoming IMHO.
</rant>

But Python is designed in such a way that a lot of it can be taught
without talking about objects. Yes, you are right that in its heart
it is very strongly object oriented (maybe even more than Java or Ruby),
but NOT on the surface. This is on purpose and I think it is a good
thing (for teaching purposes and for other reasons too). I would welcome
a metaprogramming/advanced OOP book by the Martellibot, but this would NOT
be a book for beginners.
Actually I was confused by the tutorial that you liked so much, since
when I first read it I knew nothing about OOP. I don't think talking
immediately about OOP would be helpful for a total beginner. On the
other hand, if you already knew OOP from another language, then you
are an experienced enough programmer and you can learn Python from
the Nutshell, isn't it?

Michele Simionato
 
A

Alex Martelli

Michele Simionato wrote:
...
But Python is designed in such a way that a lot of it can be taught
without talking about objects. Yes, you are right that in its heart
it is very strongly object oriented (maybe even more than Java or Ruby),

I don't know about "more than Ruby" -- Ruby's pretty thoroughly OO, too.
I'd call it a wash.
but NOT on the surface. This is on purpose and I think it is a good
thing (for teaching purposes and for other reasons too). I would welcome

To teach people coming from other procedural languages, yes. To teach
total beginners, I dunno; Smalltalk (arguably even more OO than Ruby or
Python, as even 'if' is not a statement but a message sent to a boolean
object for example) was in part designed to teach children. I'm not sure
how I would go about starting out with OO, but it's presumably a respectable
theory. Are there books based on that theory for any language, btw?
a metaprogramming/advanced OOP book by the Martellibot, but this would NOT
be a book for beginners.

If it had "advanced" in the title it sure wouldn't:).
Actually I was confused by the tutorial that you liked so much, since
when I first read it I knew nothing about OOP. I don't think talking
immediately about OOP would be helpful for a total beginner. On the

I don't think Guido's tutorial is oriented to total beginners at all.
other hand, if you already knew OOP from another language, then you
are an experienced enough programmer and you can learn Python from
the Nutshell, isn't it?

But the Nutshell only gets into OO _after_ it has covered functions, flow
control, etc; it doesn't _start_ from OO, which is the original poster's
request.


Alex
 
A

Anand Pillai

You forgot the following.

1. Wesley Chun ( or is it Alex Chun ?)

Core Python Programming

2. David Mertz

Text Processing in Python.

I would like to see a general book on
"Software development using Python", which will discuss
the practitioner's approach to developing software
using python, by one of the established methods.

May be this can be taken up as a joint project by
one of the python gurus say Alex or David, and one of those
Software Engineering/Methodology gurus like Martin Fowler
or Bruce Eckel.

Just my $0.02.

-Anand
 
A

Anand Pillai

Oh, you were listing books that were *not* in
the market. I got it the other way round ;-)

Anyway, my argument for "Sofware development
in Python" holds.

regards

-Anand
 
D

Dave Benjamin

Michele Simionato wrote:
...

I don't know about "more than Ruby" -- Ruby's pretty thoroughly OO, too.
I'd call it a wash.

Ruby certainly claims to be more OO (and if Smalltalk is your definition of
OO, it's a logical conclusion). Of course, everyone has a different
definition of what OO really is. Including Alan Kay. =)
If it had "advanced" in the title it sure wouldn't:).

This reminds me of a book I purchased last year called "Macromedia Flash MX
ActionScripting: Advanced Training from the Source". Given that title,
wouldn't you expect advanced concepts in ActionScript to be covered? Think
again - it's advanced *training*. In other words, it's the training that's
advanced, not the subject matter. Needless to say, I felt pretty shafted. ;)
But the Nutshell only gets into OO _after_ it has covered functions, flow
control, etc; it doesn't _start_ from OO, which is the original poster's
request.

Was this a conscious decision? If so, what were your motivations behind
procedural-first vs. objects-first?
 
R

rzed

I'd love to see a book (or series) on small-office systems based on Python:
database interfacing, order-entry, printing and reporting, graphic display,
communications -- with examples of how to use Python as the glue language it
is often said to be, as well as how to use it in its role as a powerful
processing language.

And I'd like to jump on Nick Vargish's bandwagon as well. I love
wxPython/wxWindows, but jeez, the documentation is terrible!
 
A

Aahz

I'd like to see a good introduction to Python for brand new programmers
that starts with Python's object orientation (at least as the
assumption, if not explicitly dealing with objects at the beginning).

I've looked over every book on the market and the Net that is
introductory to Python and none of them emphasize Python's uniqueness
and power. It is not possible to rightly understand Python without
understanding that virtually everything except the keywords are
objects. This is the year 2003 and books are still introducing
Structured Programming paradigms and then re-teaching by introducing
Object Oriented later. This is Wrong! :)

Hmmmm.... Could you give a bit of detail about what kind of approach
would work? Without adding mental clutter to the explanations? I was
thinking about this a bit, and I find it difficult to explain even what
an object *is* without some prior background in computers and
programming. There's also the issue that Python methods are functions,
so it's necessary to cover functions and modules before classes.
 
A

Alex Martelli

Dave said:
Ruby certainly claims to be more OO (and if Smalltalk is your definition
of OO, it's a logical conclusion). Of course, everyone has a different
definition of what OO really is. Including Alan Kay. =)

I'm familiar with Ruby's claims, but, as methods/functions aren't really
first-class objects there, I don't necessarily buy into them.

Was this a conscious decision? If so, what were your motivations behind
procedural-first vs. objects-first?

You can productively use Python without understanding nor using 'class'.

Sure, you'll be defining and using objects all the time, but that's much
like Monsieur Jourdain's "speaking prose for over forty years" without
knowing he was doing so... not necessarily an issue. On the other hand,
functions and flow control (and other minutiae:) _are_ indispensable, so,
there would be nothing truly gained by introducing 'class' before them.


Alex
 
A

Andrew Dalke

Alex:
I'm familiar with Ruby's claims, but, as methods/functions aren't really
first-class objects there, I don't necessarily buy into them.

The claim, as I understand it, is that the method notation

qwerty.abc(1,2,3);

sends the 'abc' message to 'qwerty', and they don't go along with
Python's approach that 'qwerty.abc' gets the method 'abc'. Instead,
they say there's another way to ask for the method object,

theMethod = qwerty.method("abc")
theMethod.call(1,2,3)

What makes that not a first class object?

Andrew
(e-mail address removed)
 
D

Dave Benjamin

I'm familiar with Ruby's claims, but, as methods/functions aren't really
first-class objects there, I don't necessarily buy into them.

Well, they are, sort of:

irb(main):005:0> 'hello, '.concat('world')
=> "hello, world"
irb(main):006:0> say_hello_to = 'hello, '.method:)concat)
=> #<Method: String#concat>
irb(main):008:0> say_hello_to.call('world')
=> "hello, world"

However:

irb(main):007:0> say_hello_to('world')
NoMethodError: undefined method say_hello_to' for main:Object

Does not work as you would expect it to in Python. So, basically, a method
is a first class object, because it's a method object, which is an object
just like any other. But a method is not a function, because it's not
directly callable. Functions don't really exist in Ruby; everything is a
method of some object.

So, I suppose it's not surprising that you have to use a "call" method to
call a method object, though I'd sincerely prefer the ability to use
operator overloading on () to eliminate this.

In Python, the same code could be written like this:
'hello, world'

Because of Python's simpler syntax for creating and calling method objects,
it provides a more seamless integration of functional/procedural and OOP. On
the other hand, directly callable objects are more like functions (or
closures) than objects, by Alan Kay's definition of objects as entities that
respond to messages (one of which potentially being "call").

One might argue that Ruby is more object-oriented in this respect.

I think it's mostly a syntax issue, but at least for me, Python's method
object syntax is more intuitive and its usefulness is more obvious. Even if
both languages accomplish essentially the same result, Python seems more
consistent in this regard.
You can productively use Python without understanding nor using 'class'.

Sure, you'll be defining and using objects all the time, but that's much
like Monsieur Jourdain's "speaking prose for over forty years" without
knowing he was doing so... not necessarily an issue. On the other hand,
functions and flow control (and other minutiae:) _are_ indispensable, so,
there would be nothing truly gained by introducing 'class' before them.

Seems reasonable to me. It doesn't make much sense to teach the creation of
classes before the creation of functions (since you'd need to know how to
build a function anyway), but a diehard OOP fan would argue that this is
merely the result of the fact that our current languages insist on using
procedures "under the hood" to define objects, though procedures aren't
really part of the definition of an object. How would you make an object
without procedures? I don't really know, but then, I was taught procedural
first before I was taught OOP, so I'm corrupted like the rest of us. ;)

Still, there are other proponents of "objects first"... I dug up this thread
last week, which is what prompted me to ask you about your motives:

http://lists.bluej.org/pipermail/bluej-discuss/2002-June/001218.html

Cheers,
Dave
 
P

Paul Clinch

One more for your list:-

Python Essential reference _Updated to Python 2.3_ by David Beazley

Regards, Paul Clinch
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,170
Messages
2,570,925
Members
47,466
Latest member
DrusillaYa

Latest Threads

Top