Complexity nomenclature
Jonathan M Davis via Digitalmars-d
digitalmars-d at puremagic.com
Fri Dec 4 07:11:11 PST 2015
On Friday, 4 December 2015 at 14:51:40 UTC, CraigDillabaugh wrote:
> My personal preference would be not to have the complexity in
> the names, as I prefer shorter/concise names. Typically when I
> am writing code using containers of any sort I will check the
> documentation to determine what the cost of the operations I
> need is and base my choice off of that. I would think (hope)
> most others do this too. However, I don't have a strong
> objection to the what is being proposed.
std.container puts linear and/or stable in some of its names and
then creates an alias to whichever one makes sense as the default
where the alias doesn't have linear or stable in the name. e.g.
linearRemove becomes remove via an alias.
But actually using something like stableLinearRemove in code (or
stable.linear.remove) becomes hideous _very_ quickly. No one is
going to like it, and it really only benefits generic code, which
most container code really isn't (and given how different
containers tend to be in the complexity of their operations, I
question that it even makes sense to use containers generically
in many cases if you actually care about efficiency). Usually the
genericity is achieved via iterators or ranges, not via the code
that actually operates on the container.
So, while I applaud Andrei's attempt to make it so that
containers can be used generically where appropriate (and having
a consistent API across containers is a big win even if they're
never used generically), I do fear that attempts to put the
complexity and stability of the functions into the API are going
to make it so unwieldy that it's useless (or at least, very
un-user-friendly). Obviously, we'll have to wait and see what he
comes up with, but what almost everyone is going to want is
remove and insert and the like, not stable.linear.insert or
stableLinearInsert or any variant on that.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list