On 7/14/15 5:13 PM, Mike wrote:
On Tuesday, 14 July 2015 at 14:06:04 UTC, Andrei Alexandrescu wrote:
STL's "sequential containers" do not have serial dependence on items.
There, "sequential" is meant as a converse of "associative".
Indeed, but the term "sequence" has existed long before the STL authors
(mis)used it. Actually, 3 of the 5 main "sequence containers" *are*
sequences. The other 2, vector (which is another name that has always
bothered me) and array, are really best described as a random-access
containers, but the authors probably didn't want to split hairs and make
another category.
All this is more proof it comes down to a judgment call. Yeah, vector is
probably a bit off,
My interpretation of the word "list" both in and out of the CS domain
jives with random access.
Well mine doesn't.
Consider a stream. I define it to be truly a
"sequence" of bytes, specifically because of its serial nature. I would
definitely *not* define it as a "list" of bytes.
When we say "these items must be accessed in sequence", we imply that
Item(n+1) should be accessed only after Item(n) is accessed.
I'm not seeing much of that assertion at
https://en.wikipedia.org/wiki/Sequence or really wherever
https://www.google.com/search?q=sequence takes you.
In our nomenclature, we should probably look more to the origin of
terms, and their usage in other domains, than their (mis)use in the CS
domain, especially C++.
I disagree. Context, affinity, and familiarity are important. It is no
secret that the design of D has had C++ as a major influence, and the
design of Phobos has had STL as a major influence. Defining the "right"
terminology will take us from one imperfect nomenclature to another
imperfect one, just less familiar one.
Let's drop it. Again: arguments base on purity and precision of widely
used terms are futile.
Andrei