Boost logo

Boost :

From: Paul Giaccone (paulg_at_[hidden])
Date: 2006-02-02 04:44:12


There is a thread on the Boost-users mailing list at the moment asking
what users needed to know when they got started with Boost.

One of the points raised is that, while pretty much all users of Boost
think it is great, they didn't know when they started using it why it
was so great and why it would be to their advantage to use it. One of
the reasons for this is that the front page of the website does not
really sell the product.

I agreed with this point. Here's a summary of my posting:

"What the site needs, in my view, on the front page is some sort of
material selling Boost. Why was Boost set up in the first place?
Because, in some areas, C++ is deficient, is difficult to use or expects
too much of the programmer. Boost helps by providing what is useful but
missing and takes a lot of the work out of C++ programming.

"Essentially, Boost needs to sell itself as something that no C++
programmer would want to be without. Think how the adman would write it:
"C++ getting you down? Spending hours tracking down that memory leak?
Then try Boost! It will change your life!" Well, maybe not, but
something along these lines would certainly go a long way to showing why
anyone should be using Boost. At the moment, the front page tells me is
that the libraries are free, portable, peer-reviewed and work well with
the C++ standard library, but that doesn't tell me why it is to anyone's
advantage to use them."

David Abrahams of Boost Consulting, who started the thread, suggested
that I write a paragraph for a selection of Boost libraries that did
just this.

Below is what I came up with, from my experience as a Boost user who has
used the libraries mentioned. I think it would be helpful to both users
and developers if this text or something similar could be included on
the front page of boost.org or some other prominent place on the
website. For myself, if I had seen something like this content on the
front page, I would have rushed to download the libraries. What do you,
as the developers, think of this proposal?

Keep up the excellent work.

Paul Giaccone

"Memory allocation on the heap in C++ requires the programmer to manage
the memory, make sure that there is always at least one pointer to the
memory and deallocating it at the right time. It is easy to forget to
do this or to do it in the wrong place in the code, which causes memory
leaks, or, worse, program crashes. Boost makes life easier for the
programmer by providing various 'smart pointers' that automatically
maintain memory allocated on the heap, deallocating it at the right time
and requiring minimal intervention from the user."

"A programmer wanting to read and write structured data (such as the
member variables of a class) to file can run into a number of problems.
How should the data be formatted when written to file? Do the read and
write functions correspond exactly? If the structure of the data
changes in future releases of the program, will it still possible to
read files that were written using the old format? Are files written on
one platform readable on another? How should pointers be handled?
Boost provides a serialization library that manages all of these
problems and more simply and elegantly."

"In standard C++, handling multiple command-line arguments usually
requires the user to write a bespoke parser to read in and interpret
these arguments and handle syntax errors, missing arguments, duplicated
flags and the like. Boost's program_options library handles
command-line arguments without fuss."

"Writing user-defined input and output streams can be tricky. The Boost
iostreams library gives the user easy access a range of useful
functionality, including data encryption, compression in various
standard formats, line-ending conversion and output in XML format."

"C++ allows for casting between similar types, such as int and double.
The Boost conversion library extends what is possible with casting,
enabling the user to cast integers to strings and vice versa, and to
cast safely between polymorphic types."


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk