On Wednesday, 11 May 2022 at 05:41:35 UTC, Ali Çehreli wrote:
What are you stuck at? What was the most difficult features to
understand? etc.
To make it more meaningful, what is your experience with other
languages?
Ali
Immutability. Ended up having to do so many hundreds of casts to
and from immutable(whatever) the amount of mental strain greatly
exceeded whatever benefits the entire concept is supposed to
offer. Safety? Performance, in a future compiler version? I
don't know where it's at right now. But you'd think I could do
something like load some data from disk, craft a few objects,
mark them as immutable, and shove them in an array or associative
array without it being a nightmare, but it isn't. Or, having an
otherwise mutable class with a member that references an
immutable class, but can change which immutable instance it's
referencing, without having to cast away the immutability of the
thing I'm trying to protect in the first place. So I just
stopped doing it, and simply rely on the "just don't make
mistakes" practice to avoid writing to things that shouldn't be
written to now.
C#'s concept of marking a class member as "readonly" feels a lot
more like what I was hoping to get. It doesn't complain at me
when I return something that's readonly and the receiving
destination isn't expecting it to be readonly, and also I have
more free reign over what I can do to it during the constructor
phase before it becomes hands-off. Things look a lot cleaner
without another set of parentheses around every variable too.
On another topic, the lack of a good "delete" keyword doing what
one would expect, when there's a perfectly good "new" without its
matching existential companion. This, and the ways around it,
have already been discussed to death though, but banging my head
over trying to force deterministic memory management into the
GC-controlled D universe did take its toll on a good year or two
of productivity.