MIME-Version: 1.0 Server: CERN/3.0 Date: Tuesday, 07-Jan-97 15:26:45 GMT Content-Type: text/html Content-Length: 2299 Last-Modified: Thursday, 24-Aug-95 17:14:56 GMT
Automatic Programming is defined as the synthesis of a program from a specification. If automatic programming is to be useful, the specification must be smaller and easier to write than the program would be if written in a conventional programming language.
Our approach to automatic programming is based on reuse of generic algorithms through views. A generic algorithm performs some task, such as sorting a linked list of records, based on abstract descriptions of the data on which the program operates. A view describes how actual application data correspond to the abstract data as used in the generic algorithm. Given a view, a generic algorithm can be specialized by a compilation process to produce a version of the algorithm that performs the algorithm directly on the application data.
Graphical user interfaces make it easy for the user to create views of the application data. Given a view, any of the library algorithms defined for that view can be specialized to work with the application data. Specialized programs can be produced in multiple languages (currently Lisp and C) from a single copy of the generic algorithms.
A related system allows a program to be specified graphically by connecting diagrams that represent data, physical laws, and mathematical models.
On-line demonstrations of these programs are avialable below.
CS 395T: Automatic Programming