The R+D Group MIST
(MultI-paradigm Software Technology)
Project GENTLE
(GENeric programming: Tools, Languages and Environments)
Summary
The main goal of this project is to develop new tools, languages and
environments that provide automated support to the specification,
monitoring, manipulation, and optimization of software systems with a
rigorous formal basis. Clearly, the declarative programming paradigm
offers an excelent framework to tackle these goals. However, it also
suffers from several drawbacks that compromise its practical
applicability: it is not adaptable to changing requirements, it is
difficult to use for non-experts and, generally, it does not scale up
well to "real" problems. In order to overcome these shortcomings, our
project focuses on generic declarative
programming, considering the multi-paradigm language Curry as a
reference framework. To be precise, the aims of the project are as
follows:
Definition of the necessary extensions to allow
generic programming in Curry;
Development of generic tools either
for Curry (monitoring, slicing, profiling, etc) and for other
languages (basically, XML and Java);
Apply the generic
programming principles to the design of embbeded specification
languages and their associated tools;
Last, but not least
important, the integration of all previous developments in robust and
powerful programming environments.
KEY WORDS: Declarative multi-paradigm programming, generic
programming, the language Curry, embedded specification languages,
tools and environments.
Goals of the project
Generic programming in Curry
Definition of a lightweight approach to generic programming
in Curry (with no extension of the type system)
Extension of the type system of Curry in order to allow the
definition of polytypic functions
Other approaches
Techniques and tools for generic
programming
Definition of "basic" generic functions: parsing, traversal
of data structures, pretty-printing, object equality, etc.
Design of generic tools for Curry in Curry: analysis, tracing,
slicing, profiling, etc.
Design of generic tools for other languages (mainly XML and Java):
compression, refactoring, etc.
Domain-specific languages
Definition of a framework for the development of domain-specific
languages embedded in Curry, preserving the principles
of generic programming: modularity, code reuse, adaptability,
scalability, etc.
Design and implementation of a domain-specific language for the
specification, simulation and verification of reconfigurable
Petri nets.
Application to hardware design and verification.
Environments
Development of powerful environments integrating the developed tools
and languages.