12345678910111213141516171819202122232425262728293031323334353637 |
- avram FAQ
- ---------
- This question was asked when avram used to be on sourceforge.
- Q1:
- What is the purpose of avram and how does it differ from other virtual
- machines that exist?
- A1:
- There's quite a bit of documentation about avram on the home page but
- the short answer to your question is that its purpose is to make it
- easy to write compilers for functional programming languages by
- eliminating most of the code generation phase.
- Functional languages are more difficult than most other languages to
- translate into native code because the kinds of operations commonly
- used at the source level involve things like list processing, which
- are very far removed from the kinds of operations that are convenient
- to express in assembly language. Usually they also have no concept of
- assignment statements, use recursion or combinators instead of loops
- and branches, and may have functions taking functions as arguments and
- returning functions as results.
- The way avram differs from other virtual machines is a consequence of
- the support for functional programming operations. Other virtual
- machines are (to my knowledge) based on the traditional von Neumann
- model of a central processor with registers, an instruction set, and a
- writable memory, or at best an ensemble of thereof. In this model, a
- computation is defined by the cumulative effect of many instructions
- operating on individual words of memory. By contrast, avram has none
- of these characteristics. A program is described by a tree-like
- structure specifying a transformation from inputs to outputs, which is
- the computation itself. The essence of the virtual machine is the way
- it defines how larger programs are built from smaller ones.
|