Boost logo

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