Why D is not popular enough?

Walter Bright via Digitalmars-d digitalmars-d at puremagic.com
Fri Aug 12 13:02:51 PDT 2016


On 8/12/2016 12:29 PM, Shachar Shemesh wrote:
> - No RAII support, despite the fact everybody here seems to think that D
> supports RAII.

Please explain.

> - Recursive const makes many cases where I can use const in C++ (and enjoy the
> protection it provides) simply mutable in D.

Right, in C++ you can have a const pointer to mutable. On the other hand, in C++ 
you cannot have 'const T' apply to what is accessible through T.

> - This one I have not complained about yet. Operator overloads stepping on each
> other's toes. In my case, I have a container (with opIndex that accepts a custom
> type and opOpAssign!"~") and I place in it a struct with some operator overloads
> as well (have not reduced the cause yet, hence no previous complaint about this
> one). So, when I write
>
> Container[IndexType] ~= Type;
>
> And the compiler assumes that means:
> Container.opIndexOpAssign!"~"(IndexType, Type);
>
> but since nothing like that is defined, the code doesn't compile. I ended up
> writing (actual code from the Weka code base):
>
> blockIds[diskIdx].opOpAssign!"~"(makeBlockId(stripeIdx+i,
> placement.to!SlotIdx(diskIdx)));
>
> Took me almost ten minutes and consulting someone else to find this solution.
>
> - GC. GC. GC. Some more GC.
> - Integral type operations promotion and the constant need for casts.

I don't understand this. Integral type promotions are the same as in C++. The 
casts are needed for integral type demotions (i.e. narrowing conversions). 
Having implicit narrowing conversions in C++ is a significant source of bugs, as 
the most significant bits are silently discarded.

> - No warning for signed/unsigned comparisons. An unfailing source for bugs.

Understood, but to be pedantic, such warnings are extensions to C++ compilers, 
not part of the language.

> - No ref type.

D has the ref storage class. What difference are you seeing?



More information about the Digitalmars-d mailing list