Go has contempt for generics

Jonathan M Davis jmdavisProg at gmail.com
Sat May 29 02:42:45 PDT 2010

Andrei Alexandrescu wrote:

> On 05/28/2010 08:39 PM, Jonathan M Davis wrote:
> [snip some good points]
>> So, while
>> some folks seem to want to draw comparisons between Go and D, it sounds
>> like there are definitely things about them which are drastically
>> different, not only in the design, but in the philosophy behind the
>> design.
> If Go has only a black stare as a response to problems usually tackled
> by generics in contemporary language, I wouldn't call that a different
> philosophy, I'd call that a lacuna therein.
> Andrei

Curse you for making me increase my vocabulary! ;) Nice word, lacuna...

In any case, while I would agree with you that it generally works better for 
a language to have generics of some kind, there are plenty of languages 
which get by just fine without them. I haven't looked into Go at all, so I 
don't know how they would affect it if you added them or what frustrations 
currently exist without them. But you can have perfectly good languages 
without generics, and there probably are languages where it would be a bit 
awkward or needless to have them (probably primary in functional and/or 
dynamically-typed languages). It could be that Go works great without them, 
so I'm not sure that it's necessarily a lacuna, but certainly my first 
reaction without looking more closely into the matter would be that it 
probably is a lacuna. But whether it really is a lacuna or not would really 
depend on what they have and how the lack of generics affects them. 
Certainly, on Java's and C#'s parts, it was a lacuna until they added them.

So, I guess that I'm agreeing with you on the condition that Go really is 
the kind of language that should have generics, but not being familiar with 
the language, I can't really say.

Regardless, I'm very glad that D has powerful generics in its templates. And 
they retain and improve on some of the more powerful aspects of C++'s 
templates rather than being used pretty much purely for container types like 
in C# and Java. But given your involvement in the project and how big you 
are on templates and template metaprogramming, that should come as no 
surprise. That would also be suggestive of why you'd find a language without 
them to be lacking.

- Jonathan M Davis

More information about the Digitalmars-d mailing list