The R+D Group MIST
(MultI-paradigm Software Technology)
(GENeric programming: Tools, Languages and Environments)
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
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
Techniques and tools for generic
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.
Definition of a framework for the development of domain-specific
languages embedded in Curry, preserving the principles
of generic programming: modularity, code reuse, adaptability,
Design and implementation of a domain-specific language for the
specification, simulation and verification of reconfigurable
Application to hardware design and verification.
Development of powerful environments integrating the developed tools