Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Automatic correction and improvement of programs
Wertz H., Halsted Press, New York, NY, 1987. Type: Book (9789780470207642)
Date Reviewed: Dec 1 1987

The title of this book is deceptive. The book does not address the problem of program correctness (i.e., verification) but rather validation. It is not concerned with improving programs--except in the author’s own interpretation of this terminology. This amounts to improving an invalid program into one that is valid and “well-formed.” It is not applicable, as it stands, to programs in general but to a special subclass of LISP programs.

The Preface, however, is more informative, suggesting, rightly, that the prospective reader should have a knowledge of LISP and, also, that the text embodies an introduction to advanced programming in LISP. This introduction to advanced LISP is implicit and questionable.

However all is not lost. This is an English translation of the 1985 French text Intelligence artificielle: application à l’analyse de programmes. Had the title been faithfully translated, with an additional qualification indicating that only LISP programs were considered, the title and the actual contents would be more closely matched. The author is very conscious that his notion of correctness differs from that in common usage since it intentionally makes no reference to a specification, and he feels the need to reiterate his position on numerous occasions. To him, a “correct” program is syntactically valid, is type consistent, terminates, contains no redundant code, and obeys certain “pragmatic rules” based on “good program formation.”

The book is really an extended description of a system called Phaenarete (&PHgr; for short]), which acts as an automatic programming adviser, making (and applying) proposals by which a given incorrect program may be modified into a correct one. Application of these proposals effects the (only) kind of improvement cited in the title. &PHgr; has already evolved through several versions and is still under development. This text describes the state of &PHgr; as it presumably was in 1985. Of the nine proper chapters of the book, only Chapters 3 through 5 deal in detail with &PHgr;. The earlier chapters are introductory and the later ones are given over to comparisons, a discussion of future work, and unannotated examples of &PHgr; processing.

As the system runs, it augments its “specialists” and “pragmatic rules” with “cognitive atoms” abstracted from the program text, which is called a draft. The specialists represent syntactic and semantic information of the LISP subset; the pragmatic rules relate to matters such as loop and recursion convergence. The cognitive atoms are knowledge-representation structures that together constitute a semantic net. A “meta-evaluation” procedure then tries to make appropriate modifications to the cognitive atoms in order that, when they are assembled together, they satisfy the pragmatic rules. How all this fits together is illustrated in Chapter 5 with a detailed description of how &PHgr; improves a simple LISP function having eight errors.

While there is undoubtedly very relevant work underpinning the material presented, it is difficult to see who will benefit from this text. The material is certainly within the realm of AI, but it will not be new to AI researchers or specialists, and I doubt that it will find a sufficiently large audience among novice students of AI. On the other hand, its infatuation with LISP takes it well away from mainstream computer science. In fairness, other languages are mentioned, en passant, and the simplicity of LISP syntax makes it a suitable subject for correction (à la Wertz), but much, if not all, of the initial phase of &PHgr; could be achieved by applying appropriate compiling techniques. On the other hand, some of the errors that &PHgr; removes are characteristic of LISP and are not typically found elsewhere--“:0ULots of :0UIrrelevant and :0USilly :0UParentheses” echoes from the annals of declarative programming.

Maybe the aims of and the audience for the original French edition were more clearly identified, but, unfortunately, I cannot see who will buy this version. For what it is worth, there are few typographical errors and the layout is clear, from the compositional if not the intellectual point of view.

Reviewer:  D. J. Cooke Review #: CR111797
Bookmark and Share
 
Debugging Aids (D.2.5 ... )
 
 
Error Handling And Recovery (D.2.5 ... )
 
 
Representation Languages (I.2.4 ... )
 
 
Representations (Procedural And Rule-Based) (I.2.4 ... )
 
Would you recommend this review?
yes
no
Other reviews under "Debugging Aids": Date
Application debugging: an MVS ABEND handbook for COBOL, ASSEMBLY, PL/I, and FORTRAN programmers
Binder R., Prentice-Hall, Inc., Upper Saddle River, NJ, 1985. Type: Book (9789780130393487)
Aug 1 1985
A portable high-level database debugger and software performance monitor
Jankowitz H., Kilfoil P., Rabkin I., Schach S. Software--Practice & Experience 15(6): 523-538, 1985. Type: Article
Jun 1 1986
What are race conditions?
Netzer R., Miller B. ACM Letters on Programming Languages and Systems 1(1): 74-88, 1992. Type: Article
Sep 1 1993
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy