Why do some language-defined attributes have @ and some not?
Jonathan M Davis via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Oct 23 15:43:32 PDT 2014
On Thursday, 23 October 2014 at 22:20:28 UTC, ketmar via
Digitalmars-d-learn wrote:
> i love D and i want D to be widespread, but what makes me love
> D is
> it's attitude to fixing stupid legacy we have in C and C++. and
> now it
> seems to me that someone should start "BetterD" project to fix
> legacy
> we already have in D. ain't the desire to fix legacy cruft was
> one of
> the big driving forces of D creation? it's a pity for me to see
> that D
> starting to follow some of the worst C++ aspects.
_Every_ language ends up with legacy cruft if it ever gets any
kind of widespread use in the real world. If you want a language
that never has legacy cruft, I expect that you will be forever
disappointed. The question is what is and is worth changing and
at whether you ever reach the point that you're _never_ allowed
to break code (which is pretty much where C++ is). I certainly
hope that D never reaches the point that we'll never break code
even when it truly makes sense to do so, but we _have_ reached
the point where the reasons have to be much stronger.
Some stuff that could currently be considered legacy cruft will
probably be changed, but it's generally a hard sell, particularly
because Walter is _very_ paranoid about breaking people's code
(arguably too much so). Though it should be noted that the vast
majority of D users never post in the newsgroup, and many of them
probably have never visited it, so basing anything on what's
discussed in the newsgroup is basing it on the most dedicated
users, which aren't necessarily representative of the user base
sa a whole, which always makes it difficult to figure out which
decisions that would break code are okay and which aren't and is
probably part of why Walter overreacts to some of the comments on
places like reddit.
Regardless, you can certainly try and lobby for the attribute
names to be normalized, but I don't expect it to change, in this
particular case, while I'd certainly be open to it if Walter want
to get rid of all of the @s on all of the built-in attribute
names, I also don't really care if they stay the way they are.
It's a minor annoyance, but I never found it hard to learn which
ones had @ on them and which didn't (just treat it like one extra
letter to learn in the keyword), and I'm light years beyond the
point where I memorized them all. The primary annoyance about it
at this point is having to answer questions on it when yet
another user tries to figure out why some have @ and some don't
as if there's a discernable pattern to it, and there isn't. And
that sucks, but it doesn't actually cause bugs (unlike allowing
const on the left-hand side of a member function, which
definitely should be deprecated), and it's actually pretty easy
to explain.
- Jonathan M Davis
More information about the Digitalmars-d-learn
mailing list