Good books in computer science?

Scott David Daniels Scott.Daniels at Acm.Org
Mon Jun 22 15:14:10 EDT 2009

Chris Jones wrote:
> .... Maybe I'm nitpicking, but the one thing I don't understand is how you
> practice programming. 
> The term makes obvious sense when you're talking about your golf swing,
> acquiring competitive driving skills, playing tetris.. 
> But programming..?? 

It is practice in the same way as learning to write well requires
practice.  Writing good code is a writing skill, as well as a
precision of thought exercise.  The basics of Computer Science are
well-covered in TAOCP Volumes 1-5 (not all yet available in stores :-).
You _must know data structures and fundamental algorithms, but after
that what you write is a way of expressing clearly what you learn in a
field.  The field may be as narrow as "the field of Ink-Jet Printer
automated testing for models XXX through XYZ of manufacturer Z," but
in some sense the programs should clearly expr4ess that knowledge.

If you read books on learning to write clearly, even if they are
oriented to (non-fiction) writing in English, none of them advocate
intensive study of a theory with little practice.  You can follow
the advice in those books (with a "loose" interpretation of the
instructions) and improve your code.  What the best teach you is
be succinct, clear, unambiguous, and try new things regularly.  It
is only this variation that can help you get better.

Read what others write about how to write code, but remember you
will have your own style.  Take what others write about how to code
as a cook does a recipe: you should be understand what is being
attempted, try it the authors way to see what new might surprise you,
and carry away only what you find you can incorporate into your
own process.  How we pull stuff from our brains is as varied as the
brains themselves.  We bring a host of experiences to our writing,
and we should similarly bring that to the programs we write.

--Scott David Daniels
Scott.Daniels at Acm.Org

More information about the Python-list mailing list