On 3/20/12 11:09 AM, Steven Schveighoffer wrote:
On Tue, 20 Mar 2012 11:17:02 -0400, Andrei Alexandrescu
<seewebsiteforem...@erdani.org> wrote:
I'm afraid I disagree. A targeted language feature definitely makes a
library approach inferior, by definition. But adding features is
cheating, like printing money is for a government: very tempting, with
apparently good short-term benefits, but with devastating cumulative
effects.

Not exactly. We could all be writing code in assembly if "adding
features" was always caustic.

This is trivializing my point. Please.

What is nice about adding this feature is it provides a custom solution
to hooking the compiler's TypeInfo generation. We are setting up the
compiler to give us hooks so we *don't* have to extend the compiler
every time we want new reflection features.

There is something nice about every new feature.

One of the oft-requested features of D is reflection capability. The
answer is generally that we have compile-time reflection, which can
theoretically be used to build runtime reflection. However, the rebuttal
I always come back with is "yeah, but why should I build at runtime that
which is obvious at compile time?"

I thought there were discussions that didn't add runtime overhead.

Note that one library that did attempt runtime reflection capability
(flectioned) does all this at runtime, and does some really funky shit,
like opening /proc/self/map on Linux, or requiring you to pass an
OPTLINK map file. I don't look at these as "innovations" as much as I do
as workarounds.

Maybe there's a better approach than flectioned. Consider the language is frozen solid. How would you solve problems with it?

Also, as I mentioned, the availability of the easy escape hatch of
adding a language feature thwarts creativity. Nobody will care to
think about and come with idioms that use the language to do great
things, if they know a language feature could be always added that
makes things "nicer".

I have to disagree for this instance, the barrier to creating reflection
data from compile-time info is very large. If anything, this *expands*
the ability to create, since you now have a new way to pass information
from compiler to runtime.

I hope I'll be convinced.


Andrei

Reply via email to