www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Meta-Programming

reply Mahe <maheweb web.de> writes:
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
next sibling parent reply "David B. Held" <dheld codelogicconsulting.com> writes:
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
parent Sean Kelly <sean f4.ca> writes:
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
prev sibling parent "Craig Black" <cblack ara.com> writes:
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!
 

May 25 2007