
Hi Review of Proto Evaluation of the design Excellent. The close collaboration with the Spirit development, and the fact Proto has underpinned xpressive for some time clearly shows in a mature looking library. The library uses MPL, Fusion, the result of protocol and other standard components effectively, making good use of other parts of Boost. One very small implementation question - arg_c doesn't have a corresponding arg, in line with the pattern see in MPL/Fusion for at/at_c etc. Was there a reason for this, if not I'd suggest always having xxx when there is a corresponding xxx_c feature. Evaluation of the documentation Proto's problem domain is naturally quite abstract, and more heavily technical than other Boost libraries. The documentation is of good quality, but I feel there may still be quite a steep learning curve for new users. The examples used are generally quite realistic, but this can mean they're tough to get started with in some cases. Some more trivial examples may help in places. Having said that, I learnt to use Proto from the documentation, so they're certainly sufficient to get going. I found a few specific issues in the docs: * The Transform concept documentation mentions ObjectTransform, but I cannot find any details of that transform in the concepts section * The call<> documentation has a "TODO LINK" left in it. This also brings up a general point, I'd like to see links in code samples etc to the related documentation if possible, it saves backing up and down all the time trying to follow examples. * The documentation for call<> mentions posit<_>. I could not find posit mentioned in the top level documentation - is this a Proto feature, or just part of the example? Again this brings up a general point, it might be good to use namespace qualification to highlight the distinction between library and user code. Usefulness Massive, there are plenty of DSEL's already in Boost, and plenty of others we probably should have. Effort put into review I implemented the (partially complete) port of Phoenix to Proto, using a slightly early version of the library. I've put a few hours study into the latest Proto documentation as I've not been using the library actively recently. Compilers used - gcc 3/4, msvc 7.1/8 Am I knowledgeable in the problem domain? Yes - I've implemented DSELs both with and without Proto, and appreciate the benefits of having the expression template engine in the form of a library. Should Proto be accepted into Boost? Yes Cheers Dan ___________________________________________________________ Yahoo! Answers - Got a question? Someone out there knows the answer. Try it now. http://uk.answers.yahoo.com/

dan marsden wrote:
Review of Proto
Evaluation of the design Excellent. The close collaboration with the Spirit development, and the fact Proto has underpinned xpressive for some time clearly shows in a mature looking library. The library uses MPL, Fusion, the result of protocol and other standard components effectively, making good use of other parts of Boost.
One very small implementation question - arg_c doesn't have a corresponding arg, in line with the pattern see in MPL/Fusion for at/at_c etc. Was there a reason for this, if not I'd suggest always having xxx when there is a corresponding xxx_c feature.
It's there. I just don't talk about it much in the user docs because I don't find it useful. See <http://boost-sandbox.sourceforge.net/libs/proto/doc/html/boost/proto/arg_id510309.html>
Evaluation of the documentation Proto's problem domain is naturally quite abstract, and more heavily technical than other Boost libraries. The documentation is of good quality, but I feel there may still be quite a steep learning curve for new users. The examples used are generally quite realistic, but this can mean they're tough to get started with in some cases. Some more trivial examples may help in places. Having said that, I learnt to use Proto from the documentation, so they're certainly sufficient to get going.
I'm open to suggestions for making this easier. I start the examples section with Hello World, and then have 3 calculator examples of increasing complexity before getting into the "real world" use cases. I had hoped this would be enough to get people over the hump. FWIW, I just added an additional example. It shows how one might implement map_list_assign() from Boost.Assign using Proto. I think it helps to show that Proto solves problems that people aren't accustomed to thinking of as DSELs. See: <http://boost-sandbox.sourceforge.net/libs/proto/doc/html/boost_proto/users_guide/examples/map_assign.html>
I found a few specific issues in the docs:
* The Transform concept documentation mentions ObjectTransform, but I cannot find any details of that transform in the concepts section
Yes, I haven't finished documenting Proto's concepts. I'll fix it.
* The call<> documentation has a "TODO LINK" left in it. This also brings up a general point, I'd like to see links in code samples etc to the related documentation if possible, it saves backing up and down all the time trying to follow examples.
I'll fix the TODO. It's supposed to link here: <http://boost-sandbox.sourceforge.net/libs/proto/doc/html/boost_proto/users_guide/expression_transformation/is_callable.html> Active links from the code samples would be nice, but I'm not sure if our toolchain supports that. I can check.
* The documentation for call<> mentions posit<_>. I could not find posit mentioned in the top level documentation - is this a Proto feature, or just part of the example? Again this brings up a general point, it might be good to use namespace qualification to highlight the distinction between library and user code.
Fair point. Posit is part of proto, and is documented here: <http://boost-sandbox.sourceforge.net/libs/proto/doc/html/boost/proto/op/posit.html>
Usefulness Massive, there are plenty of DSEL's already in Boost, and plenty of others we probably should have.
Effort put into review I implemented the (partially complete) port of Phoenix to Proto, using a slightly early version of the library. I've put a few hours study into the latest Proto documentation as I've not been using the library actively recently. Compilers used - gcc 3/4, msvc 7.1/8
Am I knowledgeable in the problem domain? Yes - I've implemented DSELs both with and without Proto, and appreciate the benefits of having the expression template engine in the form of a library.
Should Proto be accepted into Boost? Yes
Thanks, Dan. -- Eric Niebler Boost Consulting www.boost-consulting.com
participants (2)
-
dan marsden
-
Eric Niebler