Boost logo

Boost :

From: Paul A Bristow (pbristow_at_[hidden])
Date: 2006-06-06 12:25:38


| -----Original Message-----
| From: boost-bounces_at_[hidden]
| [mailto:boost-bounces_at_[hidden]] On Behalf Of fred bertsch
| Sent: 31 May 2006 18:07
| To: boost_at_[hidden]
| Subject: [boost] [Review][PQS] Physical Quantities System
| review (May 31through June 9)
|
| The review of Andy Little's Physical Quantities System
|
| - What is your evaluation of the design?

Examples suggest that it should meet many needs of many users.

I like that it handles rational power units that some users really do need.

| - What is your evaluation of the implementation?

Not very qualified to judge.

Seems complicated, but I fear this is necessary, and badly needs typeof to
complete it,
but it is best effort so far, and worth getting more people to try it 'in
anger'.

As noted before, I would very strongly prefer this called Boost.Units rather
than PQS,
(I am not convinced that it is limited to 'physical' quantities).

(Note plural UnitS to avoid any confusion with singular Unit Test, now
Boost.Test).

AND I think a more descriptive name(s) for "t1_quantity" etc is needed.

| - What is your evaluation of the documentation?

Useable, but badly needs some editorial work on spelling, punctuation etc.

I would put a QuickStart item at the very top with a typical example, and
links to your examples, the link name showing its 'feature'.

ERD should be spelt out in full.

Many very helpful and persuasive examples - but not referenced with links
from the docs?

I didn't spot any examples of ex-Imperial Non-SI units, beloved of the
ex-Colonial US ;-)

BUT examples would be more helpful with the output shown both inline as
comment(s), like

   std::cout << angle::rad(angle::deg(180)) <<'\n'; // 3.14159 rad

AND all output appended to the code as a comment, for example:

/*

Output is:

A current of 5 mA
through a voltage of 5 V
requires a resistance of 1 kR
and produces 25 mW of heat
total energy used in 1 s is 25 mJ
Press any key to continue . . .

 */

It is very helpful (and worth copying by all Boost authors, especially of
examples)
that the feature(s) being exemplified (angle) is/are enumerated thus:

using boost::pqs::angle;

angle::rad a = angle::pi;

...

(but sadly often not done this ideal-for-the-reader way!)

| - What is your evaluation of the potential usefulness of the library?

Invaluable in most walks of real life. (SI) Units long recognized as a
vital library function for Boost.

| - Did you try to use the library? Briefly. With what compiler? MSVC 8

Did you have any problems? NO - examples build and run OK.

| - How much effort did you put into your evaluation?

A quick skirmish ;-)

I'd like to see examples of real use in anger - but I fear we may not get
that until it is accepted into Boost (chicken/egg problem?).

| - Are you knowledgeable about the problem domain?

Somewhat.

I vote for acceptance.

Paul

PS A few queries:

1 Can value_type include rationals - so that (only) fractional lengths
(say) like 1/2, 1/4, 1/8, 3/4, 3/8, 5/4, 9/16 ... could be handled?

2 If math is the abbreviation for math constants, then physics doesn't
match. physical better? Only one letter longer.

3 dimensionful is a new word on me - dimensioned (opposite of
dimensionless).

4 It isn't immediately obvious to me how to ensure output in SI
'engineering' multiples, depending on the value.
For example, 0.123 m outputs as 1.23 mm, but 1234.5 m outputs as 1.2345 km.
Perhaps this is left as an exercise for the student? ;-)

---
Paul A Bristow
Prizet Farmhouse, Kendal, Cumbria UK LA8 8AB
+44 1539561830 & SMS, Mobile +44 7714 330204 & SMS
pbristow_at_[hidden]
 

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