Dismiss
InnovationQ will be updated on Sunday, Oct. 22, from 10am ET - noon. You may experience brief service interruptions during that time.
Browse Prior Art Database

TOWARDS a PROGRAMMING APPRENTICE

IP.com Disclosure Number: IPCOM000128143D
Original Publication Date: 1975-Jan-01
Included in the Prior Art Database: 2005-Sep-15

Publishing Venue

Software Patent Institute

Related People

Hewitt, Carl: AUTHOR [+4]

Abstract

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 expert programmers in the following kinds of activities: Establishing and maintaining consistency of specifications Validating that modules meet their specifications Answering questions about dependencies between modules Analyzing implications of perturbations in modules 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 to 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.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 3% of the total text.

Page 1 of 43

THIS DOCUMENT IS AN APPROXIMATE REPRESENTATION OF THE ORIGINAL.

TOWARDS a PROGRAMMING APPRENTICE

Carl Hewitt

Brian Smith

Artificial Intelligence Laboratory

Massachusetts Institute of Technology Working Papers are informal papers intended for internal use.

Towards a Programming Apprentice [ title ]

Carl Hewitt

Brian Smith

Abstract

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 expert programmers in the following kinds of activities:

Establishing and maintaining consistency of specifications Validating that modules meet their specifications Answering questions about dependencies between modules Analyzing implications of perturbations in modules 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 to 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.

Introduction

MIT A.I. Laboratory Page 1 Jan 01, 1975

Page 2 of 43

TOWARDS a PROGRAMMING APPRENTICE

A tenet of the apprentice project is that programming is a multi-level activity: as well as writing code, programmers communicate in terms of comments and models. Programmers develop and are given specifications for a model of what they want to compute. Code is an embodiment of that model. Comments are an attempt to elucidate the relationship between the model and the code. Our goal is to elucidate and formalize some of these interactions. The first level of description we have attacked is the level of abstract descriptions of what programs do, rather than how they do it. The contracts and intentions discussed in this paper are an attempt to embody this kind of knowledge in a format and yet intuitive and useful way. A process known as meta-evaluation1 is presented which can justify that a program fulfills its contract. Further res...