Compiler hints, inlining and syntax consistency

Ola Fosheim Grøstad" <ola.fosheim.grostad+dlang at gmail.com> Ola Fosheim Grøstad" <ola.fosheim.grostad+dlang at gmail.com>
Sat Dec 28 05:03:29 PST 2013


On Saturday, 28 December 2013 at 11:58:48 UTC, Jakob Ovrum wrote:
> This is a terrible example - in D it's generally accepted that 
> such a `length` function should NOT be provided at all.

Correction: in the D-community it is generally accepted.

But the reasoning behind this is not sound, it puts the burden on 
the programmer when you can afford to use O(N). The reasoning is 
also flawed in general because the amortized/average performance 
of algorithms depends on the structure of the input. If you know 
that N tends to be below K on average then the performance hit is 
O(1) even if the complexity is O(N) on unbounded input on a 
turing-machine. And if we are going to be pedantic: all 
algorithms that terminates on a von Neuman-computing device are 
O(1) because you can always come up with a constant upper bound 
that holds for all physical computing devices.

@disable and (@obsolete) etc can safely be ignored for a sound 
program, it is a hint for the compiler to check the integrity of 
the logic, but it does not affect the semantics of a sound 
program. The same goes for unittests, pre conditions and post 
conditions etc.


More information about the Digitalmars-d mailing list