From: | Arch Robison <robison@kai.com> |
Newsgroups: | comp.compilers,comp.lang.misc,comp.arch.arithmetic |
Date: | 16 Mar 1997 23:31:50 -0500 |
Organization: | Kuck & Associates, Inc. |
References: | 97-03-037 |
Keywords: | optimize, arithmetic |
A fundamental problem with trying to propagate "meta knowledge"
through a compiler is that one person's "essential information" is
another person's "useless junk that is a pain to maintain".
Consider N optimizations that each require a piece of "meta
knowledge". Now there are O(N*N) pairwise interactions to consider.
If an optimization performs a transformation, then it must maintain
the "meta knowledge" required by the other N-1 optimizations. This
quickly becomes a losing battle unless that "meta knowledge" is in a
form that is limited, probably to the point of being nearly useless.
>So, if you're interested in the development of a truely reflective
>system, that allows specification and development of objects such that
>you can
>
>* modify the representation of objects (their operational semantics)
> without modifying their abstract meaning (declarative semantics)
>* more generally, provide meta-knowledge to the system
>then do join the Tunes project.
You can already do this with C++ templates to a large extent. For an
example, see http://monet.uwaterloo.ca/blitz . C++ templates, when
implemented correctly, allow Turing power (and Turing slowness!) at
compile time. This power can be used by libraries to do
domain-specific optimization at compilation time. We have users of
our C++ who are using templates essentially to write their own
compile-time optimizers for their domains.
Arch D. Robison Kuck & Associates Inc.
robison@kai.com 1906 Fox Drive
217-356-2288 Champaign IL 61820
Lead Developer for KAI C++ http://www.kai.com/C_plus_plus/index.html
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.