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. .....

Object-Oriented and Functional Programming

"Object-Oriented Programming" and "Functional Programming" are currently dominant programming "Paradigms". OOP is very faddy, and most people use it without really understanding what it is about; confusion is king in the OOP world. FP, though it is not free from fads, is a much more seriously studied and understood paradigm.
OOP and FP can be typed, which corresponds to OO classes and functional types, or there may be no differentiation of types between objects (besides their observational behavior) (see SELF and LISP).
In OOP, you send messages.... Note that in both cases, computations can be pure or impure (with or without side-effects).
In advanced OOP, methods are dispatched not only according to their first arguments, but to all their arguments. Likely, in advanced FP, functions take more than one argument, and are dispatched according to all these.


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

  • Back to the Tunes HLL subproject.
  • Down into the C translator subproject.


    Subproject maintainer:
    Faré -- rideau@clipper.ens.fr