Graphical Programming Server

This is an experimental offering of a Graphical Programming Server (GPS) that will write computer programs for you.

It is currently UNDER CONSTRUCTION. The user interface is not fancy.

You are free to use the programs that are generated for any legitimate purpose. However, these programs are furnished "as is" and with NO WARRANTY of any kind, expressed or implied, including warranties of merchantability or fitness for any purpose.

In most programming languages, a procedure specifies argument types, and any call to that procedure must use the same types. Therefore, to reuse someone else's procedure, you must understand and conform to their data types.

In our approach, a view describes how your data matches the abstract data used by the system. Generic procedures can be specialized by compilation through the view to yield versions of the programs that operate on your data.

GPS uses inference and type propagation to create the views necessary to make a program out of generic components. The desired program is synthesized, through compilation and partial evaluation, as a Lisp program; then it is translated to another language if the desired language is other than Lisp.

To obtain programs from this Graphical Programming Server, you must:

  1. Describe your data structures.
  2. Describe the program you want by connecting boxes and making menu selections.
The programs are served to you as a file after the demo is finished. You can select the programming language desired (Lisp, C, C++, Java, or Pascal).

The programs that are available are iterative programs that iterate over collections of items and accumulate some aspect of the items. Various accumulators and data structures are available.

You must have the Java virtual machine installed to run this demo; you can get it for Windows (msjavx86.exe) here.

The best things in life are free: this demo uses the free software Gnu Common Lisp (GCL), XGCL, X windows [see also XFree86], Java, and WeirdX, a Java implementation of an X server.

Follow these steps:

  1. Specify your data structures, one at a time, as follows. Click the mouse in the input box, then type in the data description. (The editor is a subset of Emacs.) When done, click the mouse outside the input box to define the data structure.
  2. Click the Make a View command to view your types as abstract types.
  3. Click the Make Programs command to select the program(s) you want.


  1. If needed, edit your display name. It should end in :2.0, for example,
  2. Click to start the demo. Scroll down to see the interaction window.

Gordon S. Novak Jr.