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