$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
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.