|
Boost : |
From: Edward Diener (eddielee_at_[hidden])
Date: 2006-02-02 08:33:39
Paul Giaccone wrote:
> 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
deallocate
> 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."
,and more,
>
> "In standard C++, handling multiple command-line arguments usually
> requires the user to write a bespoke
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."
It would be better if each library had a generalized explanation of its
advantages similar to what you have written above, with possible links
from the main Boost page, than just a number of blurbs for a number of
different libraries on the main page.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk