A common categorization of languages is this:
1) "Descriptive" or "declarative" languages -- These have
only nouns that desribe things. E.G. "circle {red,
radius { 3 inches}}". HTML is an example of a declarative
language. I'm hoping VRML will be declarative. These
lang's rarely have compilers, almost always have interpreters.
(It's usually not worth writing a compiler).
2) "Proceedural" languages -- These have nouns and verbs,
describing how to do things. "add this to that, if
this equals that". C, C++, FORTRAN, BASIC, COBOL
are all of this type. So is Postscript. Ditto Forth.
Subclasses include stack-based (Postscript, Forth),
structured (C, F77 but not F66), and object oriented (C++).
Most have compilers.
BTW, Brown Univeristy's 3D language is this kind of
a language, so is Kaleida's ScriptX. I personally do
NOT want VRML to be proceedural.
3) "Evaluative" or "constructive" languages. The language
allows you to build expressions which are true or false.
Evaluating the expessions doesn't "do" anything. It merely
"proves" the expression to be true or false. (Of course,
the side effects of the proof, e.g. what is printed out
while the "proof" or evaluation is happing, can be very,
very interesting). Mathematicians tend to like these
because the result of a program can be "proven" to be correct.
Examples include LISP, (based on Church's Lambda Calculus),
and Prolog.
Usually, compilers are too hard to develop for these.
Interesting ... but inappropriate for VRML.
--linas