|
Boost Users : |
From: Jim Douglas (jim_at_[hidden])
Date: 2006-02-05 03:45:05
Paul Mensonides wrote:
[...]
I like what you wrote here:
> Any given interface falls at some point between completely specific to
> completely general. An interface that is completely specific has only one
> specific use case. Such an interface is not a _library_ interface. An
> interface that is completely general has an infinite set of use cases that
> covers an infinitely broad scope. Such an interface cannot exist. Libraries in
> Boost vary greatly in where they fall along this specific->general axis.
I may have used the words concrete->abstract axis. It might be a basis
on which to rate the libraries with a "fuzzy" classification that
indicates position on the axis and spread of coverage. E.g. Boost.Crc
even contains some pre-defined ready-to-use concrete types, whereas at
the other extreme Boost.MPL is an abstract framework.
> The
> more general a library is, the more difficult it is to describe the library in
> terms of use cases. When a library approaches being completely general,
> effective use requires a significant amount of lateral thought by the user, not
> use cases in the documentation.
From a purely practical POV here is the communications problem:
I have a piece of software to construct and I have sufficient confidence
that I can write it in C/C++ in N weeks from the ground up.
How can I extract enough information from the Boost docs to identify
those Boost libs that are applicable to my problem domain?
How can I then evaluate those libraries so identified, enough to be
convinced that the full *learning* time plus deployment time will result
in the project lasting N weeks or less?
And so it goes on with quality issues etc...
> Examples (as opposed to use cases) in the
> documentation exist mainly as an attempt to induce the necessary lateral
> thought, not to show what problems the library solves.
Examples - yes, I can't get enough of them. A couple of small caveats:
a) There is a danger that you might not relate to an example if you
can't see that by changing a few things you can put it to good use in
your particular context. OK so you can't please all of the people all of
the time.
b) Examples need to be grounded in the real world - which tenuously
links to use cases. 'foo/bar' examples should be banned :-)
> Hopefully, that made any kind of sense.
A great deal. Thanks
Jim
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net