Does D have too many features?
bearophile
bearophileHUGS at lycos.com
Sat Apr 28 18:06:53 PDT 2012
Jonathan M Davis:
> * foreach_reverse is essentially redudant at this point (not to
> mention
> confusing if combined with delegates), since we have retro.
retro() can't replace foreach_reverse until the front-end
demonstrability produces asm code equally efficient.
Loops _must_ be fully efficient, they are a basic language
construct, this is very important. Even foreach() is sometimes
not equally efficient as a for() in some cases...
> * I hate C style struct initializers and would really like to
> see them go, but
> for reasons that I don't understand, people actually use them
> rather than using a proper constructor call,
For single structs I prefer D-style initialization.
But take a look at this code, if you replace those C-style
initializers with D-style, even using aliases to shorten the code
to single letters, that data section becomes more noisy:
http://rosettacode.org/wiki/Ray-casting_algorithm#D
> * As for features that add little value, the first one that
> comes to mind is
> with. I think that I've used it all of once, and I don't think
> that I've seen
> it in other people's code very often.
It's rather common in Pascal/Delphi programming. I use it now and
then.
For a case where it's very handy see here, with an enumeration:
http://rosettacode.org/wiki/Stable_marriage_problem#Alternative_version
> It's hard to grep for (since with is
> used in comments quite often),
Try to search for "with(" or "with\s(", that are less common in
normal text.
> * Increasingly, I don't like UFCS. I think that in most cases,
> it complicates
> code for little value. And I _really_ don't like how it results
> in people
> flipping chains of a(b(c(d(5)))) calls into something like
> d(5).c().b.().a(). I
> think that it makes the code way harder to read.
For me it makes that kind of code way simpler to read...
> The code is completely backwards.
It means call d on 5, then call c on the result, then call b on
the result, and then call a on the result. It's better than
before :-)
Bye,
bearophile
More information about the Digitalmars-d
mailing list