On Tuesday, 24 May 2022 at 05:22:48 UTC, Ola Fosheim Grøstad wrote:
>On Tuesday, 24 May 2022 at 02:04:34 UTC, Basile B. wrote:
>You finally ends up with testimonials from experts but in the end you still dont really know why mr rookie gave D up.
Overall the signal from beginners that did not give up early appears to be IDE and libraries. From experienced beginners the signal is inconsistencies and unusual choices. From nonhardcore the signal is lack of stability. From hardcore the signal is incompleteness.
Actually, I want to jump on this, because I think it's really important, and it's a core argument from my perspective for why D should have macros.
Note: Speaking from an unabashed late-intermediate perspective.
Most languages have this sort of pipeline:
[beginners] -> [experienced beginners] -> [intermediates] -> [hardcore]
[code for own use] -> [code libraries] -> [utility libraries] -> [language improvements]
It sometimes feels like D has this pipeline:
[code for own use] -> [libraries] -> [clever metaprogramming libraries] -> [I'll make my own language!]
And that's an issue! Because people tend to fall off the end of the development pipeline right when they're the most useful. There's what, five languages that started from D? Amber, Volt, Symmetry's fork (?), my own Neat... It's gotten less with D2, but I feel the combination of limitations at the high end of utility libraries and the lack of truly deep language expansion on the one hand, the slow, somewhat opaque, and arguably criticism-driven DIP process on the other, and the, charitably, somewhat impenetrable DMD codebase on the third, risks alienating people when they'd be the most useful to the project.
With something like C++ I ironically think that's less of an issue because there's "more to learn" at the high end. I think people rarely feel like they've plateaued in how far they can take the language, because they get so stuck in their awkward templates that even gradual improvements feel like victories. Or with simpler languages, like Node, it's easier to make a case that what's there is complete, from a language perspective. But because D is both powerful and comprehensible, you reach "the end", understand it, and you see that there's nowhere else to go except either braving the feature proposal process and the hostility of half the forum, or go elsewhere.
To be clear, losing people at any stage of the pipeline is bad for a language. But I think losing people at the end has unique costs in terms of proselytizing and advancement.