[comp.lang.misc] ANDF and abstract machines

ericco@ssl.berkeley.edu (Eric C. Olson) (01/17/91)

I recently read an article that mentioned ANDF (Architecture Neutral
Data Format) as an intermediate language.  The idea is that it has a
representation that is difficult to reverse engineer (back into source
code), but which can be compiled into machine dependent instruction.
Is this feasible?  If so, any references to ANDF or any other similiar
compilable intermediate languages would be appreciated.

I suppose along the same lines is the idea of an abstract machine.
Which I suppose is a virtual machine that can be implemented on
various actual machines.  Is this a well developed area of knowledge?
That is, where can I find references to abstract machines.

Thanks in advance,
Eric
--
Eric
ericco@ssl.berkeley.edu

rcd@ico.isc.com (Dick Dunn) (01/17/91)

ericco@ssl.berkeley.edu (Eric C. Olson) writes:
> I recently read an article that mentioned ANDF (Architecture Neutral
> Data Format) as an intermediate language...
> Is this feasible?  If so, any references to ANDF or any other similiar
> compilable intermediate languages would be appreciated.

ANDF is the OSF's resurrection of a very old idea.  The original name for
the concept was UNCOL; it was introduced somewhat over 30 years ago.  The
idea was that all compilers would translate into a single intermediate
language.  The goal was to reduce the "m*n" compiler problem to an "m+n"
problem--instead of having compilers for each of m languages on each of n
machines, one would have m language-specific front ends which produced
UNCOL, plus n machine specific back ends which translated UNCOL into the
code for a specific machine.  ANDF is the same concept.

To be fair to OSF (momentarily:-), the original RFT for ANDF allowed for a
wide spectrum of forms for ANDF, all the way from shrouded source to tagged
executables.  UNCOL-like approaches are in the middle of this spectrum.
However, all ANDF candidates which made the second "cut" are UNCOL-like.

Now the hard question: Is it feasible?  The best short answers are "In
limited cases, yes" and "In general, no."  You can make an UNCOL that works
well for a limited class of languages and for a limited class of machines.
As you keep adding languages, adding machines, and attempting better code
generation, the idea slowly collapses of its own weight.  This is a diffi-
cult mode of failure for a concept, since you can't tag the point at which
it actually "failed."  It's probably the reason that people keep re-trying
the UNCOL idea, in spite of so many past attempts that didn't make it, and
in spite of the lack of any enabling developments.  (You can't "prove" that
UNCOL will fail, nor can you isolate a problem which, if solved, will
enable UNCOL to succeed where it has failed in the past.)

Personally, I see ANDF going down the same path as all the other UNCOL
projects.  OSF has chosen to evaluate at this stage based on one source
language and two target architectures, which is just enough to make any
decent proposal look like it will work, but not enough to uncover the
way in which it will eventually fail.  In accordance with that, it has been
noted that all of the current ANDF candidates seem to do reasonably well;
there's no hands-down winner.

Perhaps OSF will restrict its attention to a small enough set of languages
and machines that their ANDF will have a modicum of success in a limited
market.  However, their stated goals suggest otherwise.  In particular,
they expect to develop software and translate it into ANDF packages which
will work on as-yet-undeveloped hardware without change.  Even if this, by
itself, didn't stretch ANDF to the breaking point, there are problems with
the software prior to translation to ANDF:  Do *you* think you can write
software in C which is entirely machine-independent--not only for all the
machines you know about, but for some which haven't been invented yet?!?

I believe that many strong programming-language people looked at the
initial ANDF RFT, said "oh--UNCOL again" and turned away.  They know how
the story turns out; it's not a happy ending.
-- 
Dick Dunn     rcd@ico.isc.com -or- ico!rcd       Boulder, CO   (303)449-2870
   ...Mr. Natural says, "Use the right tool for the job."

rst@cs.hull.ac.uk (Rob Turner) (01/25/91)

Another intermediate language which hasn't been mentioned is MUTL
(Manchester University Target Language) which, as the name suggests,
is used as the target language for all the compilers implemented at
Manchester University (in the late seventies, and early eighties).
Some of the languages I have come across which compile to MUTL are
Pascal, Fortran, C, MUSL (Manchester University Systems Language).

Rob