Classification problem-solving in the domain of automatic programming
V. Wingate, Fernando Gomez · 1989
Classification problem solving is a methodology for constructing knowledge-based systems, which we have applied to the task of program synthesis in the domain of automatic programming. However, an automatic programming system must embody not only a methodology for program synthesis, but also a formalism whereby problems may be specified by the user. Therefore, the TQ specification language has been designed as a formalism for specifying programming problems, not programs, by end users. To demonstrate the feasibility and potential of our approach, we have designed and implemented a prototype system called TOAD, which consists of a graphical user interface and an English generator for TQ and a problem solver based on classification problem solving. The problem solver contains two modules: a planner which constructs algorithms from the TQ specifications and a code generator which produces dBASE programs from the algorithms. Code generators could also be built for other high-level languages, such as COBOL or Ada. In addition to verifying the system's ability to generate programs for several different types of problems, we have conducted an informal experiment with naive users to test TQ and the user interface. All of the subjects were able to correctly specify one or more problems from our sample set. In contrast with previous efforts in automatic programming, our approach is intended particularly for end users, who can use TQ to describe problems rather than having to specify programs to solve those problems. Most importantly program synthesis is completely automatic; the planner and code generator are able to construct procedural programs entirely from non-procedural specifications.