[Tutor] specific recommendation for a Python book, to move from baby-level to intermediate-level
alan.gauld at btinternet.com
Wed Feb 15 10:28:30 CET 2012
On 15/02/12 02:16, Tamar Osher wrote:
> I am hoping to find a professionally designed, serious, university level
> book (with exercises, with a learning disc, and answers, and an
> elaborately helpful website) that will carefully and surely guide me
> through learning computer programming with Python version 3. I want to
> be lifted up from a baby-level to an intermediate level.
I don;t know about a CD etc but its a good book:
Programming in Python 3 by Summerfield.
And as a general intermediate book I like
Programming Python by Lutz (not in v3 yet but as an
intermediate programmer that won't make any difference
to you, your past worrying about that)
> I don't want to spend a lot of time casually browsing through the
> websites, trying out different things.
A pity, its the best way to learn.
> I am in a rush to become a Python expert, I need a job!
Go write lots of code.
> I enjoy computer programming. Python is my only programming language.
To get and keep a job you will need more than one.
As a minimum you will probably need SQL and nowadays
language would be useful too. As a minimum.
> A note to Python Teachers:
> I downloaded Python version 3.2.2 on my computer. Most Python books and
> tutorials are several years old, for older, outdated versions.
Yes, because to produce them takes a lot of time. And most online
tutorials are done by volunteers with another lifew - the one that earns
them money. So they can't write tutorials as fast as the language
evolves. Or they only have time to write a tutorial once, not to update
it. The good news is that Python is fairly stable and most things still
work even from version 1.
> learning Python got off to a slow start: Initially, I had spent over a
> week trying to figure out the (version 2) tutorial for "Hello, World!",
> and the print/print() situation.
Really? If you had asked here. or even read the v3 documentation you
would have had print() explained in great detail.
> Today, there is a huge and growing number of online Python tutorials and
> websites. My request is that the list of recommended tutorials be
> revised and updated. There is a sizable amount of learning and tutorial
> info at Python.org that seems to be valuable historical information
> rather than urgent-read-now-tutorials for new beginning programmers.
Remember that many - most? - professional Python programmers are still
using Python v2 not v3. There are still some critical third party
libraries to be ported to v3. It is getting better but we are not there
yet. At the very least they are maintaining v2 code. I use both versions
but only about 20-25% of my time is spent in v3. v2 is not only of
"historical" interest, its what the majority of Python code is written
in, even today.
> instance, there are some very well written Python tutorials from years
> 2009, 2007, and 2005. An idea: Delete all references to tutorials that
> are not version 2 or 3.
v1 Python is possibly a valid point. But most v1 tutorials are still
valid in v2, there was much less change from v1 to v2.
> And clearly label all the well-written version 2 tutorials, as
> being outdated version 2.
Who determines what is "well written"? And if a tutorial is based on
v2.7 is it really outdated?
> For me, learning computer programming is easy, so far.
That's good, so you will have realized that the language, and especially
the language version is largely irrelevant. What is important is
structure, algorithm, data and I/O.
> What is difficult is ...learning how to manage the
> difference between version 3.2.2 and older versions.
No, that's trivially easy. If you think that's difficult then you
haven't begun to understand computer science. I strongly suggest you
search for and read the classic paper by Fred Brooks called "No silver
There he describes the "essential" problems at the heart of programming
and why there are no easy answers. Languages included.
> For someone new to programming, the difference between version 3.2.2
> and the older versions is enormous.
I agree and thats why I still tend to recommend a newcomer stick to v2
for now. There are more tutorials and they are more mature and there are
more practitioners using it than v3. All of which makes it easier to get
answers for v2 than for v3. The situation is changing but v3 is not
> please let me know. I want to quickly move myself from a baby-level to a
> capable, intermediate-level Python programmer.
It depends on your expectations but the quickest way to get competent in
any programming language is through use. Once you have written several
tens of thousands of lines of code you will be well on your way. But
that will take quite a few months and that may not align with your
Reading books will teach you the theory (but for that you would be
better off reading books like The Structure and Interpretation of
Computer Programs (aka SICP) by Sussman and How to Design Programs
(HTDP). But both are in Scheme not Python. But they will transform your
understanding of how programs work. And if you really want to understand
the theory find books on relational data theory, state automata theory,
algorithm development, and Lambda calculus.
Then finally you might want to look at some of the books on system
design, especially as you get involved in bigger projects. Its hard to
organise code over several hundred files unless you have an underlying
architecture and that needs to be based on good design principles more
than good coding principles.
But none of that is essential to becoming a working programmer, just get
out and write lots of code for real world problems.
Author of the Learn to Program web site
More information about the Tutor