skip to main content
10.1145/87912acmotherbooksBook PagePublication PagesBookacm-pubtype
Skip header Section
The programmer's apprenticeSeptember 1990
Publisher:
  • Association for Computing Machinery
  • New York
  • NY
  • United States
ISBN:978-0-201-52425-3
Published:01 September 1990
Pages:
238
Skip Bibliometrics Section
Bibliometrics
Contributors
  • Worcester Polytechnic Institute
  • Mitsubishi Electric Research Laboratories

Recommendations

Reviews

Joel D. Aron

The ACM Press Frontier series is meant to present material at the leading edge of computer science and practice. This, indeed, is what the authors do. They describe their long-term project at MIT to build an intelligent computer system that can assist a human programmer at all stages of a programming job, from requirements planning through implementation and testing. Their purpose is to go beyond canned programs, fill-in-the-blanks applications, and CASE toolkits. In the sense of a chief programmer team, their “apprentice” assists the chief programmer by doing detailed programming, managing the project files, documenting the product, suggesting techniques, validating the chief's work, and even second-guessing the chief's intent in some cases. The hallmark of this apprentice is intelligence. This intelligence is achieved through formal techniques (as in computational linguistics), generalized software engineering concepts and methods (called cliche´s), logical reasoning (artificial intelligence), and rules for combining all the elements. Because the project is a continuing activity, the book describes the work to date. This description consists of the underlying formal structure and the demonstration level of an apprentice that can help with program implementation. Using simple examples, the authors show how the apprentice can go beyond most current programming aids in helping a systems programmer. (Their presentation is short and clear; details are available in the extensive bibliography.) If all the project objectives can be met, the result will be an important contribution to programmer productivity, program maintainability, and program and code reusability. The timing of a report on work in progress is critical. Report too soon and you may raise unrealistic expectations. Wait too long and you risk losing the interest of the people who can contribute to or use the results. This book may be too early: the project can be demonstrated only with small, if not trivial, examples. Problems of scale and performance cannot be probed effectively with the demonstration packages. Therefore, it is not clear what will happen when the apprentice is involved with massive programs or projects with many programmers. In a demo, the apprentice knows most of the problem in advance and can resolve the remainder with locally available information. In a large project, unresolved issues may snowball without even alerting individual programmers that a problem exists. If the apprentice cannot cope on a large scale, its value to a chief programmer will be reduced. The research to date does not predict how the apprentice will scale up, but the authors convey their confidence that the project is designed to address the issue successfully. A successful apprentice will still be hard to sell; even if the computerized apprentice is bootstrapped on the research prototypes, the product will be expensive. The chief programmers who use the apprentice will have to be academically trained to use cliche´s. (In the book, LISP is used in the examples and the reader is assumed to be at ease with list structures and expressions. Typical cliche´s involve list head and tail procedures.) Thousands of cliche´s will be provided eventually; the programmer will have to know most of them to be efficient. Many programmers, particularly application programmers, will find it easier to use standardized program packages than to qualify as chief programmers . That still leaves a considerable number of software engineers working on unique, complex systems who would be helped substantially by an intelligent assistant like the Programmer's Apprentice. They should keep their eyes on this research project.

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.