We need better documentation for functions with ranges and templates

John Colvin via Digitalmars-d digitalmars-d at puremagic.com
Wed Dec 16 16:06:05 PST 2015


On Wednesday, 16 December 2015 at 23:00:03 UTC, Timon Gehr wrote:
> On 12/15/2015 12:26 PM, rumbu wrote:
>>
>> And personally, I found the MS remark more compact and more 
>> user
>> friendly than:
>>
>> "This is a best-effort implementation of length for any kind 
>> of range.
>> If hasLength!Range, simply returns range.length without 
>> checking upTo
>> (when specified). Otherwise, walks the range through its 
>> length and
>> returns the number of elements seen. Performes Ο(n) 
>> evaluations of
>> range.empty and range.popFront(), where n is the effective 
>> length of
>> range."
>>
>> Not everybody is licensed in computational complexity theory to
>> understand what O(n) means.
>
> One doesn't need to know any results or definitions from 
> complexity theory in order to understand what O(n) means. What 
> it means here is that for large enough n the actual number is 
> bounded from above by n multiplied by some unspecified constant.
> (In contexts like this, there is generally also an informal 
> assumption that the unspecified constants are reasonably small.)

Perhaps it's the physicist in me, but I like this way of thinking 
about it:

Given a running time R(n), the time-complexity is given by 
O(f(n)) iff df/dn = lim_{n -> inf} dR(n)/dn

Is that also a correct expression? Obviously I'm papering over 
the discretisation, but well, I did say physicist... :)


More information about the Digitalmars-d mailing list