Ein Funktor ist ein parametrisiertes Programm-Modul, d.h. eine Funktion, die Module als Argumente nimmt und ein Modul als sein
Ergebnis erzeugt. Wir entwickeln ein generisches Übersetzungssystem für die Konstruktion von mathematischen Software-Bibliotheken mit
hohen Leistungsansprüchen in wissenschaftlichen und technischen Anwendungsbereichen. Das System weist die folgenden Eigenschaften auf:
1. Es basiert auf einer mächtigen Funktor-Sprache.
2. Es handelt sich um eine offene Bibliothek, die auf jede Zielsprache zugeschnitten werden kann.
3. Es löst Instanzierungen von Funktoren zur Übersetzungszeit auf.
Die Funktorsprache ist ausdruckssstark genug, um alle Typen und Typ-Konstrukturen selbst zu bauen ohne auf die Kernsprache zurückzugreifen (Maximierung der Flexibilität) und um alle
Interaktionen zwischen Modulen durch Parameterisierung auszudrücken (Maximierung der Wiederverwendbarkeit). Durch Instanzierung zur
Übersetzungszeit verursacht die Generizität keinen zusätzlichen Ausführungsaufwand; durch die automatisierte gemeinsame Verwendung
instanzierten Codes von alle Benutzern wird eine Explosion der Bibliotheksgrößen vermieden.
Sprache der Kurzfassung:
Deutsch
Englische Bezeichnung:
HPGP - High-Performance Generic Programming
Englische Kurzfassung:
A functor is a parameterized program module i.e. a function that takes modules as arguments and returns a module as its result. We are
developing a generic compilation system for the construction of high-performance mathematical software libraries for scientific and
technical application domains. This system has the following features:
1.It is based on a powerful functor language.
2.It is an open library that can be retargeted to any core language.
3.It is able to resolve functor instantiation at compile-time.
The functor language is expressive enough to build all types and type constructors without referring to the core language (thus maximizing
flexibility) and to express all interactions between modules by parameterization (thus maximizing reusability). By compile-time
instantiation, genericity does not cause any execution overhead; by automatically sharing instantiated code among all users, an explosion
of library sizes is avoided.