mac@uvacs.UUCP (09/15/83)
I find Gries's use of "Flaw Chart" annoyingly cute. The fact that someone could take it seriously shows how clumsily the joke was handled. As far as the title the book fails to advance Knuth's "Art" of programming to a "Science". He does give good guidance for doing detail coding, but coming up with the basic structure of a program (e.g. loop, subroutine, conditional) seems as much of a black art as ever. Incidentally, I found the brief section on program layout the first that I've agreed with. Worth reading, but I found Dijkstra's book better. It was less ambitious, if not humble. By the way, I found all these (DO p->s [] p->s ... OD) loops inside-out. The most important property of a loop for these folks is the termination condition, which is left unstated! Instead, whenever there's nothing further to do the loop stops. The only way to strengthen the postcondition is to loosen the looping conditions. This leads to the OD notion that robust programs are those that don't terminate. Better to have explicit termination conditions. Having several of them is also useful. Think of tail-recursion. See Hehner's article "DO Considered OD" in Acta Inf. many years ago, and Parnas's article in the latest CACM A. Colvin