Open Declarative Systems: A Multi-Paradigm Approach

There is little evidence that current purely declarative systems are commercially attractive. Whether or not they can become attractive in the future, it is necessary to start from where we are. Arguments that "one last push" on compiler technology or language design will make the difference are unconvincing.

The need is rather for interim solutions allowing exploitation of declarative systems alongside conventional, established tools and techniques. Meanwhile, continuing research into declarative solutions may provide effective purely declarative systems for niche application areas, or may show that declarative techniques can coexist happily with traditional methods.

Coexistence: Multi-paradigm systems

There is a tendency to develop complete systems which make too many internal assumptions about data representation and evaluation order. Systems should be engineered to allow integration with other systems supporting both declarative and non-declarative paradigms: systems should be able to embed and interface to other systems; systems should tolerate being invoked from other systems.

Systems must therefore relinquish the idea of total control of space management, data representation, and other attributes. In particular, control of evaluation must become very flexible, with a range of evaluation strategies being tolerated.

Research into multi-paradigm languages combining declarative and non-declarative styles is valuable. The aim is not to find the ideal language to replace all others, but to allow seamless access to a range of styles in one program, separate modules using whatever model is most appropriate.

Applications and Algorithms

A stream of applications research is needed, focussing on applications with a significant declarative core, but certainly not insisting that declarative techniques are used for the complete system. If "open" declarative systems are available an increasingly large element of applications can be made declarative in stages. Development of key algorithms in declarative notations will be required.

Theory

Substantial theoretical work is required to underpin carrying of foreign values and handling of state and side effect in a declarative context. Abstract analysis will be required to ensure correctness when handling state and for optimisation during compilation.

Work will be required on integration of computation models, with special reference to evaluation strategies. In particular, the interaction between lazy evaluation and both logic and concurrent programming does not seem straightforward.


John Glauert / jrwg@sys.uea.ac.uk