[comp.software-eng] Software Handbooks

UH2@PSUVM.BITNET (Lee Sailer) (02/17/88)

I said a while ago that programmers do not seem to use ``handbooks''
as much as hardware engineers, and this distinguished programming from
engineering.  I received the interesting post attached below,
suggesting that Gonnet's Handbook of Algorithms was such a book.

It seems to me that Knuth's books could qualify, except that they are
tough going for the average programmer (I certainly find them difficult).
I sometimes find undergrad texts like Sedgewick's Algorithm's useful,
and years ago I used to steal a lot from Newman and Sproull's
graphics book.

So--what book's do you keep next to your terminal for ready reference
when you need to write a code fragment that you know has been done
a thousand times before?


Lee
Received: from cayuga.cs.rochester.edu by VM.CC.ROCHESTER.EDU ; 12 Feb 88
 03:57:42 EST
Received: by cayuga.cs.rochester.edu (5.52/h) id AA11222; Fri, 12 Feb 88
 03:59:42 EST
Received: by rigel.cs.rochester.edu (3.2/h) id AA16258; Fri, 12 Feb 88 03:59:35
 EST
Date: Fri, 12 Feb 88 03:59:35 EST
From: stuart@cs.rochester.edu
Message-Id: <8802120859.AA16258@rigel.cs.rochester.edu>
To: uh2%psuvm@vm.cc.rochester.edu
X-To: ur-tut!sunybcs!boulder!hao!gatech!ukma!psuvm.bitnet!uh2
Subject: Re: Is it Art or is it Engineering (Clarifications)
References: <6879@agate.BERKELEY.EDU> <4618@teddy.UUCP>
 <635@cresswell.quintus.UUCP> <4620@teddy.UUCP> <32637UH2@PSUVM>

Such things exist, for example:

  Gaston H. Gonnet
  Handbook of Algorithms and Data Structures
  Addison-Wesley -- International Computer Science Series
  Reading, Massachusetts, 1984
  ISBN 0-201-14218-X

This book covers sequential search, sorted array (binary) search,
hashing, recursive structure (tree) search, multidimensional search,
sorting arrays, sorting other data structurs, merging, external
sorting, priority queues, k-th element selection, basic arithmetic,
special arithmetic, matrix multiplication, and polynomial evaluation.
Many of these topics have lots of alternative approaches, with
different advantages and disadvantages.  For example, Gonnet gives
seven different methods for maintaining priority queues.

In addition for formal analyses and empirical studies to satisfy the
real engineer as to the appropriateness of a given solution to a given
problem, the various algorithms are given in Pascal and/or C for the
programmer who just wants to hack up a solution and doesn't care.

So, you just have to look around.  Of course, you have to understand
that an engineer (software or otherwise) is expected to know when to
apply various tools and that may involve some substantial analysis of
the problem under attack.  That skill comes from training;  it's not
something you can just pull out of a handbook.

Stu Friedberg  {ames,cmcl2,rutgers}!rochester!stuart  stuart@cs.rochester.edu