| |
An ongoing research issue concerns the
integration of declarative specification styles into programming
languages. Declarative programming has been most successful in
modelling transformational processes, as witnessed by "pure" logic and
functional programming. Nevertheless, any comprehensive programming
model must address not only transformational, but also reactive
aspects of systems, like interaction, concurrency and mobility.
The integration of such aspects into declarative programming
languages has often been made by "disjoint sum" of
features. Consequently, the interaction between the various aspects,
whose design took place in altogether different settings, must be
carefully analysed, since their joint consistency cannot automatically
be taken for granted. Another approach consists in making use of some
foundational calculus and developing high-level languages on top of
it. This is the case of ML, based on the typed lambda
calculus. Likewise, the pi-calculus [M99] has recently motivated
several interactive programming languages that unify aspects of OO and
functional programming with concurrency and mobility [P98,L99].
Moreover, some connections between the pi-calculus and proof-search in
linear logic can motivate even more encompassing models, integrating
action and deduction. Along this lines, the candidate PI for
this project introduced [C96] and studied [C98,C99] LPI, which
is a core programming calculus that unifies, in a uniform and tightly
coupled way, the deduction-oriented computational model with a
pi-calculus-like model of interaction. Despite its simplicity and
uniformity, LPI is very expressive. Besides integrating logic
programming and interactive computation (on which functional and OOP
can be embedded as idioms [M99]) in a natural way, the LPI model
separates transformational localized computations from global
interactive ones, unlike other declarative concurrent programming
languages. LPI expressions define interacting agents, which perform
encapsulated transformational computations inside elementary
steps. LPI programs are built from a few constructs: "messages",
"commands", and "definitions", which are combined by concurrent
composition and name restriction. Expressiveness of LPI results
essentially from a generalised prefix construction available in
commands and definitions, that combines multiway pattern matching and
encapsulated search. This project focuses on the design and
implementation of a concrete programming language based on the LPI
model. The main motivation for LPI is not just to define an expressive
specification formalism, but also to develop a real programming and
coordination language. Such an effort is a requirement for a practical
evaluation and dissemination of the LPI model. A reasonably efficient
implementation is a goal to attain: one has reasons to believe that
the structured nature of LPI computations will be a major
simplification factor, when compared with languages that require
global propagation of constraints. Moreover, since abuse of idioms
tends to weaken the readability of programs, some effort must also be
placed in the conception of appropriate high-level programming
language constructs, fundamentally in what concerns multi-paradigm
programming. It is expected that the development and analysis of LPI
programs will support the forthcoming design issues. |