Also, another problem I remembered about const:
If you have a const object, you can't have an invariant() that calls
something impure (or something like that -- I forget the details, it was
a while ago). Which was pretty darn annoying when I was trying to use
D's DBC features, which seemed to again conflict with the the
transitivity of const.
I'll post more issues as I remember them. There certainly wasn't just 1.
See below for inline reply.
-------------------
On 9/23/2011 8:08 PM, Jonathan M Davis wrote:
Many, many people _never_ try and lazy load or cache variables like
you're trying to do. So, there are many, many people that this will
never affect
Oh... was the purpose of D to appeal to /those/ kinds of people? If so,
then please ignore this entire post; it was my mistake.
Obviously, it _will_ affect people but not enough that it would
cripple D's chances of catching on.
That's what we hope and keep our fingers crossed for, but something
tells me that isn't quite enough. YMMV.
Also, since all you have to do to work around the issue is to not use
const in this particular case (and there are already tons of
programmers who never use const and have no interest in it),and you're
fine, I don't see how this can be a showstopper for adopting the language.
"If it doesn't work then just don't use it"? I find it funny that you
find this reasoning convincing, since I don't (and I don't think others
do either).
Yes, it's annoying, but there's a workaround which doesn't affect
performance at all,
Was const introduced for performance, or for code verifiability? I don't
see how that's relevant, because honestly, the word "performance" wasn't
even in my /mind/ when I was thinking about this problem. All I wanted
was to _compile_ *verifiably correct* code, which failed pretty darn
miserably, due to the const issues. I couldn't care less about
performance when I was writing my code.
and if something like this is all it takes for you to decide that
you're not going to use a particular language, then it's going to be
hard to get you to use _any_ language.
I personally know that's not true, but why bother convincing you
otherwise? Feel free to believe that, if it makes sense with your reasoning.
They _all_ have issues of one sort or another, if nothing else because
every language makes its own share of tradeoffs based on its goals.
NO! I think this is where you're missing the critical point. D's
tradeoffs are NOT like other languages' tradeoffs.
Widely-used languages (C++, Python, C#, whatever) do NOT have half-baked
(or even 95%-baked) features. They have features that work 100% of the
time. Sure, they may be incomplete and they certainly have more room for
improvement, but _what they *already* have_ works in EVERY situation. If
you ever wondered what people meant on programmers.se when they said
"C++ has a better thought-out type system", I hope you now know why.
They did NOT mean that it has better features. Or that the compilers are
of better quality. They were saying that the rules are self-consistent
and they *work*. That is, _regardless_ of the compiler quality, the
features of the *language* itself work in EVERY situation.
D, on the other hand, tries to appeal to everyone but instead has
supposedly awesome features (e.g. transitive const) that DON'T work 100%
of the time. They only work 95% of the time. You might refuse to believe
this, but I'm convinced that this **IS** the reason why it's not being
adopted as fast as you'd want it to be. You can continue to justify it
as "but it works for 95% of people!" but the fact of the matter is that
we've seen otherwise. Believe me, I want to see D get adopted too, but
my brain is telling me that there HAS to be a reason it hasn't -- and
that reason isn't the compiler bugs or anything of that sort, but the
language itself.
P.S. I really hope people don't take this as a C++ fanboy ranting about
D... not only am I not a fan of C++ (I pretty much hate the language),
and it should be obvious (if not from my previous posts, at least from
how much I've tried to promote D on StackOverflow) that I indeed do like
D, and I've tried to suggest it to people as often as I've been able to.
But over time, I've come to realize some of the reasons people like C++
as opposed to D, so I'm trying to point them out here so that they might
be helpful. Hopefully they make sense.