<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On 11 January 2014 21:29, Peter Alexander <span dir="ltr"><<a href="mailto:peter.alexander.au@gmail.com" target="_blank">peter.alexander.au@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="im">On Saturday, 11 January 2014 at 02:15:15 UTC, Manu wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
That is the world today, that is where the bar is. D will be wildly<br>
successful on the day that programmers that have never seen it before can<br>
come along, effortlessly write whatever code they're trying to write,<br>
offered useful help by the compiler along the way, walk away feeling really<br>
smart and happy with their experience.<br>
</blockquote>
<br></div>
That is not a D I want to be part of.<br>
<br>
Let's give a container library to someone that knows nothing of containers, they'll say "what's with all these 'red-black trees' and 'linked lists'? I just want to store a bunch of numbers!", so you streamline the design to one container that does everything in O(n) time or better. Much simpler than the user having to learn anything, and they can get things done effortlessly and feel smart and happy.<br>

<br>
Let's get rid of value types and just heap allocate everything in the GC and make copies on every write. Much easier than learning about object lifetime and mutability.<br>
<br>
Let's get rid of static typing and make D dynamically typed. Much easier than learning about type systems.<br>
<br>
That's what D becomes if users aren't willing to RTFM. There are trade-offs in language/library design and D has traded some convenience for efficiency. You cannot have the high-performance and powerful modelling capabilities of ranges with unbounded convenience.<br>

<br>
I'm not saying convenience isn't important, but things like ranges have subtleties, and need those subtleties to achieve the performance/power they were designed for. If you want that, you'll need to bite the bullet and learn, if you don't, then just go and write Python.<br>

<br>
<3<br>
</blockquote><div><br></div><div>*sigh*</div><div><br></div><div>If you can't see value in intuitive design as a basic principle, then my points about people on this forum being so disconnected from the world of normal programmers is even more true than I thought.</div>
<div>Particularly if you find the concept so threatening that you need to make dumb comments mocking the principle.</div><div><br></div><div>I never suggested making technological concessions for the principle, just keep it in clear focus while designing your APIs. Do user testing, get better feedback, identify common pitfalls.</div>
<div>I'm just talking about quality, and greater consideration wrt api design and more user testing before committing new features to the slate.</div></div></div></div>