OT: on IDEs and code writing on steroids

Yigal Chripun yigal100 at gmail.com
Wed May 20 12:48:09 PDT 2009


Andrei Alexandrescu wrote:
> Lutger wrote:
>> Andrei Alexandrescu wrote:
>>
>> ...
>>>> What the heck do you need generics for when you have real 
>>>> templates?  To me,
>>>> generics seem like just a lame excuse for templates.
>>> I agree. Then, templates aren't easy to implement and they were 
>>> understandably already busy implementing the using statement.
>>>
>>> Andrei
>>
>> While I don't fully understand how generics work under the hood in 
>> .NET, there are some benefits to how it is done. For example, you can 
>> use runtime reflection on generic types. And the jit compiler 
>> instantiates them at runtime. They may serve a different purpose than 
>> templates:
>>
>> "Anders Hejlsberg: To me the best way to understand the distinction 
>> between C# generics and C++ templates is this: C# generics are really 
>> just like classes, except they have a type parameter. C++ templates 
>> are really just like macros, except they look like classes."
>> It seems that lack of structural typing is seen as a feature:
>>
>> "When you think about it, constraints are a pattern matching 
>> mechanism. You want to be able to say, "This type parameter must have 
>> a constructor that takes two arguments, implement operator+, have this 
>> static method, has these two instance methods, etc." The question is, 
>> how complicated do you want this pattern matching mechanism to be?
>> There's a whole continuum from nothing to grand pattern matching. We 
>> think it's too little to say nothing, and the grand pattern matching 
>> becomes very complicated, so we're in- between." 
>> From: http://www.artima.com/intv/genericsP.html
> 
> Oh, so Wal^H^H^Ha friend of mine I was talking to was right: there's 
> some missing of the point point going on. The code generation aspect of 
> templates is a blind spot of the size of Canada.
> 
> Andrei

I think you miss the point here.
Generics and code generation are two separate and orthogonal features 
that where conflated together by C++.

while you can do powerful stuff with templates it smells of trying to 
write Haskel code with the C pre-proceesor.
if you want to see a clean solution to this issue look at Nemerle.
essentially, their AST Macro system provides multi-level compilation.

c++ templates are a horrible hack designed to ween off C programmers 
from using the pre-processor and the D templates provide mostly cosmetic 
  changes to this. they do not solve the bigger design issue.



More information about the Digitalmars-d mailing list