What I like most AND what I don't like most - about D

arandomonlooker shdkahdkhhhhhii at gmail.com
Sun Jun 12 03:40:55 UTC 2022


On Sunday, 12 June 2022 at 01:48:43 UTC, forkit wrote:
> (1) What I like most about D:
>
> (2) What I dislike most about D:
>
> Please keep it simple and short, ideally one item for each 
> would ideal.

My humble, not particularly informed opinions:

I like D's overall feel and it's mixture of features, in short. 
D's mixins, ranges, CTFE, delegates, UFCS, scope guards, 
unit-tests, iteration style, templates, contracts, UDAs, it's 
module system, it's easy interfacing with C, Objective C and 
C++'s OOP and it's compilation speeds are honestly the best part 
of the programming language. And for a language with all these 
features, D feels tidy, it's not merely a "C++" with more 
features, it feels unique in it's own right. I also like it's 
efforts to become safer, like the inclusion of a borrow checking 
system (live functions), @mustUse and the "safe specification", i 
think they are going to improve D overall.

The thing that i dislike most about D, on the other hand, it's 
D's lack of vision for the future. D doesn't have a clear roadmap 
with clear proposals, and the DIP process seems to me too strict. 
I don't know what D is going to have or eliminate next. Also, D 
is somewhat underpowered when it comes to it's features. D does 
not have structural bindings for arrays and tuples (or at the 
very least, a way for AliasSeq to have type inference and a 
possibility to skip what values of the tuple you want, maybe with 
a underscore like in Go; through, i can understand that it 
doesn't really fit in with the language), coroutines (yield, 
async, await, etc.), static array inference, lazy variables like 
in Swift (through, D allows excellent workarounds for this), 
named unit-tests (like in Zig; maybe with the possibility to skip 
them internally, again, like in Zig), generic lambdas, an 
"inline" attribute for functions instead of the pragma-inline 
idiom, support for Unicode operators, anonymous structures, 
records (C#-style), mixin identifiers. I also don't understand 
certain idioms: why is a case range statement styled like "case 
1: .. case 3" and not like "case 1..3:"? It's more readable?

Thank you all in advance.


More information about the Digitalmars-d mailing list