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