Numerical Methods That Work
Forman S Acton
This is a difficult book to rate, because it is so much an artefact of its time. For about ten years (1973-1983) it was my Bible. Now, in 2023, I'd have to call it virtually useless for the practicing software engineer. That it was reprinted in 1997 by The Mathematical Association of America is a tribute to its classic status in the field. But by 1997 it was, honestly, already obsolete. I have decided to give it five stars as the classic it is, although I don't recommend anyone use it now.
In 1973 I started as a freshman at Cornell University, where I immediately joined a chemistry research lab. I did chemical kinetics research. We needed software to analyze results, and I wrote it. That was the way it worked then -- if you used software, you were more than likely going to write it. (Not everyone -- the other folks in the lab used my software. So I was that 17-year-old computer nerd, though we weren't called that then.)
My copy -- even as an impecunious undergrad I deemed it worthwhile to splash out on a personal copy -- was the 1970 red clothbound edition. The title was, as usual, stamped on the cover and inked in silver -- "Numerical Methods That Work". But if you looked closely you saw that preceding "Work" was stamped the word "Usually", stamped but not inked. Forman S. Acton had a sense of humor. That was appealing. Indeed, the entire book is amusingly tendentious -- as a programmer, Acton had very definite ideas about how to program, and he is not shy about calling people who use computers thoughtlessly fools.
Acton's ideas have not aged well. To Acton computer time and memory were scarce resources, and a programmer who wasted them because of not having given the due amount of thought was scorned. That a computer could be thought of as a labor-saving device meant to save humans unnecessary work barely penetrated his consciousness. That made sense in 1970, when a university might own one -- count 'em, one -- very expensive mainframe IBM computer (far less powerful than the processor in your current phone), used for all campus computing.
By 1973, when I came on the scene, this was changing. LASSP (Laboratory of Atomic and Solid-State Physics) had its own DEC PDP-11/20 minicomputer the size of two refrigerators, and 1 MB removable hard disks the size of a large serving platter, on which I did most of my work. By 1976, when I graduated, microprocessors were becoming a thing, and personal computers (well out of reach of a student for whom buying a personal hardback copy of Numerical Methods that Work was a nontrivial financial decision) were just beginning to become a thing.
In the mid-1990s another thing happened that further obsoleted Acton. "Don't reinvent the wheel" is a universal principle of good engineering -- if someone has solved this problem before, adapt their solution! In 1973, here's how that worked. Suppose I need to solve a system of equations Ax=y, where A is a positive-definite symmetric matrix and x and y are vectors. I looked in Acton and learned that a PD symmetric matrix could be factored by Cholesky decomposition, which he explained, and the equations solved that way. So I wrote a function to do Cholesky decomposition, and called it as part of solving my equations.
I would not do that now. I would look for a free linear algebra library, skim the relevant part of the doco (by far the most difficult step), then call the appropriate library function. For instance, I might use x=scipy.linalg.solve(A, y, assume_a='pos'). Now, it is still important to understand how the library functions do their jobs. But the availability of large, well-written and documented libraries completely changes software development.
So, five stars for this work of faded glory!
Comments
Post a Comment
Add a comment!