|
Boost : |
From: David Abrahams (dave_at_[hidden])
Date: 2006-02-19 15:20:21
Beth Jacobson <bethj_at_[hidden]> writes:
> David Abrahams wrote:
>> Aleksey Gurtovoy <agurtovoy_at_[hidden]> writes:
>>>
>>>All other issues aside, I find the "Cutting-Edge Libraries" group
>>>ill-conceived and bordering on the edge of offensive (for the library
>>>author).
>>
>>
>> I agree, but I think we've all decided that category is going away
>> (right?)
>>
>
> I thought the objections were to the original name (bleeding edge),
> which I changed to cutting edge to sound less experimental.
I didn't notice the change. You're right that it sounds slightly less
experimental, but it is reminiscent of and still suggests "bleeding
edge." More importantly, it's a misleading distinction for most
people. The description
# If words like "generic" and "metaprogramming" get your blood
racing, this is the place for you. These libraries provide a
framework for trying out the latest programming techniques, and
like all Boost Libraries are stable enough for use in production
code.
basically is useful for the programmer who's looking at Boost as a
learning experience, but is likely to put off the production
programmer who doesn't want her blood racing. The last bit doesn't
provide much reassurance; it sounds defensive and unconvincing. This
category also suggests that anything you haven't put there is somehow
less sophisticated.
The whole idea of a "simple/advanced/cutting-edge" hierarchy doesn't
seem to work, to me. I'm looking at Boost.Random in the simple
category, for example. From my point of view, understanding what that
library provides requires a deep understanding of numerical issues
that's out of reach for most programmers.
Is the parameter library "cutting edge?" I think so. Does using it
require great sophistication? No. In fact, it belongs in the "C++
Enhancements" category, because it provides, essentially, a language
extension in library form. As does lambda.n
> Is the problem still with the name, or is it with the category
> description, or the category itself?
Well, I guess I don't like the categories.
> The intent of the page is to encourage people to explore the Boost
> libraries. I tried to create categories that would appeal to various
> interests and ability levels
Good idea; the execution isn't there yet, though.
> and that would give a broad overview of the
> sorts of things Boost has to offer.
Also good. If you list all the libraries you can't help but do that
:)
> I thought that support for the latest programming concepts and
> techniques would have been of real interest to some.
Yes, it's of interest to those who are here for an educational
experience. That's an important role of Boost, but let's not suggest
that the other libraries have less education or innovation to offer.
> If that's a mistake, I could eliminate that category altogether and
> move its contents to "Specialized Libraries". If the categorization
> is sound but the name/description is bad, perhaps someone could
> suggest something better. Most of the libraries in that group are
> beyond my own skill level and experience, so it's difficult for me
> to describe the group well.
I'm not sure they should be grouped. Okay, let me take a shot at
this. The category I'm least sure about is "system-level." It feels
right, but I can't justify it. This is an attempt to fit everything
into a single category, unlike Boost's current list. I don't feel as
though any of the library is being badly shortchanged or pigeonholed,
but others may disagree. I copied the libs from Beth's list, but it
seems short; Beth, are you sure you didn't miss anything?
* Class definition utilities
operators, noncopyable, base_from_member, compressed_pair
* Language Enhancements - libraries that make the standard C++ core
language easier and safer to use, or extend its capabilities in
"language-like" ways. Many relieve common frustrations of
programmers with the C++ language.
Datatypes: variant, optional/in-place-factories, tribool, integer
Language extensions: foreach, enable_if, parameter, ref
Safety: conversion, value_initialized, checked_delete,
* Standard Library Enhancements - libraries that make the standard C++
library easier and safer to use or extend its capabilities in
evolutionary ways. Many relieve frustrations commonly encountered
when using the standard library (see also Functional Programming)
IO: io state saver, iostreams, format
Containers/data structures:
assign, pointer container, array, bitset, multi_index,
multi-array, tuple
Iterators: iterators, next/prior, range
Algorithms: minmax
* Functional Programming - libraries for working with functions and
function objects. Especially useful in conjunction with STL
algorithms, but any program can benefit from functional programming
idioms.
lambda (see also bind), bind/mem_fn (see also lambda), functional
(deprecated), function
* Numerics, number crunching, high-performance computing.
CRC, functional/hash, random, rational, graph/property map,
interval, math, ublas
* Testing and debugging
timer, static_assert (see also MPL assert), concept check, test,
* Parsing and Text Processing
Regex, XPressive, Spirit, tokenizer, string_algo
* System-level libraries
Program options, date-time, filesystem, threads, serialization,
signals, pool, Python
* Code Generation
Preprocessor, wave
* Type information, synthesis, and computation
Type Traits, Call Traits, MPL
* Portability
compatibility, config
-- Dave Abrahams Boost Consulting www.boost-consulting.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk