RegisterLog In/Log OutView Cart
O'Reilly Frankly Speaking Ron's VB Forum
BooksSafari BookshelfConferencesO'Reilly NetworkO'Reilly GearLearning Lab
 


Traveling to
a tech show?

Hotel Search
Hotel Discounts
Discount Hotels
Chicago Hotels
Canada Hotels
California Hotels
Hotels




Date: May 11 2000
From: Ron Arnett
To: Frankly Speaking
Subject: Learning Programming

I have been trying to locate a copy of Learning Python by Mark Lutz. The local bookstores have been unable to get it for weeks now. One online bookstore indicated delivery usually within 24 hours. Another said 3 to 5 weeks. My concern was that if I ordered from the purported overnight delivery and they actually were as out of stock as everybody else, then I would be locked in to a long wait since I would have already paid for the delivery. So I decided to go to the O'Reilly Web site as they are the publishers to see if there were any clues if the book really was available.

Imagine my surprise to see the publisher's column saying that not only is Learning Python not really suitable for beginning level programmers, nor any of the other books put out by O'Reilly, but it's his opinion there is no such book period and there may never be.

Like millions of users I am becoming concerned about the security of my computer. Virtually every commentator on computer security says that if I want to get serious about it I should really understand programming principles. They also say that the best way to understand such material is to learn to actually program. Many recommend Python for a number of reasons that I won't go into here. These reasons are especially compelling for non-programmers like myself.

The Web site discussion seems to say that if I want to learn how to race sports cars or drive 18 wheelers down the highway, I should first take a defensive driving course. Of course, one should actually know how to drive if you want to get the benefit of defensive driving. The learning programming discussion seems to feel that there is no genuine learning to drive course available and the defensive driving course must take its students from those people who have run farm tractors, bicycles and snow mobiles etc. and who are backing into operating a motor vehicle.

Surely, there must be a market that publishers want to fulfill that consists of people who want to learn programming in a systematic, focused way. As for using Designing with JavaScript as a way to get started, I tell everybody to turn off JavaScript as much as they can for security reasons. Understand, I'm not saying it would be easy to go after that market but it's hard to believe that there are very few of us. I believe that Sams is coming out with Learn Python in 24 Hours which I hope will be directed to novices.

Since O'Reilly publishes Learning Python and Python is held out as a beginning type language, it would be nice if a warning was included in the advertising and placed on the cover that this particular book is not actually for beginners and really is intended for those who already know how to program.

Thank you,

Ron Arnett


Dear Ron:

Thanks for your thoughtful letter to Ask Tim. I've volunteered to reply because I'm the editor of Learning Python and I'm also very interested in the questions your letter raises.

First, let me address the issue of the book's availability. I can't imagine why you had such difficulty finding a bookstore with stock on hand. When I did a quick check on the Web, I found it in stock at the first five bookstores I checked: Amazon, Softpro, Wordsworth, Quantum Books, and Fatbrain.

Let me assure you that it is still in print and will remain in print. It is selling quite well, due in no small part to the growth of interest in Python from people like yourself. I'd be very grateful if you'd let me know, rivately, which bookstores could not deliver copies immediately. There may have been a temporary distribution problem or some other explicable event; but I'd like to investigate the problem a little more. If our books aren't on the shelves when our customers want to buy them, we're concerned.

Nevertheless, your story illustrates the importance of our ability to sell our own books from our Web site. It's conceivable (although not the case with Learning Python, of course) that we will want to publish a book that we think is important, but bookstores don't want to stock. Being able to provide our own fulfillment allows us to do that. We can be, as we were in your case, the bookseller of last resort for our books. That's one of the reasons that we tend to keep books in print longer than other publishers do.

As for the larger question of whether our books are suitable for learning how to program: I was first going to contradict what "the publisher" said in his article, but then I noticed that he was quoting me. I quickly changed my strategy.

It is true: with Learning Python, as with Learning Perl, we don't attempt to teach people to program; we teach people who already know how to program about these new languages. In your letter, you use a driving metaphor; let me use a language metaphor. When a student takes a foreign language in school, the teacher and the textbook assume the student already has a native language. Similarly, our Learning books assume the reader already knows how to program in a language and is interested in learning the characteristics of the new language.

We take this approach because our readers tend to be computer professionals. They look for books that speak to them at their level, books that don't tell them a lot of information that they already know. The best example of this approach, and one of our best-selling books of all time, is Java in a Nutshell. This book provides a short introduction to Java that assumes that the reader is a computer professional who probably already knows C or C++ (and probably both). The bulk of the book is a terse but clear and complete reference. A large readership loves this book for using this approach. They don't want to read about inheritance and operator overloading; they know what those terms mean, and they simply want to know how Java handles them.

(As for Teach Yourself Python in 24 Hours: it appears to have been recently published and is available. I haven't read it yet, but I know the author, Ivan Van Laningham, from a presentation he made at a Python Conference. He's very knowledgable, well-respected by his Python peers, and an engaging speaker, so it may well be a good introduction. But if it attempts to teach you Python and programming in the same 24 hours, it has the wrong title: it should be called The Longest Day.)


Note: We tried to link directly to Teach Yourself Python in 24 Hours, but Sams' Website does not allow for direct linking to catalog pages.


We know that there are lots of people who want to learn how to program. (I happen to believe, not surprisingly, that Python is a good language for people who want to learn programming. Today, in our Cambridge office, an O'Reilly editor is launching a 10-session Introduction to Programming class for 18 non-programming employees. He's using Python.) We don't yet offer much in the way of books for them.

Books for beginners tend to fall into one of the following categories:

  • Textbooks. Many people learn programming by taking a class. Some schools use Learning Python, Learning Perl, and Exploring Java (soon to be re-released as Learning Java) in their classes, but standard textbooks, written by professors, are more common. In Editorial, we've begun to look at what it takes to write books that can be used as textbooks, but it's not yet a major business for us.

  • Watered-down introductions. I have always found such books to be the least satisfying technical books. These books tend to take a jocular and friendly tone, but they still need to convey technical information; so they often bounce between homely metaphors and highly technical concepts. The tone of the book is, "See, this is easy," but the content says, "Whoa, this is hard."

  • Application-focused books. This is the kind of book Tim was talking about when he described how people "back in" to programming. As he noted, Designing with JavaScript uses this technique. It tells people how to use certain scripts to accomplish certain tasks on their Web page, and tells the readers, parenthetically, the programming concept they're using. It describes associative arrays, for example, in the context of displaying formatted dates. Some people have used CGI Programming on the World Wide Web in the same way. (Though this book is currently out of print, we have made it available online. A second edition, titled CGI Programming with Perl, will release this summer.)

    Because of the intense interest in using CGI, people learned enough Perl to accomplish CGI tasks. There are many people, including me, who believe that lots of people will "back in" to learning Python because of their desire to use Zope, a leading open source web application server. Given sufficient motivation, people don't even need a book; I interviewed a high school student who wanted to know PHP so much that he didn't even care that there were no good books on that technology. He learned the language from the online examples.

We at O'Reilly are always interested in publishing application-focused books. They are specific and can be sufficiently meaty that our readers want to read them. We haven't done much in the textbook area, but we will. And we'll never intentionally publish a watered-down introduction.

We are making some changes, however, to accommodate serious potential O'Reilly readers like you. In the second edition of Learning Perl, for example, we took out a lot of the references to Perl similarities with C. We no longer consider it sufficient to say, "This Perl feature works just as it does in C." I've spoken with the editor of the third edition, now underway, and she tells me that it is her goal and the goal of the author, Randal Schwartz, to make the third edition more accessible to people whose background doesn't include formal programming languages. We know that there are a lot of people who have good reasons for learning Perl but who don't consider themselves programmers. The Web has created a great number of such readers, and we want Learning Perl to work for them.

We are also looking into writing a book that teaches programming, using Python as the instructional language. This won't be a book for learning Python, although readers will clearly learn a lot of Python. It will be a book for learning about programming, especially object-oriented programming. Frank Stajano from Cambridge University gave a great talk at the January Python Conference about the expressive possibilities of programming. That's the spirit we hope to capture in our book.

In the meantime, you might want to look at the freely available materials for learning Python. Check out the Introductions to Python page of the official Python site. There is a lot of interesting material there.


You can learn more about Python and other programming languages at the O'Reilly Open Source Software Convention, July 17-20, 2000 in Monterey, California.


Good luck to you. I'm sorry we can't be of more help right now. You might want to look at the sample chapters on our Web site from Learning Python. If its coverage and tone seem accessible to you (remember, they are two of the later chapters in the book), you might want to look at the table of contents also. You could then page through a copy at a local bookstore (if they've finally gotten the book in stock!). You might find that you have the motivation and sufficient technical background to find Learning Python a good book for you. Just don't settle for a watered-down introduction if you can handle more.

Thanks again,

Frank Willison

Return to: Frankly Speaking



O'Reilly Home | Privacy Policy

© 2007 O'Reilly Media, Inc.
Website: | Customer Service: | Book issues:

All trademarks and registered trademarks appearing on oreilly.com are the property of their respective owners.