Issue No.01 - March (1975 vol.1)
Brian Smith , Artificial Intelligence Laboratory, Massachusetts Institute of Technology, Cambridge, Mass. 02139
The PLANNER Project is constructing a programming apprentice to assist in knowledge based programming. We would like to provide an environment which has substantial knowledge of the semantic domain for which the programs are being written, and knowledge of the purposes that the programs are supposed to satisfy. Further, we would like to make it easy for the programmer to communicate the knowledge about the program to the apprentice. The apprentice is to aid expertprogrammers in the following kinds of activities: 1) establishing and maintaining consistency of specifications; 2) validating that modules meet their specifications; 3) answering questions about dependencies between modules; 4) analyzing implications of perturbations in modules; and 5) analyzing implications of perturbations in specifications. We use contracts (procedural specifications) to express what is supposed to be accomplished as opposed to how it is supposed to be done. The idea is that at least two procedures should be written for each module in a system. One procedure implements a method for accomplishing a desired transformation and the other can check that the transformation has in fact been accomplished. The programming apprentice is designed for interactive use by expert programmers in the meta-evaluation of implementations in the context of their contracts and background knowledge. Meta-evaluation produces a justification which makes explicit exactly how the module depends on the contracts of other modules and on the background knowledge. The justification is used in answering questions on the behavioral dependencies between modules and in analyzing the implications of perturbations in specifications and/or implementation.
Contracts, Plasmas, Programming, Syntactics, Pattern matching, Computational modeling, Educational institutions
Brian Smith, "Towards a programming apprentice", IEEE Transactions on Software Engineering, vol.1, no. 1, pp. 26-45, March 1975, doi:10.1109/TSE.1975.6312818