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