What are the worst parts of D?

Andrei Alexandrescu via Digitalmars-d digitalmars-d at puremagic.com
Thu Oct 9 09:41:25 PDT 2014


On 10/9/14, 8:57 AM, Dicebot wrote:
> On Thursday, 9 October 2014 at 15:32:06 UTC, Andrei Alexandrescu wrote:
>> Unfortunately it doesn't. RC does. Lazy computation relies on escaping
>> ranges all over the place (i.e. as fields inside structs implementing
>> the lazy computation). If there's no way to track those many tidbits,
>> resources cannot be reclaimed timely.
>
> Are you trying to tell me programs I work with do not exist? :)

In all likelihood it's a small misunderstanding.

> Usage of output range is simply a generalization of out array parameter
> used in both Tango and our code. It is _already_ proved to work for our
> cases.

Got it. Output ranges work great with unstructured/linear outputs - 
preallocate an array, fill it with stuff, all's nice save for the 
occasional reallocation when things don't fit etc.

With structured outputs there are a lot more issues to address: one can 
think of a JSONObject as an output range with put() but that's only 
moving the real issues around. How would the JSONObject allocate memory 
internally, give it out to its own users, and dispose of it timely, all 
in good safety?

That's why JSON tokenization is relatively easy to do lazily/with output 
ranges, but full-blown parsing becomes a different proposition.


Andrei



More information about the Digitalmars-d mailing list