Does D have too many features?

bearophile bearophileHUGS at lycos.com
Sat Apr 28 16:42:05 PDT 2012


Jonathan M Davis:

>> - 'in' operator returning a pointer to the element.
>
> Really? I use that all the time with AAs. Without that, you 
> would have to do
> two lookups to get an object which might not be in the 
> container, so it would be less efficient.

LDC1 compiler introduced a small optimization, it looks for 
nearby associative array lookups and removes the second of them 
where possible. In my code I have seen this frees me to use "in" 
nearby followed by [], with the same efficiency of a single AA 
lookup. With this small optimization, D "in" is free to return a 
more clean boolean.

This optimization doesn't work if you want to store the pointer 
returned by "in" to use it later, but in my code this pattern 
doesn't happen, I think it's quite uncommon.

Java/JavaScript/Lua show that the language design has to focus on 
what's hard to optimize away for the compiler, like offering ways 
to the programmer to specify higher level semantics (like 
asserting: foo(a,b) is equal to foo(b,a)), instead of focusing on 
what a not dumb static compiler (not even a JIT) is able to 
optimize away.

Bye,
bearophile


More information about the Digitalmars-d mailing list