What are the worst parts of D?

Dicebot via Digitalmars-d digitalmars-d at puremagic.com
Sun Oct 5 09:14:16 PDT 2014


On Sunday, 5 October 2014 at 15:38:58 UTC, Andrei Alexandrescu 
wrote:
> On 10/5/14, 7:55 AM, Dicebot wrote:
>> 1) lack of "vision"
>
> The vision is to expand user base and make a compelling case 
> for using D alongside existing code bases. There are two 
> important aspects to that: interoperability with C++, and using 
> D without a garbage collector.
>
>> Right now I have no idea where the development is headed and 
>> what to
>> expect from next few releases. I am not speaking about
>> wiki.dlang.org/Agenda but about bigger picture. Unexpected 
>> focus on C++
>> support, thread about killing auto-decoding, recent ref 
>> counting
>> proposal - all this stuff comes from language authors but does 
>> not feel
>> like a strategic additions.
>
> 1. C++ support is good for attracting companies featuring large 
> C++ codebases to get into D for new code without disruptions.
>
> 2. Auto-decoding is blown out of proportion and a distraction 
> at this time.
>
> 3. Ref counting is necessary again for encouraging adoption. 
> We've framed GC as an user education matter for years. We might 
> have even been right for the most part, but it doesn't matter. 
> Fact is that a large potential user base will simply not 
> consider a GC language.

No need to explain it here. When I speak about vision I mean 
something that anyone coming to dlang.org page or GitHub repo 
sees. Something that is explained in a bit more details, possibly 
with code examples. I know I am asking much but seeing quick 
reference for "imagine this stuff is implemented, this is how 
your program code will be affected and this is why it is a good 
thing" could have been huge deal.

Right now your rationales get lost in forum discussion threads 
and it is hard to understand what really is Next Big Thing and 
what is just forum argument blown out of proportion. There was a 
go at properties, at eliminating destructors, at rvalue 
references and whatever else I have forgotten by now. It all 
pretty much ended with "do nothing" outcome for one reason or the 
other.

The fact that you don't seem to have a consensus with Walter on 
some topic (auto-decoding, yeah) doesn't help either. Language 
marketing is not about posting links on reddit, it is a very hard 
work of communicating your vision so that it is clear even to 
random by-passer.

>> 2) reliable release base
>>
>> I think this is most important part of open-source 
>> infrastructure needed
>> to attract more contributions and something that also belongs 
>> to the
>> "core team". I understand why Walter was so eager to delegate 
>> is but
>> right now the truth is that once Andrew has to temporarily 
>> leave all
>> release process has immediately stalled. And finding 
>> replacement is not
>> easy - this task is inherently ungrateful as it implies 
>> spending time
>> and resources on stuff you personally don't need at all.
>
> We now have Martin Nowak as the point of contact.

And what if he gets busy too? :)

>> 3) lack of field testing
>>
>> Too many new features get added simply because they look 
>> theoretically
>> sound.
>
> What would those be?

Consider something like `inout`. It is a very look feature to 
address an issue specific to D and it looked perfectly reasonable 
when it was introduces. And right now there are some fishy hacks 
about it even in Phobos (like forced inout delegates in traits) 
that did come from originally unexpected usage cases. It is quite 
likely that re-designing it from scratch based on existing field 
experience would have yielded better results.

> Policy-based design is more than one decade old, and older 
> under other guises. Reference counting is many decades old. 
> Both have been humongous success stories for C++.

Probably I have missed the point where new proposal was added but 
original one was not using true policy-based design but set of 
enum flags instead (no way to use user-defined policy). Reference 
counting experience I am aware of shows that it is both 
successful in some cases and unapplicable for the others. But I 
don't know of any field experience that shows that chosing 
between RC and GC as a policy is a good/sufficient tool to 
minimize garbage creation in libraries - real issue we need to 
solve that original proposal does not mention at all.

> No need to trust me or anyone, but at some point decisions will 
> be made. Most decisions don't make everybody happy. To 
> influence them it suffices to argue your case properly. I hope 
> you don't have the feeling appeal to authority is used to 
> counter real arguments. I _do_ trust my authority over someone 
> else's, especially when I'm on hook for the decision made. I 
> won't ever say "this is a disaster, but we did it because a guy 
> on the forum said it'll work".

I don't want to waste your time arguing about irrelevant things 
simply because I have misinterprete how proposed solution fits 
the big picture. It is still unclear why proposed scheme is 
incompatible
with tweaking Phobos utilities into input/output ranges. I am 
stipid and I am asking for detailed explanations before any 
arguments can be made :) And not just explanations for me but 
stuff anyone interested can find quickly.

>> This is closely related to SemVer topic. I'd love to see D3. 
>> And D4 soon
>> after. And probably new prime version increase every year or 
>> two. This
>> allows to tinker with really big changes without being 
>> concerned about
>> how it will affect your code in next release.
>
> Sorry, I'm not on board with this. I believe it does nothing 
> than balkanize the community, and there's plenty of evidence 
> from other languages (Perl, Python). Microsoft could afford to 
> do it with C# only because they have lock-in with their user 
> base, monopoly on tooling, and a simple transition story ("give 
> us more money").

You risk balkanization by keeping the things as they are. We do 
have talks at work sometimes that simply forking the language may 
be a more practical approach than pushing necessary breaking 
changes upstream by the time D2 port is complete. Those are just 
talks of course and until porting is done it is all just 
speculations but it does indicate certain level of unhappinness.

>> Don has been mentioning that Sociomantic is all for breaking 
>> the code
>> for the greater good and I fully agree with him. But 
>> introducing such
>> surprise solutions creates a huge risk of either sticking with 
>> imperfect
>> design and patching it (what we have now) or changing same 
>> stuff back
>> and forth every basic release (and _that_ is bad).
>
> I don't see what is surprising about my vision. It's simple and 
> clear. C++ and GC. C++ and GC.

It came as surpise. It is unclear how long will it stay. It is 
unclear what exactly is the goal.

Have you ever considered starting a blog about your vision of D 
development to communicate it better to wider audience? :)


More information about the Digitalmars-d mailing list