<div dir="ltr"><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jun 5, 2020 at 3:30 AM Dibyendu Majumdar via Digitalmars-d <<a href="mailto:digitalmars-d@puremagic.com">digitalmars-d@puremagic.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Friday, 5 June 2020 at 02:44:17 UTC, Manu wrote:<br>
<br>
> Back on-topic; I still use D because I just can't stand C++, <br>
> and I somehow fundamentally believe D can 'get there'... but <br>
> god is it a hard and frustrating road! Eternally so close, but <br>
> always juuuust misses the mark. Maybe one day we'll land the <br>
> shot >_<<br>
<br>
In my opinion there will always be that one missing feature that <br>
prevents D from getting there. In other words, if features were a <br>
stopping factor then how did anyone ever use C++ 10 years ago?<br></blockquote><div><br></div><div><div>I feel like I made the case that it's not strictly 'features', so much as implementation quality and/or the complete package experience.</div><div><br>I mean, one instance of 'new functionality' is extern(C++), which really is a massive enabler; it creates a migration opportunity which wouldn't be there otherwise. I've been working for years to improve C++ interaction and make it comprehensive and useful. It hasn't been on my list of key struggles recently. We do need to get on top of move construction though... but it's not holding me back personally.<br><br></div><div>`shared` though, that's been in a weird limbo state for a very very long time, and in this instance, the key competitive advantage D offers over C++ is that it has `shared` in the type system.</div><div>But having that sticker on the box isn't enough, it has to do something meaningful. It actually has to implement mechanics that help us resist the kinds of bugs that you experience with shared data.<br><br>Even if those _features_ do work, it still needs to pass the tests where it shows it can fit into an elaborate existing ecosystem. When really basic things like inline and weak linkage don't work, that's just a kind of super boring mechanical barrier to successful integration, and there's no excuse I can make for those. We can make workarounds, but they're embarrassing, and we should spend our small quota of "disadvantage points" on the key stuff that's not trivial to fix.</div><div><br>So when I say "always just one thing", it's not features; it might be... but it's often also implementation quality, or binary environment integration issues, or build issues, or tooling issues... unfortunately we must _exceed_ a very high bar set by the C++ to ecosystem be successful. We're not evaluating which environment is the best experience overall, what we have to do is *dislodge* a deeply seated establishment by demonstrating sufficient advantages that it tips a subjective threshold of a businesses technical directors. They need to do an evaluation, easily recognise the advantages, and not be nervous.</div><div>I think we've been pretty close to having everything we need for a while now, but what I was saying here is it absolutely needs to WORK... we can't show that an idea (`shared`) is there but the implementation is broken. That will be received worse than if it wasn't there at all.</div></div></div></div>