D vs C++
Don
nospam at nospam.com
Mon Dec 27 11:14:37 PST 2010
Mariusz Gliwiński wrote:
> Monday 27 December 2010 @ 17:18:17 Daniel Gibson:
>> Am 27.12.2010 17:01, schrieb Caligo:
>>> On Mon, Dec 27, 2010 at 7:20 AM, Jonathan M Davis <jmdavisProg at gmx.com
>>> <mailto:newshound2 at digitalmars.com>> wrote:
>>> > > 11. generative programming
>>> >
>>> > Does someone have a pointer to any kind of doc about this? (in D)
>>>
>>> Anything on templates, template mixins, and string mixins. All of
>>> them generate
>>> code. And some people have done some pretty crazy stuff with them
>>> (especially
>>> string mixins).
>>>
>>> - Jonathan M Davis
>>>
>>> So is it like template metaprogramming in C++? a small D example would
>>> be helpful. There doesn't seem to be anything about it in TDPL.
>> http://www.digitalmars.com/d/2.0/templates-revisited.html
>
> Firstly,
> I admit I'm still new in programming so treat me like that but...
> On my peasant-like brain, if You can't store compilation-time variable, to
> read it later... from other template, even module with normal language rules
> but in compile time, it's not *fully* generative programming, is it? You can't
> make many things without that.
You can store all compile-time results in local variables. (When a
couple of implementation bugs get fixed, you'll be able to store it in
heap-allocated variables as well).
So yes, with C++ style template metaprogramming, there's not so much you
can do. D CTFE metaprogramming is far more powerful, and it's also
simple to understand.
> As I said, I'm new in programming so maybe that's why, but D was my ideal
> language (so i could express everything i imagined). But this little thing
> makes templates only small spice to what I've seen before, instead of big step
> forward. I understand it might be hard to implement with clear rules of usage,
> but I abstracted it out.
>
> Ps. I want compile-time raytracer downloadable again, please :)
BTW -- I don't recommend doing anything complicated with template
metaprogramming. It becomes incomprehensible very quickly. CTFE, on the
other hand, scales very nicely.
More information about the Digitalmars-d
mailing list