The Tunes metatranslator subproject
What is a meta-translator ?
Languages
(Computer) concepts are few; (computer) languages are many
(not to talk about dialects).
Each language stresses particular constructs;
people tend to use languages that offer efficient representations for
some constructs they often need,
when they do not just use the same well-known language as they always do,
because it's the only one they (and the person opposite) know.
In any case, they often have to cope with the deficiencies
of specialized (or just bad) languages
that forbid efficient representation of other constructs.
Translation
To translate from one language into another is to understand the
explicit (=structural,clear-cut,obvious)
and implicit (=background,nuances,ambiguities)
meanings of texts written (or spoken) in the first language,
and render them back as efficiently as possible in the other one,
with as few information creation or loss as possible, and with
proper translator's notes when needed.
Meta-translation
This project will try to provide a meta-translator, that is, some
piece of software that allows design of translators between languages of
the highest level of abstraction. The meta-translator project will also
deal with program manipulators, which are a generalization of translators,
that go from one language to itself, with irreversible or undeterministic
changes in the context or meta-context.
What to translate ?
The meta-translator will be used to compile the HLL into the LLL, to
translate any language (particularly widely used languages like C or LISP)
into our HLL,
and perhaps even to translate
subsets of human "natural" languages into computer languages or other
human languages.
Examples
see the
Sieve of Eratosthene for examples.
.....
To Do on this page
Expand on meta-translation.
Give a pointer to the proper entries in the Review Subproject
give examples of automatic translation of programs.
in particular,
show well-known isomorphisms between programming paradigms, such as
- functional programs/logical proofs (Curry-Howard),
- side-effect programs/functional programs (continuation passing),
- lazy-evaluation/strict evaluation,
- data-stream/code-stream processing,
- factored/inlined code,
- parallel/sequential programming,
- mathematical isomorphisms,
- static/dynamic resource allocation,
- etc.
Back to the Tunes
HLL subproject.
Down into the
C translator subproject.
Subproject maintainer:
Faré
-- rideau@clipper.ens.fr