The Higher Object Programming System

HOPS is a graphically interactive program development and program transformation system based on term graphs.

HOPS is intended as:

These pages provide:

The homepage of HOPS is http://www.cas.mcmaster.ca/~kahl/HOPS/.

HOPS Introduction

HOPS is a program development and program transformation environment that is radically based on term graphs at the user interface. The current implementation is in fact a literate programming system for term-graph programming with quasi-WYSIWIG document interaction.

Programming in HOPS is unusual in several respects. While most users will be used to see their programs as texts, in HOPS programs are made up of term graphs. These term graphs are of course closely related to the terms that are encoded in the textual representation of conventional programs, but the visual appearance is radically different. In term graphs, the structure is exposed in an extremely explicit manner, and interaction is guided very directly by this structure. HOPS supports the program development process structurally by making impossible what would be syntax errors and type errors in conventional systems. This system support, and the graphical immediacy of program structure, can, with some experience, lead to a much higher confidence and a much lower error rate during the program development process.

Putting it into the terms of conventional programming environments, the ``editor'' in HOPS also includes an ``interpreter'', the interactive transformation system. This possibility to apply single rules or transformation strategies at any point during editing has several advantages. One advantage is of course that experimenting with the program under development, simulating parts of the execution even while not everything is defined, can lead to a better understanding of this program and to earlier discovery of eventual errors. Another advantage, which may be even more important in the long run, is that the possibility to try different equivalent versions of each part of the program. This can make it easier to follow a coherent style, and to find and apply new abstractions as they appear appropriate during development.

HOPS has its beginnings in the mid-eighties of the twentieth century, when work on it was started in a small group led by Gunther Schmidt. Different prototypes have been implemented since then.

The current implementation is based on the thorough investigation of the foundations of second-order term graph rewriting that forms the basis of the transformation system of HOPS.

The traditional strengths of the HOPS approach are realised in this implementation:

Besides, new features include:

Wolfram Kahl