Which libraries in Boost are mature enough to be used in real applications?

G

Guch Wu

Boost has many terrific libraries.
But I want to know whether they are ready for using in real projects.
Which of them are mature enough, or just only in progress?
 
I

Ivan Vecerina

: Boost has many terrific libraries.
: But I want to know whether they are ready for using in real projects.
: Which of them are mature enough, or just only in progress?

Well, the most mature ones have already been adopted for inclusion
into tr1/tr2 or the next C++ standard ;)

To make it into boost, most libraries will have attained a reasonable
level of maturity. All of them have undergone a peer review.
All of them should be at least as good as in-house libraries
of most companies...
But of course, some have a more generally useful scope than others.
Some are undergoing revisions, etc. But the same would happen with
the standard C++ library if it were not an ISO standard (I'm pretty
sure that the design of std::string would have been revised by now).

I think that you are approaching the problem from the wrong end:
you shouldn't analyze the solution before identifying the problem.

First look at the collection of available libraries, and identify
those that could be useful to you. For those libraries, see if
they appear to fit your problem domain and can save you time.

If you want to study boost only to see what's ahead, start with
the libraries that have been included in tr1, or proposed for tr2:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1745.pdf
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1810.html


hth -Ivan
 
G

Guch Wu

Thanks!
I want to use lambda and uBLAS. But I don't know how to use them till
now.
I think there needs more samples in Boost documents.
 
T

Tom Widmer

Ivan said:
: Boost has many terrific libraries.
: But I want to know whether they are ready for using in real projects.
: Which of them are mature enough, or just only in progress?
First look at the collection of available libraries, and identify
those that could be useful to you. For those libraries, see if
they appear to fit your problem domain and can save you time.

The majority of boost libraries aren't domain specific, but rather
extensions to the standard library that are of general utility to pretty
much any C++ program. Do you use analyse your problem domain before
deciding which parts of the standard library to use?

Tom
 
I

Ivan Vecerina

: Ivan Vecerina wrote:
: > : > : Boost has many terrific libraries.
: > : But I want to know whether they are ready for using in real
projects.
: > : Which of them are mature enough, or just only in progress?
:
: > First look at the collection of available libraries, and identify
: > those that could be useful to you. For those libraries, see if
: > they appear to fit your problem domain and can save you time.
:
: The majority of boost libraries aren't domain specific, but rather
: extensions to the standard library that are of general utility to pretty
: much any C++ program.

I would rather think that a majority is domain-specific,
but let's save ourselves the effort of making a count.

: Do you use analyse your problem domain before
: deciding which parts of the standard library to use?

Yes. Of course.

Most of my programs have not needed to use <bitset>, <valarray>,
<locale>, <complex>, <queue>, <strstream>, <cassert>, <csignal>,
<csetjmp>, <clocale>, <ctime>, <numeric>.....
Most of my implementation files include only a subset of the rest.

And the broader the scope of the libraries,
the pickier one needs to be.

Ivan
 
R

Roland Pibinger

Boost has many terrific libraries.
But I want to know whether they are ready for using in real projects.
Which of them are mature enough, or just only in progress?

I wouldn't use Boost libraries (actually Boost is one monolitic
library) in real-world projects because they clearly don't pass
McConnell's software Litmus Test:
"When programming is seen predominately as an attempt to manage
complexity, the litmus test for any design or implementation approach
becomes clear: Does the approach increase or decrease overall system
complexity? If a design seems simple and yet accounts for all the
possible cases, it is a good design. If an implementation results in
code that is easy to read and is more simple than clever, it is a good
implementation."
http://www.stevemcconnell.com/ieeesoftware/bp06.htm

Best wishes,
Roland Pibinger
 
J

Joe Van Dyk

Roland said:
I wouldn't use Boost libraries (actually Boost is one monolitic
library) in real-world projects because they clearly don't pass
McConnell's software Litmus Test:
"When programming is seen predominately as an attempt to manage
complexity, the litmus test for any design or implementation approach
becomes clear: Does the approach increase or decrease overall system
complexity? If a design seems simple and yet accounts for all the
possible cases, it is a good design. If an implementation results in
code that is easy to read and is more simple than clever, it is a good
implementation."
http://www.stevemcconnell.com/ieeesoftware/bp06.htm

Best wishes,
Roland Pibinger


Hm. Using boost's smart pointers, lexical casts, and unit testing
programs seem to substancially reduce the complexity of my C++ programs.

Joe
 
M

Mirek Fidler

Roland said:
I wouldn't use Boost libraries (actually Boost is one monolitic
library) in real-world projects because they clearly don't pass
McConnell's software Litmus Test:
"When programming is seen predominately as an attempt to manage
complexity, the litmus test for any design or implementation approach
becomes clear: Does the approach increase or decrease overall system
complexity? If a design seems simple and yet accounts for all the
possible cases, it is a good design. If an implementation results in
code that is easy to read and is more simple than clever, it is a good
implementation."
http://www.stevemcconnell.com/ieeesoftware/bp06.htm

Best wishes,
Roland Pibinger

I am not sure you can win this debate this way... :)

The only way how to do this is to _demonstrate_ superior approach. Bring
some facts.... (and even then it will be very hard, believe me ;)

Mirek
 
R

Roland Pibinger

I am not sure you can win this debate this way... :)

The only way how to do this is to _demonstrate_ superior approach. Bring
some facts.... (and even then it will be very hard, believe me ;)

A superior approach in what respect and for which purpose? Superior in
usability, simplicity and convenience for real-world users? Superior
in exploiting the most complex template meta-programming techniques?
There is nothing wrong with Boost when it is considered what it is: an
experiment in template programming. The (implicit) Boost motto is
"Look what we can do with templates!". The criteria for real-world
libraries and applications point in the opposite direction. For the
latter the goal is to provide large functionality with small,
convenient and safe interfaces. Anyone who claims that Boost is made
for real-world users either doesn't know Boost or the real world.
Probably both.

Best regards,
Roland Pibinger
 
W

werasm

Roland said:
A superior approach in what respect and for which purpose? Superior in
usability, simplicity and convenience for real-world users? Superior
in exploiting the most complex template meta-programming techniques?
There is nothing wrong with Boost when it is considered what it is: an
experiment in template programming. The (implicit) Boost motto is
"Look what we can do with templates!". The criteria for real-world
libraries and applications point in the opposite direction. For the
latter the goal is to provide large functionality with small,
convenient and safe interfaces. Anyone who claims that Boost is made
for real-world users either doesn't know Boost or the real world.
Probably both.

I live in the real-world, developing software for real people. Up to
date I've found boosts interface ("if you use documentation") very
clean. If you need to write software to meet all needs, complexity is
often necessary. As long as it is not complex to use, and most often it
is not.

I've been able to use the following classes in the boost lib
successfully without any trouble whatsoever.

All the smart pointers (shared, weak, scoped and their array variants).
I find the array variants necessary and superior to vector in some
situations. The reason for this is that is slotted in with certain code
with less change. vector required interface changes whilst I could
manage resources at scope level without interface changes.

Amongst others I've seen handy uses for optional, type_traits, ref,
utils - especially base-from-member, array and others. The only reason
why I haven't used it even more often, is that I've only started using
it recently. Also, having implemented libs that others used, I come to
realise that having the convenience of templates, and especially
specialisation some things would be far more difficult to implement
(generically) without templates - even impossible. The combination of
run-time and compile-time polymorphism is very powerful. This said, as
long as the code is well tested and reviewed (which I'm currently
assuming is the case with boost). I, BTW, have made mistakes in the
past - like uninitialised vars, that boost has help me find with their
defensive style of programming.

Sad that following how they implement their magic is quite hard due to
yes, complexity. But complexity in implementation is orthogonal to
complexity in interface. The former being necessary in some
circumstances, the latter preferably as simple as possible - that said,
the latter should only be simple enough of domain users to understand.
If I write a lib for use by mathematicians, I can't expect chemists to
know how to use it, as they are not necessarily familiar with the
domain concepts.

Regards,

Werner
 
A

andy

Roland said:
A superior approach in what respect and for which purpose? Superior in
usability, simplicity and convenience for real-world users?
Yes!

Superior
in exploiting the most complex template meta-programming techniques?

and yes!
There is nothing wrong with Boost when it is considered what it is: an
experiment in template programming. The (implicit) Boost motto is
"Look what we can do with templates!". The criteria for real-world
libraries and applications point in the opposite direction. For the
latter the goal is to provide large functionality with small,
convenient and safe interfaces. Anyone who claims that Boost is made
for real-world users either doesn't know Boost or the real world.
Probably both.

It seems to me that you havent taken a very deep look into what goes on
at boost. There is a huge variety of all kinds of libraries there.
Some make very advanced use of templates. Other dont. Some other areas
of work include concurrent programming, common means of accessing file
systems, common mechanism for serialisation, interprocess
communication, networking, etc, etc etc. That is only a small selection
from many libarries. There is also a wide range of discussion about the
C++ language and where it is heading.

For instance check this out:

http://www.osl.iu.edu/~dgregor/ConceptGCC/

Some of the ground work for conceptgcc had roots in boost ConceptCheck
lib AFAIK. Boost is AFAICS really good for C++. Its a R & D center. In
fact recent discussion on comp.lang.c is asking why they can have an
equivalent R & D center for that language.

Sorry to say this but you just do sound like you are being a miserable
old git!

regards
Andy Little
 
R

Roland Pibinger

Sad that following how they implement their magic is quite hard due to
yes, complexity. But complexity in implementation is orthogonal to
complexity in interface. The former being necessary in some
circumstances, the latter preferably as simple as possible - that said,
the latter should only be simple enough of domain users to understand.

Templates provide no separation between interface and implementation.
The template interface is the template implementation (and vice
versa). A template-only (almost) library cannot hide the "complexity
in implementation". This is an insurmountable problem for all template
libraries, not only Boost.

Best regards,
Roland Pibinger
 
L

loufoque

Roland Pibinger wrote :
I wouldn't use Boost libraries (actually Boost is one monolitic
library) in real-world projects because they clearly don't pass
McConnell's software Litmus Test:
"When programming is seen predominately as an attempt to manage
complexity, the litmus test for any design or implementation approach
becomes clear: Does the approach increase or decrease overall system
complexity? If a design seems simple and yet accounts for all the
possible cases, it is a good design. If an implementation results in
code that is easy to read and is more simple than clever, it is a good
implementation."

Maybe you should stop using the C++ standard library then.
Because most of the C++ standard library proposals come from boost.

Boost takes what already exists in the standard library and extends it
or improve it.
Boost is like the development center of the C++ standard library. It's
also where innovation in C++ take place.

And C++ without the standard library is just C with classes, unless you
write your own stdlib clone.
 
R

Roland Pibinger

Maybe you should stop using the C++ standard library then.

The Standard library has its own share of problems but that's another
question.
Because most of the C++ standard library proposals come from boost.

Well, some Boosters are members of the Standard committee ... ;-)
Boost takes what already exists in the standard library and extends it
or improve it.

That was the original goal years ago. Today Boost certainly is not an
extension of the C++ Standard library.
Boost is like the development center of the C++ standard library. It's
also where innovation in C++ take place.

Innovation in what respect? Innovation in template programming?
Certainly. But I'm talking about usability. Again, Boost is not
targeted at real-world programmers. The libraries would look different
if it were.
And C++ without the standard library is just C with classes, unless you
write your own stdlib clone.

C++ is a 'Multiparadigm Language'. The design space for libraries is
much larger than what is currently covered by Boost and the Standard
library.

Best wishes,
Roland Pibinger
 
P

Phlip

Roland said:
Innovation in what respect? Innovation in template programming?
Certainly. But I'm talking about usability. Again, Boost is not
targeted at real-world programmers. The libraries would look different
if it were.

Is Boost a meritocracy?

If I were a bum with no credentials, and I write a better library than a
current Boost library, could I submit it? Would it replace the current
version?

(Note that several Boost libraries have been replaced, and several have
alternate implementations...)
 
W

wij

(e-mail address removed) 寫é“:
...
It seems to me that you havent taken a very deep look into what goes on
at boost. There is a huge variety of all kinds of libraries there.
Some make very advanced use of templates. Other dont. Some other areas
of work include concurrent programming, common means of accessing file
systems, common mechanism for serialisation, interprocess
communication, networking, etc, etc etc. That is only a small selection
from many libarries. There is also a wide range of discussion about the
C++ language and where it is heading.
...

I have noticed boost library for two years. But strange to say, I
still don't make up my mind looking into it deeper for fear that my
effort won't be paid back. There are many programming technics to
learn from, though.

IJ. Wang
 
J

Jerry Coffin

[ ... ]
C++ is a 'Multiparadigm Language'. The design space for libraries is
much larger than what is currently covered by Boost and the Standard
library.

This is more or less inevitable. Boost has much the same
problem as almost any similar effort: virtually
everything is contributed by volunteers, and demand for
good code always exceeds supply.

Since it is (at least primarily) a volunteer effort, it's
no surprise that the code is aimed primarily at the
things that interest those volunteers the most. Whether
that's "real world" or not is mostly a question of how
closely what you work with coincides with what interests
them. Apparently, for you right now, there's little
intersection -- but I think it's safe to say that what
you work with isn't the universal measure of the whole of
the "real world"...
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,904
Latest member
HealthyVisionsCBDPrice

Latest Threads

Top