Thread overview
Meta-Programming
May 25, 2007
Mahe
May 25, 2007
David B. Held
May 25, 2007
Sean Kelly
May 25, 2007
Craig Black
May 25, 2007
Hi,

I have worked with D for some months. It is much better than C++ and a good alternative to Java or C#.

But I think a really powerful aspect is missing in D compared to Java/C#: Meta-Programming!
In D it is only possible to create a class with a standard constructor from a string with a class name in it. But there is no introspection of the structure of the class, no dynamic method calls, no dynamic attribute reading or setting.
But such reflection possibilities are important in component based software design of large systems.

Also some notation of extra metadata to classes, fields and methods would be good, like Java-Annotations. This would also be a powerful feature.

I don't know if for such features a VM is necessary!

Bye!

May 25, 2007
Mahe wrote:
> I have worked with D for some months. It is much better than C++ and a good alternative to Java or C#.
> 
> But I think a really powerful aspect is missing in D compared to Java/C#: Meta-Programming!
> In D it is only possible to create a class with a standard constructor from a string with a class name in it. But there is no introspection of the structure of the class, no dynamic method calls, no dynamic attribute reading or setting.
> But such reflection possibilities are important in component based software design of large systems.   [...]

This is usually called "reflection", since it doesn't really imply code generation the way templates and macros does.  D does provide reflection through type tuples and class constructors, but it could use some better support.  As for actual metaprogramming support, D blows Java/C#/C++ out of the water.

Dave
May 25, 2007
David B. Held wrote:
> Mahe wrote:
>> I have worked with D for some months. It is much better than C++ and a good alternative to Java or C#.
>>
>> But I think a really powerful aspect is missing in D compared to Java/C#: Meta-Programming!
>> In D it is only possible to create a class with a standard constructor from a string with a class name in it. But there is no introspection of the structure of the class, no dynamic method calls, no dynamic attribute reading or setting.
>> But such reflection possibilities are important in component based software design of large systems.   [...]
> 
> This is usually called "reflection", since it doesn't really imply code generation the way templates and macros does.  D does provide reflection through type tuples and class constructors, but it could use some better support.  As for actual metaprogramming support, D blows Java/C#/C++ out of the water.

Yup.  About the only issue I have with metaprogramming in D (which this thread made me think of) is the lack of support for template class ctors.  And peripherally, I don't think there's any way to get a ParameterTypeTuple for a class ctor either.  I ran into this the other day and finally had to use an alias for the ctor arg list.


Sean
May 25, 2007
No, a VM is not a requirement for introspection.  Walter should be adding better reflection/introspection in the coming months.

-Craig

"Mahe" <maheweb@web.de> wrote in message news:f36u6e$168a$1@digitalmars.com...
> Hi,
>
> I have worked with D for some months. It is much better than C++ and a good alternative to Java or C#.
>
> But I think a really powerful aspect is missing in D compared to Java/C#:
> Meta-Programming!
> In D it is only possible to create a class with a standard constructor
> from a string with a class name in it. But there is no introspection of
> the structure of the class, no dynamic method calls, no dynamic attribute
> reading or setting.
> But such reflection possibilities are important in component based
> software design of large systems.
>
> Also some notation of extra metadata to classes, fields and methods would be good, like Java-Annotations. This would also be a powerful feature.
>
> I don't know if for such features a VM is necessary!
>
> Bye!
>