 |
Description
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.
|
 |