[comp.compilers] Re: Introspection/Reflection

Francois-Rene Rideau fare@tunes.org
Wed, 1 Dec 1999 04:06:34 +0100


Note: this message is a reply to a thread on comp.compilers;
being longish and mostly off-topic there, I post it here, with Cc:
to original USENET posters, and an announce on USENET.
I hope that was the Right Thing(tm) to do. Sorry if it's not.

Note2: as I say below, I revamped the Review page on Reflection,
plus Glossary entries; I also archived the newly-opened virtmach@iecc.com
mailing-list on bespin.tunes.org. Comments welcome.

>>>: Basile Starynkevitch
>>: Alan Donovan <adonovan@imerge.co.uk>
>: "Christian Stapfer" <chstapfer@bluewin.ch>

>>> http://www.tunes.org/Review/Reflection.html
Thanks, Basile.

>> The definitions are unhelpful, pretentious, often incorrect and laden with
>> poorly-thought-out political ramblings.
After your message, I re-reading my page, decided that indeed it needed
much of a facelift, and rewrote it completely, including the correction
of a few bugs in the definitions on the other Glossary page.
I hope that if you will come back to my page, you find it better.
Anyway, criticism is better sent directly to me (if possible with
sufficient precision as for incorrections), so I can enhance the page.

As for the political side and "pretentious" tone, I fully endorse it; and
of course I believe it's not as poorly thought out as you say, although I
admit it's too often written in incorrect quick draft mode and not proof-read.
In fact I don't believe in such thing as "neutrality" in opinions or thought;
thought is made of commitment. However, I do consider it a bug (that I am
grateful to be reported) when the reader cannot make a clear difference
between what is common knowledge and what is merely my personal opinion.

>> [...] if reflection really is something radically new then [...]
> [...] From a sufficiently abstract
> point of view, reflection is certainly not a new idea, much less a
> "radically new" one.
Indeed, and I am sorry if my page led to think otherwise.
This alone shows how much room for improvement there was
(and probably still is) in my pages.

The idea of reflection in philosophy is ages old;
in Computer Science, it is at the very foundations
(see equivalence of notions of computability through mutual interpreters,
and the Cantor-like diagonalization used by Turing
for in his Halting theorem). The many researchers cited
(and now alphabetically sorted) on my Reflection page,
who constitute only a fraction of people working in reflection-related
topics, show that the domain is indeed neither new nor disaffected.

My only claim for originality about reflection, which claim I admit
I haven't yet backed with irrefutable arguments (i.e. actual code),
is that Reflection at the heart of a system architecture is instrumental
in enabling the appearance of software much more coherent and powerful
than we see currently. On the other hand, I have given reasons why
Reflection has been neglected in the past (issues with proprietary
software), and why I think it'll develop in the future.
        http://www.tunes.org/~fare/articles/ll99/index.en.html

So that to show that Reflection is not completely off-topic on
comp.compilers, a _mature_ reflective system as I understand it
would dynamically use compilation techniques to constantly improve
the quality of code in an adaptative way, which would melt compilers
into the system together with interpreters, profilers, shells, and more.
The possibility to dynamically reify the state of computation
(which would be the default, but not the only possibility)
encourages the use of "reversible" compilation techniques
(at least up to the obtention of a legit "safe point" in a proper
high-level model of computation). I wonder if anyone here can help me
find data on such reversible compilation...

Reflection is necessary here to ensure the dynamic coherence between
observable/declared "source" code and current binary code at run-time
despite all possible user-visible side-effects.
Not only don't statically compiled languages allow this
(they conspicuously affirm their lack of interest in feedback
from runtime to source, unless it's fully hidden from the user,
say within profiling help to the optimizer),
but this is impossible to safely implement on top of systems such
as Unix, where you can't safely intercept all modifications to files,
and hence cannot ensure source/binary coherency
in presence of potential tampering.

>     As to political ramblings, I wonder what you mean. The constant pressure
> to oversell ideas, to dub them "radically new" without good reason (except
> to keep tenure, or try to make a wave so that you can ride it), is as
> political as it can possibly get: Its just that we are all so immersed in
> commodification and marketization of ideas that we do not recognize
> their profoundly political source (capitalism), nor their distorting
> influence on our own thought and behaviour.
Thanks Christian. I guess Alan, like most of us, is trained to
automatically ignore the usual kind of political bias you describe,
to the point of not thinking about balancing with it the different biases
he faces.

>     Had I been asked to define "reflection", I would have been even less
> "helpful" than http://www.tunes.org/Review/Reflection.html : I would have
> included hegelian Philosophy, hegelian-behaviorist Psychology
> (i.e. George Herbert Mead), hegelian Marxism (Frankfurt School:
> Horkheimer, Adorno, Marcuse; and Georg Lukàcs), Psychoanalysis
> (reification = acting out; reflection = interpretation of transference
> behavior), theories of literacy and its influence on human culture
> (Walter J. Ong,  Eric A. Havelock, ..), and, of course, Metamathematics
> (proving theorems about theorem proving).  But, not having been asked,
> I will spare you the details here...
Well, if you have (if possible synthetic) pointers on all these,
they are welcome.

>     Closer to computer science: The argument for the unsolvability of the
> Halting Problem used by A.M. Turing (having a universal Turing machine
> "reflect" about the behaviour of another Turing machine by letting it
> analyze a suitable representation of its program and input data) was a
> clear case of applying "reflection" as the basis of a theoretical argument,
> too. (And I hope you would not want to dispute its relevance to computer
> science in general.)
>     So reflection,  looked at with a sufficiently broad and open mind,
> really IS an old hat, even in computer science, as I said.
Yup.

> But, to be more
> helpful, perhaps http://www.parc.xerox.com/csl/projects/aop is something
> that you might be more interested in. (Although my impression, after
> skimming the above web page and some of the documents that
> can be found there, is that Kiczales et. al. haven't made much substantive
> progress since last time I had had a look at their work on
> metaprogramming under CLOS -  the metaobject protocol - except,
> perhaps, on the implementation side of it. The marketing of their brand
> of reflective programming has been repackaged and combined with other
> currently popular ideas as "aspect oriented programming", and is
> thus "radically new", of course. - That's just my personal impression:
> I hope no one will take offense at my stating it thus bluntly.)
Gregor indeed looks to me as though he's more interested in selling
what he has (changing the name of it every other couple of years),
rather than developing it.

> [I think I'll let you guys slug it out in private mail now. -John]
Done as suggested. I suggest the various mailing-lists
hosted at tunes.org as a suitable place to discuss reflection.
Criticism of the page and suggestion of new material is welcome on review@,
while discussion of reflective system designs can be done in tunes@,
and general philosophical ramblings are is fit for cybernethics@.

A list of mailing-lists and web interface to their archives is at
	http://lists.tunes.org/cgi-bin/wilma
Please note that not all mailing-lists archived there depend from the Tunes
project; for instance, we have web archives of the gclist and virtmach
mailing-lists that spawned off comp.compilers

I hope this message useful gives this thread a new life
in a more suitable place.

Best regards,

[ "Faré" | VN: Уng-Vû Bân | Join the TUNES project!   http://www.tunes.org/  ]
[ FR: François-René Rideau | TUNES is a Useful, Nevertheless Expedient System ]
[ Reflection&Cybernethics  | Project for  a Free Reflective  Computing System ]
If you could ask a unique question to a computer during a Turing test,
what would you ask?
	-- Douglas Hofstader, Metamagical Themas